Povzetek Danes bom govoril o bazenih povezav z bazami podatkov. Iskreno, rekel sem, da je račja hruška zelo velika. Ker so povezovalni bazeni razmeroma težji za razumevanje v primerjavi z drugimi poglavji. Rad bi vam to razložil v najbolj priljubljenih stavkih, a to ni lahka naloga. Vendar pa so povezovalni bazeni tudi zelo pomembna točka znanja, zlasti pri uvajanju večuporabniških programov. Zato moram ne le govoriti, ampak tudi temeljito. V tem članku boste razumeli osnove združevanja povezav in kako se že uporablja za izboljšanje zmogljivosti vaše aplikacije.
Kazalo vsebine Kaj je povezovalni bazen? Kako deluje povezovalni bazen Pogovorimo se o nekaj zelo pomembnih lastnostih povezovalnih bazenov Izjeme povezovalnih skupin in metode obravnave Način za spremljanje stanja vaše povezave Osnovna načela za učinkovito uporabo povezovalnih bazenov 1. Kaj je povezovalni bazen? V prejšnjem članku, »ADO.NET Morate poznati (4) Taste Connection Objects«, sem poudaril, da je vzpostavitev povezave z bazo podatkov zelo časovno zahtevna (časovno potratna) in delovno intenzivna (vire porabijoča) naloga. To je zato, ker povezava s strežnikom podatkovne baze vključuje več dolgotrajnih procesov: vzpostavitev fizičnega kanala (kot je socket ali imenovani cevovod), začetni stik s strežnikom, analizo informacij o povezavi, preverjanje povezave s strani strežnika, preverjanje registracije v trenutni transakciji in podobno. Ne glede na to, zakaj tak mehanizem obstaja, obstaja vedno razlog za obstoj. Ker je ustvarjanje nove povezave tako boleče, zakaj ne bi ponovno uporabili obstoječe?
Pravzaprav nam ADO.NET že ponuja optimizacijsko metodo, imenovano spajanje povezav. Povezovalni bazen je eden takšnih kontejnerjev: vsebuje določeno število fizičnih povezav s strežnikom podatkovne baze. Zato, ko se moramo povezati s strežnikom podatkovne baze, moramo odstraniti le prosto povezavo iz bazena (kontejnerja) namesto da bi ustvarili novo. To močno zmanjša stroške povezave z bazo podatkov, kar izboljša delovanje aplikacije.
PS:本来做了2张图片来描述连接池的,无奈公司装有监控软件,不能上传,所以只能等下次有时间上传了。
2. Kako deluje povezovalni bazen 2.1 Ustvarjanje povezovalnega bazena Treba je poudariti, da so povezovalni bazeni občutljivi na razrede. To pomeni, da ima ista aplikacijska domena lahko hkrati več različnih vrst povezovalnih bazenov. Torej, kako se identificirajo povezovalni bazeni? Podrobneje ga ločimo po podpisu, ki tvori proces, aplikacijski domeni, povezovalnem nizu in Windows identiteti (pri uporabi integrirane varnosti). Vendar pa je za isto aplikacijsko domeno običajno identificiran le s povezovalnim nizom. Ko se povezava odpre, se ustvari nov povezovalni sklad, če tipni podpis trak povezave ne ustreza tipu obstoječega povezovalnega sklada. v nasprotnem primeru se ne ustvari nov povezovalni bazen.
Tipičen primer ustvarjanja povezave:
V zgornjem primeru sem ustvaril tri SqlConnection objekte, vendar sta bila za upravljanje potrebna le dva povezovalna bazena. Pozorni prijatelji, morda ste že ugotovili, da imata conn1 in conn3 enak povezovalni niz, zato si lahko delita povezovalni bazen, medtem ko sta conn2 in conn1 drugačna od conn3, zato morate ustvariti nov povezovalni bazen.
2.2 Dodeljevanje neaktivnih povezav Ko uporabnik ustvari zahtevo za povezavo ali pokliče objekt Odprtje povezave, mora upravljavec sklada povezav najprej najti sklad povezav ustreznega tipa na podlagi podpisa zahteve za povezavo, nato pa poskuša dodeliti prosto povezavo. Podrobnosti so naslednje:
Če je v bazenu na voljo povezava, jo vrni. Če so vse povezave v bazenu izčrpane, ustvarite novo povezavo, ki jo lahko dodate v bazen. Če je doseženo največje število povezav v bazenu, zahteva vstopi v čakalno vrsto, dokler niso na voljo proste povezave. 2.3 Odstranitev neveljavnih povezav Neveljavne povezave, torej povezave, ki se ne povežejo pravilno s strežnikom podatkovne baze. Pri povezovalnih bazenih je število povezav, shranjenih na strežniku baze podatkov, omejeno. Zato, če neveljavne povezave niso pravočasno odstranjene, bo prostor v povezovalnem bazenu izgubljen. Pravzaprav vam ni treba skrbeti, upravitelj povezav je te težave za nas zelo dobro rešil. Če je povezava dlje časa neaktivna ali če zazna, da je povezava s strežnikom prekinjena, upravitelj bazena povezav odstrani povezavo iz sklada.
2.4 Priključki za recikliranje Ko končamo z uporabo povezave, jo moramo pravočasno zapreti ali sprostiti, da se povezava lahko vrne v bazen za ponovno uporabo. Povezavo lahko zapremo z metodo Close or Dispose objekta Connection ali z ukazom using v C#.
3. Povejte mi nekaj zelo pomembnih lastnosti Obnašanje povezovalnega bazena je mogoče nadzorovati s povezovalnimi nizi in vključuje predvsem štiri pomembne lastnosti:
Časovna omejitev povezave: Čas, ko zahteva za povezavo počaka na časovno omejitev. Privzeto je 15 sekund v sekundah. Največja velikost sklada: Največje število povezav v povezovalnem bazenu. Privzeto je 100. Minimalna velikost bazena: Minimalno število povezav v povezovalnem bazenu. Privzeto je 0.
Pooling: 是否启用连接池。ADO.NET默认是启用连接池的,因此,你需要手动设置Pooling=false来禁用连接池。 Vzemimo primer, da razumemo lastnosti povezovalnega bazena. Koda je naslednja:
4. Izjeme povezovalnih skupin in metode obdelave Ko uporabnik odpre povezavo, ne da bi jo pravilno ali pravočasno zaprl, pogosto sproži težavo z "puščanjem povezave". Uhajajoča povezava ostane odprta, dokler se ne pokliče metoda Dispose, nato pa Garbage Collector (GC) zapre in sprosti povezavo. Za razliko od ADO ADO.NET treba ročno zapirati uporabljene povezave. Pomemben mit je, da je povezava zaprta, ko je povezani predmet izven lokalnega obsega. Pravzaprav, ko je izven obsega, se sprosti le objekt povezave, ne pa vir povezave. No, najprej si poglejmo primer.
Da bi bili rezultati bolj očitni, sem posebej nastavil največje število povezav na 5, čas časovne omejitve pa je 1 sekunda. Po teku se hitro dosežejo naslednji rezultati.
Iz zgornjih rezultatov je jasno, da obstaja nepravilnost v povezavi. Vemo že, da je največje število povezav v povezovalnem skladu 5, in ko je šesta povezava ustvarjena, je treba počakati, da povezava poteče, ker je največje število povezav v povezovalnem skladu doseglo največje število in ni prostih povezav. Ko je časovni izpad prekoračen, se prikaže zgoraj omenjena izjema povezave. Zato moram še enkrat poudariti, da je treba uporabljene povezave čim prej ustrezno zapreti in sprostiti.
5. Metode za spremljanje stanja povezav SQL Server (1) Preko monitorja aktivnosti 1. korak: Odprite MSSMS Manager in kliknite ikono "Activity Monitor".
Korak 2: V pogledu Open Activity Monitor kliknite na zavihek Procesi.
Korak 3: Zaženite primer v #4 Izjeme in metode obravnave skupin povezav, kjer lahko vidite 5 odprtih povezav, kot je prikazano na spodnji sliki.
(2) Uporaba T-SQL stavkov Prav tako lahko z izvajanjem sistemsko shranjene procedure spremljamo tudi stanje povezave, sp_who je shranjena.
6. Osnovna načela za učinkovito uporabo povezovalnih bazenov Dobra uporaba bazena povezav bo močno izboljšala delovanje vaše aplikacije. Nasprotno, če se uporablja nepravilno, ne bo škodovalo. Na splošno je treba upoštevati naslednja načela:
Zahtevajte povezavo najpozneje, povezavo prekinite čim prej. Ko zaprete povezavo, najprej zaprite ustrezno uporabniško definirano transakcijo. Zagotovite in vzdržujte vsaj eno odprto povezavo v povezovalnem bazenu. Poskusite se izogibati ostankom iz bazena. To večinoma vključuje fragmentacijo bazena, ki jo povzroča integrirana varnost, in fragmentacijo bazena, ki nastane z uporabo številnih baz podatkov. Nasvet: Fragmentacija bazena je pogost problem v mnogih spletnih aplikacijah, aplikacije pa lahko ustvarijo veliko število bazenov, ki niso sproščeni, dokler proces ne preneha delovati. Na ta način se odpre veliko število povezav, kar zavzame veliko pomnilnika in povzroči zmanjšano zmogljivost.
|