Avatar billede mickni33 Nybegynder
01. februar 2008 - 08:28 Der er 4 kommentarer og
1 løsning

performance ved SQL og .NET

Jeg skal snart igang med et større redesign og kunne godt tænke mig at vide hvilken metode/teknologi der er bedst når kravet er performance. Der bliver en hel del objekter hvor data skal overføres til database (kunde fakturering, optil 100.000 kunder)

Hvordan skal programmet bygges op(SQL struktur), er det bedst at lave alle sine SQL kald direkte i koden?

eller er performance bedre når man laver stored procedure?

Eller er der andre teknologier/algoritmer man kan bruge for at få den bedste/hurtigste performance
Avatar billede a1a1 Novice
01. februar 2008 - 10:43 #1
stored procedures er som regel det bedste/hurtigste
Avatar billede arne_v Ekspert
01. februar 2008 - 18:21 #2
Foerst skal du goere dig klart om du vil have den bedst mulige performance eller
den paeneste loesning som er nemmest at vedligeholde.

Det er sjaeldent at hardware omkostningerne opvejer udviklings omkostningerne.

Det vigtigste for database performance er nok din database struktur. Start med at faa
lavet den rigtige database struktur: tabeller, indexes og views.

Så skal du vælge data access code model. Oplagte muligheder er:
A) fuldt DAL med SQL saetninger
B) fuldt DAL med SP kald
C) tyndt DAL omkring typed data set
D) O/R mapper (NHibernate, LLBLGen eller LINQ for SQL hvis du er paa 3.5)

Hvis du skal vaelge efter performance vil jeg sige: B, A, D, C.

Hvis du skal vaelge efter portabilitet vil jeg sige: D, C, A, B.

Hvis du skal vaelge efter mindst kode der skal skrives: C, D, A, B.

Kun du ved hvordan dine prioriteringer er.

Performance fordelen ved SP varierer meget (fra praktisk taget ingenting
til faktor 2-3) afhaengig af hvilke operationer du skal have lavet.

Jeg lavede for nogle maaneder siden nogle tests. Jeg kan poste resultatet her.

Performance overheadet ved en O/R mapper afhaenger meget af programmoeren. Det kraever
lidt erfaring at faa en O/R mapper til vaere effektiv.
Avatar billede arne_v Ekspert
01. februar 2008 - 18:21 #3
One local:

INSERT singlethreaded SQL Statement : 8968 ms
INSERT singlethreaded Stored Procedure : 8406 ms
INSERT multithreaded SQL Statement : 6609 ms
INSERT multithreaded Stored Procedure : 6265 ms
INSERT singlethreaded SQL Statement : 8843 ms
INSERT singlethreaded Stored Procedure : 8406 ms
INSERT multithreaded SQL Statement : 6515 ms
INSERT multithreaded Stored Procedure : 6343 ms
INSERT singlethreaded SQL Statement : 8859 ms
INSERT singlethreaded Stored Procedure : 8437 ms
INSERT multithreaded SQL Statement : 6625 ms
INSERT multithreaded Stored Procedure : 6328 ms

Five local:

INSERT singlethreaded SQL Statement : 6703 ms
INSERT singlethreaded Stored Procedure : 3468 ms
INSERT multithreaded SQL Statement : 6046 ms
INSERT multithreaded Stored Procedure : 2765 ms
INSERT singlethreaded SQL Statement : 6609 ms
INSERT singlethreaded Stored Procedure : 3468 ms
INSERT multithreaded SQL Statement : 5562 ms
INSERT multithreaded Stored Procedure : 2765 ms
INSERT singlethreaded SQL Statement : 6640 ms
INSERT singlethreaded Stored Procedure : 3468 ms
INSERT multithreaded SQL Statement : 5578 ms
INSERT multithreaded Stored Procedure : 2718 ms

One remote:

INSERT singlethreaded SQL Statement : 36077 ms
INSERT singlethreaded Stored Procedure : 31911 ms
INSERT multithreaded SQL Statement : 16760 ms
INSERT multithreaded Stored Procedure : 14607 ms
INSERT singlethreaded SQL Statement : 35900 ms
INSERT singlethreaded Stored Procedure : 31710 ms
INSERT multithreaded SQL Statement : 16740 ms
INSERT multithreaded Stored Procedure : 14577 ms
INSERT singlethreaded SQL Statement : 35745 ms
INSERT singlethreaded Stored Procedure : 31626 ms
INSERT multithreaded SQL Statement : 16728 ms
INSERT multithreaded Stored Procedure : 14635 ms

Five remote:

INSERT singlethreaded SQL Statement : 33039 ms
INSERT singlethreaded Stored Procedure : 14012 ms
INSERT multithreaded SQL Statement : 15067 ms
INSERT multithreaded Stored Procedure : 6437 ms
INSERT singlethreaded SQL Statement : 32922 ms
INSERT singlethreaded Stored Procedure : 13470 ms
INSERT multithreaded SQL Statement : 14950 ms
INSERT multithreaded Stored Procedure : 6538 ms
INSERT singlethreaded SQL Statement : 32753 ms
INSERT singlethreaded Stored Procedure : 13552 ms
INSERT multithreaded SQL Statement : 14943 ms
INSERT multithreaded Stored Procedure : 6485 ms
Avatar billede mickni33 Nybegynder
07. februar 2008 - 15:24 #4
læg et svar
Avatar billede arne_v Ekspert
07. februar 2008 - 15:29 #5
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester