Cât de mult de performanță a bazei de date aeriene atunci când utilizați LINQ?

Cât de mult este implicată cheltuielile de performanță a bazei de date cu utilizarea C# și LINQ în comparație cu interogările personalizate optimizate încărcate cu cea mai mare parte de nivel scăzut C, ambele cu un backend SQL Server 2008?

Mă gândesc în mod special la un caz în care aveți un program destul de intensiv de date și veți face o actualizare sau o actualizare a datelor cel puțin o dată pe ecran și va avea 50-100 utilizatori simultani.

0
fr hi bn

2 răspunsuri

Mulțumesc lui Stu. Linia de jos pare să fie faptul că LINQ către SQL probabil că nu are o performanță semnificativă a performanței bazei de date cu versiunile mai noi dacă puteți utiliza o selecție compilată și funcțiile mai lente ale actualizării sunt susceptibile de a fi mai rapide dacă nu aveți expert care face cea mai mare parte a codificării.

0
adăugat

Din experiența mea, cheltuielile aeriene sunt minime, cu condiția ca persoana care scrie întrebările să știe ce face și să ia măsurile de precauție obișnuite pentru a se asigura că interogările generate sunt optimale, că indiciile necesare sunt în vigoare etc. Cu alte cuvinte, impactul bazei de date ar trebui să fie același; există o atitudine minimă, dar de obicei neglijabilă, pe partea aplicației.

Acestea fiind spuse ... există o singură excepție; dacă o singură interogare generează mai multe agregate, furnizorul L2S îl traduce într-o interogare mare cu o sub-interogare pe agregat. Pentru o masă mare aceasta poate avea un impact semnificativ I / O, deoarece costul de intrare / ieșire db pentru interogare crește după mărimi pentru fiecare agregat nou din interogare.

Soluționarea pentru aceasta este, desigur, pentru a muta agregatele în proc stocate sau vizualizate. Matt Warren are un exemplu de cod pentru un furnizor de interogare alternativ care traduce astfel de interogări într-un mod mai eficient.

Resurse:

https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback. aSPX? FeedbackID = 334211

http: //blogs.msdn.com/mattwar/archive/2008/07/08/linq-building-an-iqueryable-provider-part-x.aspx

0
adăugat