Kako funkcionira spremanje veza ADO.Net?

Povezivanje s bazom podataka operacija je koja zahtijeva velike resurse i obično sadrži nekoliko koraka. Prije uspostavljanja početnog rukovanja s poslužiteljem baze podataka treba uspostaviti komunikacijski kanal između aplikacije i baze podataka. Ovaj kanal može biti utičnica ili imenovana cijev. Jednom kada se ta veza uspostavi i početno rukovanje s poslužiteljem uspije, metapodaci veze (podaci o nizu veze za povezivanje s bazom podataka) raščlanjuju se, a poslužitelj baze podataka ovjerava vezu s bazom podataka.

ADO.Net je već dugo jedan od najpopularnijih okvira za pristup podacima. Spajanje veza značajka je u ADO.Netu koja vam omogućuje poboljšanje performansi pristupa podacima u vašoj aplikaciji.

Što je udruživanje veza?

Udruživanje veza strategija je koja se koristi za smanjivanje troškova povezanih s otvaranjem i zatvaranjem veza s bazom podataka. Omogućuje vam ponovnu upotrebu veza, umjesto stvaranja novih veza s bazom podataka kad i kada su zatražene.

Spremište veza sadrži kolekciju neaktivnih, otvorenih veza za višekratnu upotrebu. Pooler upravlja spremištem veza i održava skup aktivnih veza za svaki zadani metapodatak veze, informacije o konfiguraciji veze.

Imajte na umu da možete imati više spremišta veza u istoj domeni aplikacije. Spremište veza kreira se prema jedinstvenom nizu veze koji koristite za povezivanje s bazom podataka, a ne prema bazi podataka. Dakle, prvi put kada se povežete s bazom podataka s određenim nizom veze, kreira se novo spremište veza. Kad se sljedeći put spojite na istu bazu podataka s istim nizom veze, ne kreira se novo spremište veza, već se ponovno koristi postojeće spremište veza.

Treba imati na umu da će se, kada koristite integriranu sigurnost, stvoriti spremište veza za svakog korisnika koji pristupi klijentskom sustavu, tj. Veze se udružuju prema identitetu sustava Windows. S tim u vezi, MSDN kaže: "Kada se veza prvi put otvori, kreira se spremište veza na temelju algoritma točnog podudaranja koji povezuje spremište s nizom veze u vezi. Svako spremište veza povezano je s posebnim nizom veze. Kada se otvori nova veza, ako se niz veze ne podudara s postojećim bazenom, kreira se novi bazen. "

Konfiguriranje spremanja veza

Kako kontrolirate ponašanje udruživanja veza? Pa, možete upravljati spremištima veza koristeći određene ključne riječi u vašem nizu veze. Najvažnije uključuju sljedeće:

  • ConnectionTimeout - koristi se za određivanje razdoblja čekanja (u sekundama) kada se traži nova veza s bazom podataka. Zadana vrijednost je 15.
  • MinPoolSize - ovo predstavlja minimalni broj veza u spremištu.
  • MaxPoolSize - ovo predstavlja maksimalni broj veza u spremištu. Zadana vrijednost je 100.
  • Spajanje - ovo kontrolira je li spremanje veze uključeno ili isključeno i može li imati vrijednost true ili false. Kada se ovo postavi na true, tražena veza dohvaća se iz odgovarajućeg spremišta veza.

Sljedeći isječak koda ilustrira kako se spremište veza može konfigurirati pomoću niza veze:

string connectionString="Data Source=localhost;Initial Catalog=Sample; Integrated security=SSPI;Connection Timeout=30; Connection Lifetime=0;Min Pool Size=0;Max Pool Size=100;Pooling=true;";

using (SqlConnection connection = new SqlConnection(connectionString))

{

   connection.Open();

   //Write code here to perform CRUD operations on the Sample database

}

Ponašanje udruživanja veza možete nadzirati izvršavanjem sp_who ili sp_who2 pohranjenih procedura u SQL Server. Također možete koristiti SQL Server Profiler ili iskoristiti Brojače performansi za nadgledanje ponašanja spajanja veza.

Postoji nekoliko potencijalnih problema s udruživanjem veza. Jedno od takvih pitanja je fragmentacija bazena. Kada radite s udruživanjem veza, trebali biste biti svjesni fragmentacije spremišta i osigurati usvajanje odgovarajućih mjera (vaša arhitektura treba biti dizajnirana za rješavanje strategija ublažavanja fragmentacije spremišta) kako bi se izbjegla fragmentacija spremišta. Imajte na umu da se fragmentacija spremišta može dogoditi ako koristite integriranu sigurnost ili čak i kada vaša aplikacija koristi previše spremišta veza.

Da biste osigurali da spremanje veza djeluje učinkovito, trebali biste osigurati da zatvorite veze baze podataka kada više nisu potrebne. Nikada ne biste trebali pozivati ​​metodu Zatvori ili Odbaci na instanci veze u metodi Finalize. Također biste trebali zatvoriti instance transakcije prije nego što se povezani objekti veze zatvore ili uklone. Evo lijepog čitanja na ovu temu.