ADO.NET Connection Pooling & SQLServer

  • What is it?
  • How do I implement connection pooling with MS SQL?
  • What are the performance ramifications when
    • Executing many queries one-after-the other (i.e. using a loop with 30K+ iterations calling a stored procedure)?
    • Executing a few queries that take a long time (10+ min)?
  • Are there any best practices?
0
fr hi bn

4 răspunsuri

Conectarea la conexiuni este un mecanism de reutilizare a conexiunilor, deoarece stabilirea unei noi conexiuni este lentă.

Dacă utilizați un șir de conexiuni MSSQL și System.Data.SqlClient atunci îl utilizați deja - în .Net aceste lucruri se află sub capotă, de cele mai multe ori.

O buclă de iterații de 30k ar putea fi mai bună ca un cursor de pe server (căutați instrucțiuni de cursor T-SQL), în funcție de ceea ce faceți cu fiecare pas în afara sprocului.

Interogările lungi sunt bine - dar trebuie să le apelați cu atenție din paginile web, deoarece Asp.Net nu este într-adevăr optimizat pentru așteptarea lungă și unele conexiuni vor fi eliminate.

0
adăugat

Întrebarea dvs. a fost, de asemenea, parțial răspuns prin acest thread . O căutare ar fi dezvăluit acest lucru. Definiția conexiunii de conectare, a cărei Google ar fi răspuns cu prima lovitură aceasta ..

Care ar lăsa doar cele mai bune practici, ceea ce cred că ar fi fost o întrebare bună :)

+1 la Răspunsul lui Keith . A lovit unghiul drept pe cap.

Doar un memento politicos din FAQ:

Ați căutat pe internet înainte   întrebându-vă întrebarea și ați venit   noi înarmat cu cercetare și informații   despre întrebarea dvs. ... nu?

0
adăugat

Mai multe informații despre lucrul de îmbinare a conexiunilor ... îl utilizați deja cu SqlClient, dar numai dacă șirul de conexiune este identic pentru fiecare conexiune nouă pe care o deschideți. Înțelegerea mea este că cadrul va uni automat conexiunile atunci când se poate, dar dacă șirul de conexiune variază chiar ușor de la o conexiune la alta, atunci noua conexiune nu va veni din bazin - devine creată din nou (deci este mai scumpă ).

Puteți utiliza aplicația Monitor de performanță cu XP/Vista pentru a viziona conexiunile SQL și veți vedea destul de repede dacă se folosește sau nu pooling-ul. Priviți sub categoria ".NET CLR" în "Performance Monitor".

0
adăugat

Eu îl am pe Keith; dacă apelați o procedură stocată de 30.000 de ori, aveți probleme mult mai mari decât punerea în comun a conexiunilor.

0
adăugat