See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 20385|Vastuse: 0

[Allikas] ADO.NET Õpetus (5) Selgita üksikasjalikult andmebaasi ühenduse basseini

[Kopeeri link]
Postitatud 17.09.2016 15:41:28 | | | |
Kokkuvõte
Täna räägin andmebaasi ühenduse basseinidest. Ausalt öeldes ütlesin, et pardipirn on väga suur. Sest ühenduste basseinid on võrreldes teiste peatükkidega suhteliselt raske mõista. Tahaksin seda teile kõige populaarsemates lausetes selgitada, kuid see pole lihtne ülesanne. Siiski on ühendusbasseinid samuti väga oluline teadmiste punkt, eriti mitme kasutajaga programmide juurutamisel. Seetõttu pean ma mitte ainult rääkima, vaid ka põhjalikult rääkima. Selle artikli kaudu mõistad ühenduse kogumise põhialuseid ja seda, kuidas seda juba kasutatakse sinu rakenduse jõudluse parandamiseks.

Sisukord
Mis on ühenduse bassein?
Kuidas ühendusbassein töötab
Räägime mõnest väga olulisest ühendusbasseinide omadusest
Ühendusbasseini erandid ja käsitlemismeetodid
Viis jälgida oma ühenduse olekut
Põhiprintsiibid ühendusbasseinide tõhusaks kasutamiseks
1. Mis on ühendusbassein?
      Eelmises artiklis "ADO.NET Sa pead teadma (4) maitse ühenduse objektid" olen rõhutanud, et andmebaasiühenduse loomine on väga aeganõudev (aeganõudev) ja töömahukas (ressursimahukas) tegevus. See on tingitud sellest, et andmebaasiserveriga ühendamine hõlmab mitut pikka protsessi: füüsilise kanali (näiteks socket või nimetatud torujuhtme) loomist, esmase käepigistuse tegemist serveriga, ühenduse stringi info analüüsi, serveri autentimist, kontrolli läbiviimist, et registreerida praeguses tehingus jne. Sõltumata sellest, miks selline mehhanism eksisteerib, on alati olemas olemasolu põhjus. Kuna uue ühenduse loomine on nii valus, miks mitte kasutada olemasolevat taaskasutada?

      Tegelikult annab ADO.NET meile juba optimeerimismeetodi nimega ühenduste pooling. Ühendusbassein on üks selline konteiner: see hoiab teatud arvu füüsilisi ühendusi andmebaasiserveriga. Seega, kui peame ühenduma andmebaasiserveriga, peame lihtsalt võtma vaba ühenduse basseinist (konteinerist) selle asemel, et luua uut. See vähendab oluliselt andmebaasiga ühenduse lisakoormust, mis omakorda parandab rakenduse jõudlust.

PS:本来做了2张图片来描述连接池的,无奈公司装有监控软件,不能上传,所以只能等下次有时间上传了。



2. Kuidas ühendusbassein töötab
2.1 Loo ühendusbassein
      Tuleb märkida, et ühendusbasseinid on klassitundlikud. See tähendab, et sama rakenduse domeen võib omada samaaegselt mitut erinevat tüüpi ühendusbasseini. Kuidas siis ühendusbasseinid tuvastatakse? Täpsemalt eristatakse seda protsessi moodustava allkirja, rakendusdomeeni, ühendusstringi ja Windowsi identiteedi (kui kasutatakse integreeritud turvalisust). Kuid sama rakendusdomeeni puhul tuvastatakse see tavaliselt ainult ühendusstringi järgi. Kui ühendus avatakse, luuakse uus ühendusbassein, kui ribaühenduse tüübi signatuur ei ühti olemasoleva ühendusbasseini tüübiga. vastasel juhul ei teki uut ühenduste basseini.

      Tüüpiline näide ühenduse loomisest:


Ülaltoodud näites lõin kolm SqlConnection objekti, kuid nende haldamiseks oli vaja vaid kahte ühendusgruppi. Head sõbrad, võib-olla olete juba avastanud, et conn1 ja conn3 kasutavad sama ühendusstringi, nii et nad saavad jagada ühenduse basseini, samas kui conn2 ja conn1 erinevad conn3-st, seega peate looma uue ühenduse basseini.

2.2 Tühikäigu ühenduste eraldamine
      Kui kasutaja loob ühenduse taotluse või kutsub ühenduse objekti avamise, peab ühenduse basseini haldur esmalt leidma vastava tüüpi ühendusgrupi vastavalt ühenduse päringu tüübi allkirjale ja seejärel proovima eraldada vaba ühendus. Üksikasjad on järgmised:

Kui basseinis on vaba ühendus, tagasta ühendus.
Kui kõik ühendused basseinis on ammendatud, loo uus ühendus, mida basseini lisada.
Kui basseini maksimaalne ühenduste arv on saavutatud, läheb päring ootejärjekorda, kuni on vabad ühendused.
2.3 Eemalda kehtetud ühendused
      Kehtetud ühendused, st ühendused, mis ei ühendu õigesti andmebaasiserveriga. Ühendusbasseinide puhul on andmebaasiserverisse salvestatud ühenduste arv piiratud. Seega, kui kehtetud ühendused ei eemaldata ajapikku, raisatakse ühenduste basseinis ruumi. Tegelikult pole vaja muretseda, ühenduste haldur on need probleemid meie jaoks väga hästi lahendanud. Kui ühendus on pikka aega seisnud või tuvastatakse, et ühendus serveriga on katkenud, eemaldab ühenduste haldur ühenduse basseinist.

2.4 Kasutatud ühenduste taaskasutamine
      Kui ühenduse kasutamine on lõpetatud, peaksime selle õigel ajal sulgema või vabastama, et ühendus saaks tagasi basseini taaskasutamiseks. Ühenduse saab sulgeda Connection objekti Close or Dispose meetodi kaudu või kasutades C# using lauset.



3. Räägi mulle mõnest väga olulisest omadusest
Ühendusbasseini käitumist saab kontrollida ühendusstringide abil ning see sisaldab peamiselt nelja olulist omadust:

Ühenduse aeg: aeg, mil ühenduse taotlus peab ootama ajapiirangut. Vaikimisi on 15 sekundit sekundites.
Maksimaalne basseini suurus: maksimaalne ühenduste arv ühendusebasseinis. Vaikimisi on 100.
Minimaalne basseini suurus: minimaalne ühenduste arv ühendusebasseinis. Vaikimisi on 0.
Pooling: 是否启用连接池。ADO.NET默认是启用连接池的,因此,你需要手动设置Pooling=false来禁用连接池。
Võtame näite, et mõista ühenduse basseini omadusi. Kood on järgmine:

4. Ühenduse basseini erandid ja käsitlemismeetodid
      Kui kasutaja avab ühenduse ilma seda õigesti või õigeaegselt sulgemata, vallandab see sageli "ühenduse lekke" probleemi. Lekkinud ühendus jääb avatuks kuni äraviskamise meetodi kutsumiseni ning prügikoguja (GC) sulgeb ja ühenduse vabastab. Erinevalt ADO-st tuleb ADO.NET kasutatud ühendused käsitsi sulgeda. Oluline müüt on, et ühendus on suletud, kui ühendatud objekt on väljaspool kohalikku ulatust. Tegelikult, kui see on ulatusest väljas, vabastatakse ainult ühendusobjekt, mitte ühendusressurss. Vaatame esmalt üht näidet.

Et tulemused oleksid selgemad, määrasin spetsiaalselt maksimaalseks ühenduste arvuks 5 ja ajapiirangu aeg on 1 sekund. Pärast jooksu saadakse kiiresti järgmised tulemused.


Ülaltoodud tulemustest on selge, et ühenduses on kõrvalekaldeid. Me teame juba, et ühenduse basseinis on maksimaalne ühenduste arv 5, ja kui luuakse 6. ühendus, tuleb oodata ühenduse aegumiseni, sest maksimaalne ühenduste arv on jõudnud maksimaalse arvuni ja vabu ühendusi pole. Kui ajapiirangu aeg ületatakse, ilmub ülalmainitud ühenduse erand. Seetõttu pean veel kord rõhutama, et kasutatud ühendused tuleks võimalikult kiiresti korralikult sulgeda ja vabastada.



5. SQL Serveri ühenduste oleku jälgimise meetodid
(1) Aktiivsusmonitori kaudu
1. samm: Ava MSSMS Manager ja klõpsa ikoonil "Activity Monitor".



2. samm: Open Activity Monitor vaates klõpsa vahekaardil Protsessid.



3. samm: Käivita näide jaotises #4 Connection Pool Exceptions and Handling Methods, näed 5 avatud ühendust, nagu alloleval joonisel näidatud.



(2) Kasuta T-SQL lauseid
Samamoodi, käivitades süsteemi salvestatud protseduuri sp_who saame jälgida ka ühenduse seisundit.






6. Põhipõhimõtted ühendusbasseinide tõhusaks kasutamiseks
      Ühenduse pooli hea kasutamine parandab oluliselt sinu rakenduse jõudlust. Vastupidi, kui seda valesti kasutada, ei tee see kahju. Üldiselt tuleks järgida järgmisi põhimõtteid:

Taotle ühendust viimasel hetkel, vabasta ühendus võimalikult kiiresti.
Kui sulged ühenduse, sulge esmalt vastav kasutaja määratud tehing.
Taga ja hoia vähemalt üks avatud ühendus ühenduste basseinis.
Püüa vältida basseini prahti. See hõlmab peamiselt basseini killustumist, mida genereerib integreeritud turvalisus, ja basseini fragmentatsiooni, mis tekib paljude andmebaaside kasutamisel.
Nipp: Basseini killustumine on paljudes veebirakendustes tavaline probleem ning rakendused võivad tekitada suure hulga basseine, mida ei vabastata enne, kui protsess on lõppenud. Nii avatakse suur hulk ühendusi, mis võtavad palju mälu ja vähendavad jõudlust.





Eelmine:.net/c# genereerib juhuslikke numbreid, kohandatud tähti ja numbrite arvu
Järgmine:Kuidas seadistada HttpOnly küpsiste jaoks? Milleks HttpOnly kasutatakse?
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com