Programavimas

Kaip veikia ADO.Net ryšio telkimas?

Ryšys su duomenų baze yra daug išteklių reikalaujanti operacija, kurią paprastai sudaro keli žingsniai. Prieš pradedant pirminį rankos paspaudimą su duomenų bazės serveriu, reikia sukurti programos ir duomenų bazės ryšio kanalą. Šis kanalas gali būti lizdas arba pavadintas vamzdis. Užmezgus šį ryšį ir sėkmingai paspaudus serverį, prisijungimo metaduomenys (ryšio eilutės informacija, skirta prisijungti prie duomenų bazės) yra analizuojami ir ryšį su duomenų baze patvirtina duomenų bazės serveris.

ADO.Net ilgą laiką buvo viena iš populiariausių duomenų prieigos sistemų. Ryšių telkimas yra ADO.Net funkcija, leidžianti pagerinti duomenų prieigos našumą jūsų programoje.

Kas yra jungčių sujungimas?

Ryšių telkimas yra strategija, naudojama siekiant sumažinti išlaidas, susijusias su ryšių atidarymu ir uždarymu prie duomenų bazės. Tai leidžia pakartotinai naudoti ryšius, o ne kurti naujus ryšius su duomenų baze tada, kai jų paprašoma.

Ryšių telkinyje yra nenaudojamų, atvirų, daugkartinių ryšių rinkinys. „Pooler“ valdo ryšių telkinį ir palaiko aktyvių ryšių rinkinį kiekvienam nurodytam ryšio metaduomeniui, ryšio konfigūracijos informacijai.

Atminkite, kad tame pačiame programos domene gali būti keli ryšio telkiniai. Ryšių telkinys sukuriamas kiekvienai unikaliai ryšio eilutei, kurią naudojate prisijungdami prie duomenų bazės, o ne kiekvienai duomenų bazei. Taigi, pirmą kartą prisijungus prie duomenų bazės naudojant tam tikrą ryšio eilutę, sukuriamas naujas ryšių telkinys. Kai kitą kartą prisijungsite prie tos pačios duomenų bazės su ta pačia ryšio eilute, naujas ryšio telkinys nebus sukurtas, o esamas ryšių telkinys bus pakartotinai naudojamas.

Reikėtų pažymėti, kad kai naudojate integruotą saugą, kiekvienam vartotojui, kuris prisijungia prie kliento sistemos, būtų sukurtas ryšio telkinys, t. Y. Sujungimai sujungiami pagal „Windows“ tapatybę. Šiuo atžvilgiu MSDN teigia: "Kai pirmą kartą atidaromas ryšys, sukuriamas ryšio telkinys, pagrįstas tikslaus atitikimo algoritmu, kuris susieja baseiną su ryšio eilute. Kiekvienas ryšio baseinas yra susietas su atskira ryšio eilute. Atidarius naują ryšį, jei ryšio eilutė nėra tiksli esamo telkinio atitiktis, sukuriamas naujas telkinys. "

Ryšio kaupimo konfigūravimas

Kaip jūs kontroliuojate jungčių sujungimo elgesį? Na, galite valdyti ryšių grupes naudodami tam tikrus raktinius žodžius savo ryšio eilutėje. Svarbiausi yra šie:

  • „ConnectionTimeout“ - tai naudojama laukimo laikotarpiui (sekundėmis) nurodyti, kai prašoma naujo duomenų bazės ryšio. Numatytoji vertė yra 15.
  • MinPoolSize - tai reiškia mažiausią jungčių skaičių baseine.
  • „MaxPoolSize“ - tai reiškia didžiausią jungčių skaičių baseine. Numatytoji vertė yra 100.
  • „Pooling“ - tai kontroliuoja, ar jungimo jungimas įjungtas arba išjungtas ir gali turėti „true of false“ reikšmę. Kai tai nustatyta kaip teisinga, prašomas ryšys gaunamas iš atitinkamo ryšio telkinio.

Šis kodo fragmentas parodo, kaip galima konfigūruoti ryšio telkinį naudojant ryšio eilutę:

string connectionString = "Duomenų šaltinis = localhost; Pradinis katalogas = Pavyzdys; Integruotas saugumas = SSPI; Ryšio skirtasis laikas = 30; Ryšio trukmė = 0; Min. baseino dydis = 0; Maks. baseino dydis = 100; Grupavimas = tiesa;";

naudojant [SqlConnection connection = new SqlConnection (connectionString)]

{

ryšys. Atidarykite ();

// Čia parašykite kodą, kad atliktumėte CRUD operacijas duomenų bazės pavyzdyje

}

Ryšio telkimo elgesį galite stebėti vykdydami sp_who arba sp_who2 saugomas procedūras SQL serveryje. Taip pat galite naudoti „SQL Server Profiler“ arba pasinaudoti „Performance Counters“ pranašumais stebėdami jungčių kaupimo elgesį.

Yra keletas galimų ryšio sujungimo problemų. Vienas tokių klausimų yra fondų suskaidymas. Dirbdami su jungčių kaupimu, turėtumėte žinoti apie telkinio susiskaidymą ir užtikrinti, kad būtų imtasi tinkamų priemonių (jūsų architektūra turėtų būti sukurta taip, kad būtų atsižvelgta į suskaidymo mažinimo strategijas), kad būtų išvengta telkinio suskaidymo. Atminkite, kad telkinio fragmentacija gali atsirasti, jei naudojate integruotą saugą arba net tada, kai jūsų programa naudoja per daug ryšio telkinių.

Norėdami užtikrinti efektyvų jungčių kaupimą, turėtumėte užtikrinti, kad uždarysite duomenų bazės ryšius, kai jie nebereikalingi. Niekada neturėtumėte skambinti metodu „Uždaryti“ arba „Šalinti“ prisijungimo egzemplioriuje, naudodami metodą „Baigti“. Taip pat turėtumėte uždaryti operacijos egzempliorius prieš uždarydami arba pašalindami susijusius ryšio objektus. Štai gražus skaitymas šia tema.