Programmēšana

Kā darbojas ADO.Net savienojuma apvienošana?

Savienojums ar datu bāzi ir resursu ietilpīga darbība, kas parasti sastāv no dažām darbībām. Pirms sākotnējās rokasspiediena ar datu bāzes serveri var izveidot saziņas kanālu starp lietojumprogrammu un datu bāzi. Šis kanāls var būt vai nu kontaktligzda, vai nosaukta caurule. Kad šis savienojums ir izveidots un sākotnējais rokasspiediens ar serveri ir izdevies, savienojuma metadati (savienojuma virknes informācija, lai izveidotu savienojumu ar datu bāzi) tiek parsēti, un savienojumu ar datu bāzi autentificē datu bāzes serveris.

ADO.Net jau ilgu laiku ir bijusi viena no populārākajām datu piekļuves sistēmām. Savienojumu apvienošana ir ADO.Net funkcija, kas ļauj uzlabot datu piekļuves veiktspēju jūsu lietojumprogrammā.

Kas ir savienojuma apvienošana?

Savienojumu apvienošana ir stratēģija, kas tiek izmantota, lai samazinātu izmaksas, kas saistītas ar savienojumu atvēršanu un aizvēršanu ar datu bāzi. Tas ļauj atkārtoti izmantot savienojumus, nevis izveidot jaunus savienojumus ar datu bāzi, kad un kad tie tiek pieprasīti.

Savienojumu kopā ir dīkstāves, atvērtu, atkārtoti izmantojamu savienojumu kolekcija. Pooler pārvalda savienojumu kopu un uztur aktīvo savienojumu kopumu katram dotajam savienojuma metadatam, savienojuma konfigurācijas informācijai.

Ņemiet vērā, ka vienā lietojumprogrammas domēnā var būt vairāki savienojumu kopas. Savienojumu kopa tiek izveidota katrai unikālai savienojuma virknei, kuru izmantojat, lai izveidotu savienojumu ar datu bāzi, nevis katrā datu bāzē. Tātad, pirmo reizi izveidojot savienojumu ar datu bāzi, izmantojot noteiktu savienojuma virkni, tiek izveidots jauns savienojumu kopa. Nākamreiz izveidojot savienojumu ar to pašu datu bāzi ar to pašu savienojuma virkni, netiek izveidots jauns savienojumu kopa, drīzāk tiek izmantots esošais savienojumu kopa.

Jāatzīmē, ka, lietojot integrēto drošību, katram lietotājam, kurš piekļūst klienta sistēmai, tiktu izveidots savienojumu kopa, t.i., savienojumi tiek apvienoti katrā Windows identitātē. Šajā sakarā MSDN norāda: "Kad savienojums tiek pirmo reizi atvērts, tiek izveidots savienojuma kopums, pamatojoties uz precīzas saskaņošanas algoritmu, kas apvieno pūlu ar savienojuma virkni savienojumā. Katrs savienojuma kopa ir saistīta ar atšķirīgu savienojuma virkni. Atverot jaunu savienojumu, ja savienojuma virkne nav precīza atbilstība esošajam pūlam, tiek izveidots jauns. "

Savienojuma kopēšanas konfigurēšana

Kā jūs kontrolējat savienojumu apvienošanas uzvedību? Nu, savienojuma kopas varat pārvaldīt, izmantojot dažus savienojuma virknes atslēgvārdus. Svarīgākie ir šādi:

  • ConnectionTimeout - to izmanto, lai norādītu gaidīšanas periodu (sekundēs), kad tiek pieprasīts jauns datu bāzes savienojums. Noklusējuma vērtība ir 15.
  • MinPoolSize - tas norāda minimālo savienojumu skaitu baseinā.
  • MaxPoolSize - tas norāda maksimālo savienojumu skaitu baseinā. Noklusējuma vērtība ir 100.
  • Pooling - tas kontrolē, vai savienojuma apvienošana ir ieslēgta vai izslēgta, un tā vērtība var būt true of false. Kad tas ir iestatīts uz true, pieprasītais savienojums tiek izgūts no atbilstošā savienojuma kopas.

Šis koda fragments parāda, kā savienojuma kopu var konfigurēt, izmantojot savienojuma virkni:

string connectionString = "Datu avots = localhost; Sākotnējais katalogs = Paraugs; Integrētā drošība = SSPI; Savienojuma taimauts = 30; Savienojuma kalpošanas laiks = 0; Min. kopas lielums = 0; Maksimālais kopas lielums = 100; Pooling = true;";

izmantojot (SqlConnection savienojums = jauns SqlConnection (connectionString))

{

savienojums.Atvērt ();

// Uzrakstiet kodu šeit, lai veiktu CRUD operācijas datu bāzes paraugā

}

Savienojumu apvienošanas uzvedību var pārraudzīt, izpildot SQL serverī saglabātās procedūras sp_who vai sp_who2. Varat arī izmantot SQL Server Profiler vai izmantot Performance Counters priekšrocības, lai uzraudzītu savienojuma apvienošanas uzvedību.

Savienojumu apvienošanā ir dažas potenciālas problēmas. Viens no šādiem jautājumiem ir fondu sadrumstalotība. Strādājot ar savienojumu apvienošanu, jums jāzina par kopu sadrumstalotību un jānodrošina, lai tiktu veikti atbilstoši pasākumi (jūsu arhitektūra būtu jāveido, lai risinātu pūla sadrumstalotības mazināšanas stratēģijas), lai izvairītos no kopas sadrumstalotības. Ņemiet vērā, ka pūla sadrumstalotība var rasties, ja izmantojat integrēto drošību vai pat tad, ja lietojumprogramma izmanto pārāk daudz savienojumu kopu.

Lai nodrošinātu savienojumu apvienošanas efektīvu darbību, jums jāaizver datu bāzes savienojumi, kad tie vairs nav vajadzīgi. Nekad nevajadzētu izsaukt metodi Aizvērt vai Iznīcināt savienojuma instancē, izmantojot metodi Pabeigt. Pirms saistīto savienojuma objektu aizvēršanas vai iznīcināšanas ir jāaizver arī transakcijas gadījumi. Šeit ir jauks lasījums par šo tēmu.