Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 20385|Vastaus: 0

[Lähde] ADO.NET Opas (5) Selitä tietokantayhteyspooli yksityiskohtaisesti

[Kopioi linkki]
Julkaistu 17.9.2016 15.41.28 | | | |
Tiivistelmä
Tänään aion puhua tietokantayhteyspooleista. Rehellisesti sanottuna, sanoin, että ankka-päärynä on todella iso. Koska yhteyspoolit ovat suhteellisen vaikeita ymmärtää verrattuna muihin lukuihin. Haluan selittää sen sinulle suosituimmilla lauseilla, mutta se ei ole helppo tehtävä. Kuitenkin yhteyspoolit ovat myös erittäin tärkeä tietopiste, erityisesti monen käyttäjän ohjelmien käyttöönotossa. Siksi minun täytyy paitsi puhua, myös perusteellisesti. Tämän artikkelin kautta ymmärrät yhteyspoolauksen perusteet ja miten sitä jo hyödynnetään sovelluksesi suorituskyvyn parantamiseksi.

Sisällysluettelo
Mikä on yhteyspooli?
Miten yhteyspooli toimii
Puhutaanpa muutamista erittäin tärkeistä yhteyspoolien ominaisuuksista
Yhteyspoolin poikkeukset ja käsittelymenetelmät
Tapa seurata yhteyden tilaa
Perusperiaatteet yhteyspoolien tehokkaaseen käyttöön
1. Mikä on yhteyspooli?
      Edellisessä artikkelissa, "ADO.NET You Must Know (4) Taste Connection Objects", olen korostanut, että tietokantayhteyden muodostaminen on hyvin aikaa vievää (aikaa vievää) ja työlästä (resurssia kuluttavaa) tehtävää. Tämä johtuu siitä, että yhdistäminen tietokantapalvelimeen sisältää useita pitkiä prosesseja: fyysisen kanavan (kuten socketin tai nimettyjen putkiston) perustamisen, alkuperäisen kädenpuristuksen palvelimen kanssa, yhteysmerkkijonon tietojen analysointia, palvelimen todennus yhteyden, tarkistus nykyiseen tapahtumaan rekisteröitymiseksi ja niin edelleen. Riippumatta siitä, miksi tällainen mekanismi on olemassa, olemassaololle on aina syy. Koska uuden yhteyden luominen on niin tuskallista, miksi ei käyttäisi olemassa olevaa uudelleen?

      Itse asiassa ADO.NET antaa meille jo optimointimenetelmän nimeltä connection pooling. Yhteyspooli on yksi tällainen kontti: se sisältää tietyn määrän fyysisiä yhteyksiä tietokantapalvelimeen. Siksi, kun meidän täytyy yhdistää tietokantapalvelimeen, meidän tarvitsee vain ottaa vapaa yhteys poolista (kontista) sen sijaan, että luomme uuden. Tämä vähentää merkittävästi tietokantaan yhdistämisen ylikuormitusta, mikä parantaa sovelluksen suorituskykyä.

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



2. Miten yhteyspooli toimii
2.1 Luo yhteyspooli
      On syytä huomata, että yhteyspoolit ovat luokkaherkkiä. Toisin sanoen sama sovellusalue voi sisältää useita erilaisia yhteyspooleja samanaikaisesti. Miten siis yhteysaltaat tunnistetaan? Tarkemmin sanottuna se erotetaan prosessin muodostavan allekirjoituksen, sovellusdomainin, yhteysmerkkijonon ja Windowsin identiteetin (integroidun turvallisuuden yhteydessä) perusteella. Kuitenkin saman sovellusalueen kohdalla se tunnistetaan yleensä vain yhteysjonon perusteella. Kun yhteys avataan, luodaan uusi yhteyspooli, jos nauhaliitännän tyyppiallekirjoitus ei vastaa olemassa olevan yhteyspoolin tyyppiä. muussa tapauksessa uutta yhteyspoolia ei synny.

      Tyypillinen esimerkki yhteyden luomisesta:


Yllä olevassa tapauksessa loin kolme SqlConnection-objektia, mutta niiden hallintaan tarvittiin vain kaksi yhteyspoolia. Varovaiset ystävät, olette ehkä jo huomanneet, että conn1:llä ja conn3:lla on sama yhteysjono, joten ne voivat jakaa yhteyspoolin, kun taas conn2 ja conn1 eroavat conn3:sta, joten sinun täytyy luoda uusi yhteyspooli.

2.2 Tyhjäkäyntiyhteyksien jakaminen
      Kun käyttäjä luo yhteyspyynnön tai kutsuu Open of a Connection -objektin, yhteyspoolin hallinnan on ensin löydettävä vastaava yhteyspooli kyseisen tyyppisen allekirjoituksen perusteella ja sen jälkeen yrittää varata vapaa yhteys. Yksityiskohdat ovat seuraavat:

Jos poolissa on vapaa yhteys, palauta yhteys.
Jos kaikki altaan liitännät ovat loppuneet, luo uusi liitäntä altaaseen.
Jos poolin suurin määrä yhteyksiä on saavutettu, pyyntö siirtyy odotusjonoon, kunnes vapaat yhteydet ovat saatavilla.
2.3 Poista virheelliset yhteydet
      Virheelliset yhteydet, eli yhteydet, jotka eivät yhdisty oikein tietokantapalvelimeen. Yhteyspoolien osalta tietokantapalvelimelle tallennettujen yhteyksien määrä on rajallinen. Siksi, jos virheellisiä yhteyksiä ei poisteta ajan myötä, yhteysaltaan tila menee hukkaan. Itse asiassa sinun ei tarvitse huolehtia, yhteysaltaan johtaja on hoitanut nämä ongelmat meille erittäin hyvin. Jos yhteys on pitkään käyttämättömänä tai havaitsee, että yhteys palvelimeen on katkaistu, yhteyspoolin hallinta poistaa yhteyden poolista.

2.4 Käytettyjen yhteyksien kierrätys
      Kun olemme lopettaneet yhteyden käytön, meidän tulisi sulkea tai vapauttaa se ajoissa, jotta yhteys voidaan palauttaa pooliin uudelleenkäyttöä varten. Voimme sulkea yhteyden Connection-objektin Close or Dispose -menetelmällä tai using -lauseella C#:ssa.



3. Kerro muutamasta erittäin tärkeästä ominaisuudesta
Yhteyspoolin käyttäytymistä voidaan hallita yhteysjonoilla, ja siihen kuuluu pääasiassa neljä tärkeää ominaisuutta:

Yhteyden aikakatkaisu: Aika, jolloin yhteyspyyntö odottaa aikakatkaisua. Oletusarvo on 15 sekuntia sekunneissa.
Maksimipoolin koko: Yhteyspoolin suurin määrä yhteyksiä. Oletusarvo on 100.
Minimipoolin koko: Yhteyspoolin vähimmäismäärä yhteyksiä. Oletusarvo on 0.
Pooling: 是否启用连接池。ADO.NET默认是启用连接池的,因此,你需要手动设置Pooling=false来禁用连接池。
Otetaan esimerkki ymmärtääksemme yhteyspoolin ominaisuuksia. Koodi on seuraava:

4. Yhteyspoolin poikkeukset ja käsittelymenetelmät
      Kun käyttäjä avaa yhteyden sulkematta sitä oikein tai ajallaan, se usein aiheuttaa "yhteysvuodon" ongelman. Vuotanut yhteys pysyy avoimena, kunnes poistomenetelmä kutsutaan ja jätekeräin (GC) sulkee ja vapauttaa yhteyden. Toisin kuin ADO:ssa, ADO.NET täytyy sulkea käytetyt yhteydet manuaalisesti. Tärkeä myytti on, että yhteys on suljettu, kun yhdistetty objekti on paikallisen scopen ulkopuolella. Itse asiassa, kun se on ulkopuolella, vapautetaan vain yhteysobjekti, ei yhteysresurssi. Katsotaanpa ensin esimerkkiä.

Jotta tulokset olisivat selkeämpiä, asetin erityisesti yhteyksien maksimimäärän viiteen ja aikakatkaisuaika on 1 sekunti. Juoksun jälkeen seuraavat tulokset saadaan nopeasti.


Yllä olevista tuloksista on selvää, että yhteydessä on poikkeavuus. Tiedämme jo, että yhteyspoolin maksimiyhteysmäärä on 5, ja kun kuudes yhteys luodaan, on tarpeen odottaa yhteyden aikarajoittumista, koska yhteyspoolin suurin yhteysmäärä on saavuttanut maksimimäärän eikä vapaita yhteyksiä ole. Kun aikakatkaisuaika ylittyy, yllä mainittu yhteyspoikkeus ilmestyy. Siksi haluan korostaa jälleen, että käytetyt liitännät tulisi sulkea ja vapauttaa asianmukaisesti mahdollisimman pian.



5. SQL Server -yhteyksien tilan seurantamenetelmät
(1) Aktiivisuusmittarin kautta
Vaihe 1: Avaa MSSMS Manager ja klikkaa "Activity Monitor" -kuvaketta.



Vaihe 2: Avaa aktiivisuusvalvonta -näkymässä klikkaa Prosessit-välilehteä.



Vaihe 3: Suorita esimerkki kohdassa #4 Connection Pool Exceptions and Handling Methods, näet 5 avointa yhteyttä alla olevassa kuvassa.



(2) Käytä T-SQL-lauseita
Samoin suorittamalla järjestelmän tallennettu proseduuri sp_who voimme myös seurata yhteyden tilaa.






6. Perusperiaatteet yhteyspoolien tehokkaaseen käyttöön
      Connection poolin hyvä hyödyntäminen parantaa sovelluksesi suorituskykyä merkittävästi. Päinvastoin, jos sitä käytetään väärin, siitä ei ole haittaa. Yleisesti ottaen seuraavia periaatteita tulisi noudattaa:

Pyydä yhteys viimeistään ja vapauta yhteys mahdollisimman pian.
Kun suljet yhteyden, sulje ensin käyttäjän määrittelemä tapahtuma.
Varmista ja pidä vähintään yksi avoin yhteys yhteyspoolissa.
Yritä välttää uima-altaan roskia. Tähän sisältyvät pääasiassa altaan fragmentaatio, joka syntyy integroidun tietoturvan kautta, sekä poolin fragmentaatiota, joka syntyy käyttämällä useita tietokantoja.
Vinkki: Poolin pirstaloituminen on yleinen ongelma monissa verkkosovelluksissa, ja sovellukset voivat luoda suuren määrän pooleja, joita ei vapauteta ennen kuin prosessi päättyy. Näin avautuu suuri määrä yhteyksiä, jotka vievät paljon muistia ja heikentävät suorituskykyä.





Edellinen:.net/c# tuottaa satunnaislukuja, mukautettuja kirjaimia ja lukumääriä
Seuraava:Miten asetan HttpOnlyn evästeille? Mihin HttpOnlyä käytetään?
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com