Tööstuslik lĂ€henemine PostgreSQL-tuunimisele: katsetused andmebaaside ĂŒle. Nikolai Samokhvalov

Olen valmis tutvustama Nikolai Samohvalovi ettekande "Tööstuslik lÀhenemine PostgreSQL tuunimisele: katsetused andmebaasidega" kokkuvÔtet.

Shared_buffers = 25% – kas see on palju vĂ”i vĂ€he? VĂ”i just paras? Kuidas mĂ”ista, kas see – pigem vananenud – soovitus sobib teie konkreetsesse olukorda?

NĂŒĂŒd on aeg lĂ€heneda postgresql.conf parameetrite seadmiseks "tĂ€iskasvanulikult". Mitte pime "autotuunimine" vĂ”i vanad soovitused artikkelidest ja blogidest, vaid pĂ”hinevalt:

  1. rangelt mÔÔdetud katsetele andmebaasidel, teostatud automatiseeritult, suuremahulistes kogustes ja tingimustes, mis on vÔimalikult lÀhedased "lahinguoludele",
  2. sĂŒgavale arusaamale andmebaasisĂŒsteemi ja operatsioonisĂŒsteemi töö eripĂ€radest.

Kasutades Nancy CLI (https://gitlab.com/postgres.ai/nancy), vaatleme konkreetset nĂ€idet – sĂ”davargad shared_buffers – erinevates olukordades, erinevates projektides ja pĂŒĂŒame vĂ€lja selgitada, kuidas leida meie infrastruktuuri, andmebaasi ja koormuse jaoks optimaalne seadistus.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

RÀÀgime katsetustest andmebaasidega. See on lugu, mis on kestnud ĂŒle kuue kuu.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Natuke minust. Kogemus postgresega on juba ĂŒle 14 aasta. Olen loonud mitmeid sotsiaalvĂ”rgustikku kuuluvaid ettevĂ”tteid. Igas neist on kasutatud ja kasutatakse postgressi.

Samuti on RuPostgres grupp Meetup'is, saavutades 2. koha maailmas. JÔuame aeglaselt 2000 inimeseni. RuPostgres.org.

Ja erinevate konverentside ПК, sealhulgas Highload, vastutan andmebaaside eest, eelkĂ”ige Postgresi eest alates selle loomisest.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Viimastel aastatel olen taas alustanud oma Postgresi konsultatsiooni praktikat 11 ajavööndis siit.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Ja kui ma seda paar aastat tagasi tegin, olin ma teinud natuke pausi aktiivsest kĂ€sitsi töö tegemisest Postgresiga, ilmselt alates 2010. aastast. Olin ĂŒllatunud, kui vĂ€he on DBA tööde igapĂ€evaselt muutunud, kui palju kĂ€sitsi ĂŒtlemist on endiselt vajalik. Ja ma mĂ”tlesin kohe, et siit on midagi valesti, vajame rohkem automatiseerimist.

Kuna kÔik toimus eemal, olid enamik kliente pilvemaailmas. Ja palju on juba silmaga nÀhtavalt automatiseeritud. Sellest rÀÀgin veidi hiljem. T. e. kÔik see tÔi mind ideeni, et peaks olema rida tööriistu, st mitte mingi platvorm, mis automatiseerib praktiliselt kÔik DBA tegevused, et saaks hallata suurt hulka andmebaase.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Selles ettekandes ei tule olema:

  • „HĂ”bedasi kuulikesi“ ja vĂ€iteid nagu – seadke 8 GB vĂ”i 25 % shared_buffers, ja kĂ”ik on hĂ€sti. Shared_buffersist ei tule palju juttu.
  • Hulku "sĂŒgavamaid kihte".

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Mis juhtub?

  • On olemas optimeerimisprintsiibid, mida me rakendame ja arendame. Olemas on ideed, mis meie teel tekkivad, ja erinevad tööriistad, mille me enamikul juhtudel loome avatud allika (Open Source) pĂ”himĂ”tetel. Lisaks sellele on meie pileti sĂŒsteem ja praktiliselt kogu suhtlus avatud allikas. Saate jĂ€lgida, mida me praegu teeme, milline on jĂ€rgmine versioon jne.
  • Samuti jagame kogemusi nende printsiipide ja tööriistade kasutamisest erinevates ettevĂ”tetes: alates vĂ€ikestest idufirmadest kuni suurte organisatsioonideni.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Kuidas see kÔik areneb?

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Esiteks, DBA peamine ĂŒlesanne, peale instantside loomise ja varukoopiate haldamise, on kitsaskohade otsimine ja jĂ”udluse optimeerimine.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Praegu nĂ€eb see vĂ€lja nii. Me jĂ€lgime statistikat, nĂ€eme teatud asju, kuid meil puuduvad mĂ”ned detailid. Alustame sĂŒvitsi uurimist, tavaliselt kĂ€sitsi, ja mĂ”istame, mida sellega edasi teha.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Ja on kaks lĂ€henemist. Pg_stat_statements – standardlahendus aeglaste pĂ€ringute tuvastamiseks. Ja Postgresse logide analĂŒĂŒs pgBadgeri abil.

Igal lÀhenemisel on tÔsised puudused. Esimese lÀhenemisega viskame vÀlja kÔik parameetrid. Ja kui me nÀeme gruppe SELECT * FROM table where veerg on vÔrdne mÀrgiga «?» vÔi «$» alates Postgres 10 versioonist. Me ei tea, kas tegemist on index scan'i vÔi seq scan'iga. See sÔltub suuresti parameetrist. Kui sisestataks harva esinev vÀÀrtus, toimub index scan. Kui sisestataks vÀÀrtus, mis hÔlmab 90% tabelist, toimub ilmselt seq scan, sest Postgres teab statistikat. See on suur puudus pg_stat_statements, kuigi mingid tööd on kÀimas.

LogianalĂŒĂŒsides on peamine puudus see, et te ei saa endale lubada «log_min_duration_statement = 0», nagu tavaliselt. Ja sellest rÀÀgime ka. Seega ei nĂ€e te kogu pilti. Ja mingi pĂ€ring, mis on vĂ€ga kiire, vĂ”ib tarbida tohutult ressursse, kuid te ei nĂ€e seda, sest see jÀÀb teie lĂ€vendist madalamale.

Kuidas DBA-d lahendavad leitud probleeme?

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

NĂ€iteks leidsime mingi probleemi. Mida tavaliselt tehakse? Kui olete arendaja, siis teete midagi mĂ”nes instance'is, mis ei ole sellise suurusega. Kui olete DBA, siis on teil staging. Ja see vĂ”ib olla ainult ĂŒks. Ja see on olnud pool aastat maas. Ja te mĂ”tleksite, et lĂ€hete productioni. Ja isegi kogenud DBA-d kontrollivad hiljem productionis, koopia peal. Ja juhtuvad juhtumid, kus luuakse ajutine indeks, veendutakse, et see aitab, kustutatakse see ja antakse arendajatele, et nad saaksid selle migreerimisfailidesse lisada. Nii et selline jama toimub praegu. Ja see on probleem.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

  • Konfigureerimist timmida.
  • Indeksite kogumit optimeerida.
  • Muutke SQL-pĂ€ringut (see on kĂ”ige keerulisem meetod).
  • Lisage ressursse (keb kĂ”ige lihtsam meetod enamikul juhtudel).

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Nende asjadega on palju. Postgresis on palju nuppe. Tuleb palju teada. Postgresis on palju indekseid, tÀnu ka sellele konverentsi korraldajatele. Ja kÔike seda tuleb teada, ja just see tekitab mitte DBA-de seas tunde, et DBA-d tegelevad musta maagia ja asjadega. See tÀhendab, et tuleb umbes 10 aastat tegeleda, et hakata seda tÔeliselt mÔistma.

Ja olen selle musta maagia vastu. Soovin, et kÔik oleks tehnoloogial, mitte intuitsioonil.

Elulised nÀited

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Olen seda nĂ€inud vĂ€hemalt kahes projektis, sealhulgas oma omas. JĂ€rjekordne blogipostitus ĂŒtleb meile, et vÀÀrtus 1 000 default_statistict_target jaoks on hea. Hea, proovime seda tootmises.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Ja nĂŒĂŒd, kasutades oma tööriista kaks aastat hiljem ning tehes katseid andmebaasidega, millest tĂ€na rÀÀgime, saame vĂ”rrelda, mis oli ja mis on muutunud.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Ja selleks peame looma eksperimendi. See koosneb neljast osast.

  • Esimene on keskkond. Meil on vaja riistvara. Ja kui ma tulen mĂ”nda ettevĂ”ttesse ja sĂ”lmime lepingu, siis ĂŒtlen, et nad annaksid mulle sama riistvara nagu tootmises. Iga teie Meister jaoks vajame vĂ€hemalt ĂŒhte sellist riistvara. Olgu see virtuaalne masin Amazonis vĂ”i Google’is, vĂ”i mul on just selline riistvara vajalik. TĂ”epoolest, soovin keskkonda taastada. Keskkonna mĂ”istesse kuulub ka Postgressi pĂ”hiversioon.
  • Teine osa on meie teadusuuringute objekt. See on andmebaas. Selle saab luua mitmel viisil. NĂ€itan, kuidas.
  • Kolmas osa on koormus. See on kĂ”ige keerulisem hetk.
  • Ja neljas osa on see, mida me kontrollime, st millega me vĂ”rreldes töötame. Oletame, et saame konfiguratsioonis muuta ĂŒhte vĂ”i mitut parameetrit, vĂ”i saame luua indeksi jne.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Me alustame eksperimenti. Siin on pg_stat_statements. Vasakul on see, mis oli. Paremal on see, mis on nĂŒĂŒd.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Vasakul default_statistics_target = 100, paremal = 1 000. Me nĂ€eme, et see aitas meid. Üldiselt on kĂ”ik 8 % paremaks muutunud.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Kuid kui me scrollime allapoole, siis seal on pgBadger vĂ”i pg_stat_statements-i pĂ€ringugrupid. Siin on kaks varianti. Me nĂ€eme, et mĂ”ni pĂ€ring on langenud 88 %. Ja siin tuleb inseneri lĂ€henemine. Saame sĂŒgavamale kaevuda, sest on huvitav, miks see langes. Tuleb mĂ”ista, mis statistika oli. Miks suuremad buketid statistikas toovad halvemad tulemused.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

VÔi me ei kaevu, vaid teeme 'ALTER TABLE 
 ALTER COLUMN' ja toome tagasi 100 buketti selle veeru statistikas. Ja edasi saame veel eksperimendi kÀigus veenduda, et see lahendus aitas. KÔik. See on inseneri lÀhenemine, mis aitab meil nÀha pilti ja teha otsuseid andmete, mitte intuitsiooni pÔhjal.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

MĂ”ned nĂ€ited teistest valdkondadest. Testides on CI-testid olnud juba aastaid. Ükski projekt ei suuda enam mĂ”istlikult eksisteerida ilma automaatsete testideta.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Teistes tööstusharudes: lennunduses, autotööstuses, kui testime aerodĂŒnaamikat, on meil ka vĂ”imalus eksperimente teha. Me ei hakka kohe jooniste jĂ€rgi midagi kosmosesse saatma ega tooma autot kohe teele. NĂ€iteks on olemas aerodĂŒnaamiline tunnel.

Teiste valdkondade vaatluste pÔhjal saame teha jÀreldusi.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Esiteks, meil on spetsiaalne keskkond. See on tootmisprotsessile lĂ€hedane, kuid mitte tĂ€iesti sama. Selle peamine omadus on, et see peaks olema odav, korduv ja vĂ”imalikult automatiseeritud. Lisaks peavad olema erivahendid detailseks analĂŒĂŒsiks.

TĂ”enĂ€oliselt, kui me lennuki kĂ€ivitame ja lendame, on meil vĂ€hem vĂ”imalusi uurida iga millimeetrit tiiva pinnast kui aerodĂŒnaamilises tunnelis. Meil on rohkem vahendeid diagnostikaks. Saame endale lubada rohkem kĂ”ike rasket, mida me ei saa lennuki Ă”hus olles kaasas kanda. Sama kehtib ka Postgresi puhul. Me saame mĂ”nes olukorras katsetuse kĂ€igus aktiveerida otsese pĂ€ringute logimise. Ja me ei soovi seda tootmises teha. VĂ”ib-olla aktiveerime selle plaanide puhul auto_explaini kaudu.

Ja nagu ma juba ĂŒtlesin, kĂ”rge automatiseerituse tase tĂ€hendab, et me vajutasime nuppu ja kordasime. Nii peab see olema, et katsetusi oleks palju ja et see oleks pidev protsess.

Nancy CLI – andmebaasikatsetuste alussamm.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Ja nii me sellise asja tegime. T. e. ma rÀÀkisin nendest ideedest juunis, peaaegu aasta tagasi. Ja meil on juba Open Source'is nii nimetatud Nancy CLI. See on alus andmebaasalaste laborite ehitamiseks.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Nancy - See on Open Source'is, Gitlabis. VÔite vaadata, vÔite proovida. Olen slaidides lingi jÀtnud. Saate sellele klikkida ja seal ongi. help kÔigi parameetrite kohta.

Muidugi, seal on veel palju arendustööd. Ideid on palju. Kuid see, mida me juba praktiliselt igapĂ€evaselt kasutame, on juba olemas. Ja kui meil tekib mĂ”te – mis juhtub, kui kustutame 40 000 000 rida, kui kĂ”ik takerdub IO-sse, siis saame katsetada ja vaadata lĂ€hemalt, et mĂ”ista, mis toimub, ning seejĂ€rel proovida seda jooksvalt parandada. Ehk teeme katse. NĂ€iteks kohandame midagi ja vaatame, mis lĂ”pptulemus on. Ja seda me teeme mitte produktsioonis. See on idee sisu.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Kus see vÔiks töötada? See vÔib töötada kohalikult, st seda saab teha kuskil, isegi MacBookil. Vajalik on Docker, lÀhme. Ja kÔik. Saame kÀivitada mingisuguses instance'is riistvara peal vÔi virtuaalkeskkonnas, kus iganes.

Ja on ka vĂ”imalus kaugjuhtida Amazonis EC2 instantsul, spottides. See on vĂ€ga hea vĂ”imalus. NĂ€iteks tegime eile rohkem kui 500 katset i3 instantsil, alustades kĂ”ige vĂ€iksemast ja lĂ”petades i3-16-xlarge'iga. Ja need 500 katset maksid meile 64 dollarit. IgaĂŒhe kestus oli 15 minutit. Seega, tĂ€nu sellele, et kasutatakse spotte, on see vĂ€ga odav – 70% allahindlus, Amazon peab tasu sekundite kaupa. Saate teha palju. Saate teha tĂ”elist uurimistööd.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Ja kolm peamist Postgresi versiooni on toetatud. Pole nii keeruline viia ellu mÔnda vana ja ka uut 12. versiooni.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Objekti saame mÀÀrata kolme viisi. Need on:

  • Dump/sql-fail.
  • Peamine viis on PGDATA katalooge kloonida. Üldjuhul vĂ”etakse see varundusserverist. Kui teil on normaalsed binaarsed varukoopiad, saate sealt kloone teha. Kui teil on pilveteenused, siis hoolitseb selle eest teie eest pilveteenus nagu Amazon ja Google. See on kĂ”ige olulisem viis tĂ”elise tootmisprotsessi kloonide jaoks. Me just selle meetodi kaudu kĂ€ivitame.
  • Ja viimane meetod sobib teaduslikeks uuringuteks, kui on soov aru saada, kuidas Postgres mingit funktsiooni töötab. See on pgbench. Sa saad genereerida pgbenchiga. See on lihtsalt ĂŒks valik «db-pgbench». Sa ĂŒtled, milline on skaala. Ja kĂ”ik genereeritakse pilves, nagu on öeldud.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Ja koormus:

  • Koormust saame tĂ€ita ĂŒhes SQL voos. See on kĂ”ige primitiivsem meetod.
  • VĂ”i vĂ”ime koormust emuleerida. Ja me saame emuleerida seda eelkĂ”ige jĂ€rgmiselt. Me peame koguma kĂ”ik logid. Ja see on valus. Ma nĂ€itan, miks. Ja pgreplay abil, mis on integreeritud Nancy'sse, esitame need.
  • VĂ”i teine variant. Nii öeldud kĂ€sitöökoormus, mida me teeme teatud pingutusega. AnalĂŒĂŒsides meie praegust koormust tootmissĂŒsteemis, tĂ”mbame vĂ€lja kĂ”ige olulisemad pĂ€ringugrupid. Ja pgbench abil saame emuleerida seda koormust laboris.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

  • VĂ”i peame tĂ€itma mĂ”ne SQL pĂ€ringu, st kontrollime mingit migratsiooni, loome indeksi, teeme ANALYZE. Ja vaatame, mis oli enne ja pĂ€rast vaakumit. ÜhesĂ”naga, ĂŒkskĂ”ik milline SQL.
  • VĂ”i muudame konfiguratsioonis ĂŒhte vĂ”i mitut parameetrit. Saame paluda, et kontrollitaks nĂ€iteks 100 vÀÀrtust Amazonis meie terabaidi andmebaasi jaoks. Ja mĂ”ne tunni pĂ€rast on teil tulemus. TĂŒĂŒpiliselt kulub terabaidi andmebaasi kĂ€ivitamiseks mitmeid tunde. Kuid arenduses on meil patch, mille kaudu on vĂ”imalik seeria, st saate jĂ€rjestikuselt samal serveril sama pgdata kasutada ja testida. Postgres restardib, vahemĂ€lu tĂŒhjendatakse. Ja saate koormust testida.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

  • Saabub kataloog, kus on palju erinevaid faile, alustades pg snapshottidest.stat***. Ja seal on kĂ”ige huvitavam – pg_stat_statements ja pg_stat_kcacke. Need on kaks laiendust, mis analĂŒĂŒsivad pĂ€ringute tegemist. Ja pg_stat_bgwriter sisaldab mitte ainult pgwriteri statistikat, vaid ka checkpoint'i statistikat ja teavet selle kohta, kuidas taustprotsessid puhtaid puhvrisid nimetavad. Seda kĂ”ike on huvitav uurida. NĂ€iteks, kui seadistame shared_buffers, siis on vĂ€ga huvitav vaadata, kui palju seal kedagi vĂ€lja tĂ”rjutakse.
  • Saabuvad ka Postgresi logid. Kaks logi – ettevalmistuslogi ja koormuse mĂ€ngimise logi.
  • Suhteliselt uus funktsioon – FlameGraphs.
  • Kui olete kasutanud pgreplay vĂ”i pgbench koormuse simuleerimise valikuid, siis on see nende loomulik vĂ€ljund. NĂ€ete latency ja TPS-i. Saate aru, kuidas nad seda nĂ€gid.
  • SĂŒsteemi teave.
  • PĂ”hijĂ”udluse ja IO kontrollid. See on rohkem mĂ”eldud EC2 instantside jaoks Amazoni teenuses, kui soovite voolus kĂ€ivitada 100 identset instantsi ja seal lĂ€bi viia 100 erinevat testimist, siis on teil 10 000 eksperimenti. Peate veenduma, et te ei saa vigast instantsi, keda keegi teine juba piirab. Sellel riistvaral tegutsevad teised kasutajad ning teile jÀÀb vĂ€he ressursse. Sellised tulemused oleks parem kĂ”rvaldada. Ja just Alexey Kopytovi sysbenchi abil teeme mĂ”ned lĂŒhikesed kontrollid, mida saab hiljem vĂ”rrelda teistega, st saate aru, kuidas CPU ja IO end kĂ€itavad.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Millised on tehnilised raskused erinevate ettevÔtete nÀitel?

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Oletame, et soovime reaalset koormust logide abil korrata. SuurepÀrane idee, kui see on kirjutatud Open Source pgreplay'i abil. Kasutame seda. Kuid et see korralikult töötaks, peate lubama tÀieliku pÀringute logimise koos parameetrite ja ajastusega.

Seal on mĂ”ned raskused seoses duration ja timestampiga. Me jĂ€tame selle teema kĂ”rvale. Peamine kĂŒsimus on – kas te saate endale seda lubada vĂ”i mitte?

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

https://gist.github.com/NikolayS/08d9b7b4845371d03e195a8d8df43408

Probleem on selles, et see vÔib olla kergesti kÀttesaamatu. Te peate enne kÔike mÔistma, milline voog logisse kirjutatakse. Kui teil on pg_stat_statements, saate sellise pÀringuga (link on slaididel olemas) aru saada, kui palju baite kirjutatakse sekundis.

Me vaatame pÀringu pikkust. Me ignoreerime, et seal ei ole parameetreid, kuid me teame pÀringu pikkust ja teame, mitu korda sekundis see tÀidetakse. Nii saame hinnata, kui palju baite sekundis kirjutatakse. Me vÔime eksida kahes kahekordse vÔrra, kuid mÀÀrame tÀpselt selle jÀrjekorra.

Me nĂ€eme, et 802 korda sekundis seda pĂ€ringut tĂ€idetakse. Ja me nĂ€eme, et bytes_per sec – 300 kB/s kirjutatakse pluss miinus. Ja tavaliselt suudame sellist voogu endale lubada.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Aga! Asi on selles, et on erinevaid logimissĂŒsteeme. Ja vaikimisi on inimestel tavaliselt "syslog".

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Ja kui teil on syslog, siis vĂ”ib teil olla selline pilt. Me vĂ”tame pgbench'i, lĂŒlitame sisse pĂ€ringute logimise ja vaatame, mis juhtub.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Ilma logimiseta on see vasakul kĂŒlg. Me saavutasime 161 000 TPS. Syslogiga – Ubuntu 16.04 Amazonis saavutasime 37 000 TPS. Ja kui me muudame kahel muul moel logimist, on olukord oluliselt parem. Ehkki me ootasime, et see vĂ€heneb, ei olnuks see siiski nii drastiline.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Ja CentOS 7 puhul, kus osaleb ka journald, muutes logid binaarsesse formaati mugavaks otsimiseks jne, on olukord isegi hullem, TPS kukub 44 korda.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Ja see on see, millega inimesed elavad. Ja sageli on ettevÔtetes, eriti suurtes, seda vÀga raske muuta. Kui saate syslogist lahkuda, siis lahkuge sellest kindlasti.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

  • Hinnake IOPS-i ja kirjutusvoogu.
  • Kontrollige oma sĂŒsteemi logimist.
  • Kui prognoositav koormus on liiga suur, kaaluge proovide vĂ”tmise vĂ”imalust.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Meil on pg_stat_statements. Nagu ma ĂŒtlesin, peab see kindlasti olemas olema. Ja me saame iga pĂ€ringugrupi spetsiaalselt failis kirjeldada. SeejĂ€rel saame kasutada pgbenchis vĂ€ga mugavat funktsiooni – vĂ”imalust sisestada mitu faili valiku „-f” kaudu.

Ta mĂ”istab palju «-f». Ja saab öelda «@» lĂ”pus, milline osa igast failist peaks olema. St me saame öelda, et nĂŒĂŒd teosta seda 10% juhtudest, ja seda 20%. Ja see tuletab meid lĂ€hemale sellele, mida me nĂ€eme tootmises.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Kuidas me saame aru, mis meil tootmises on? Milline osa ja mis? Siin on natuke kĂ”rvalekaldumine. Meil on veel ĂŒks toode. postgres-checkup. Samuti on see pĂ”hineb Open Source'il. Ja me arendame seda aktiivselt praegu.

See sĂŒndis veidi muudel pĂ”hjustel. PĂ”hjustel, et jĂ€lgimine on ebapiisav. St sa tuled, vaatad baasi, vaatad probleeme, mis on. Ja tavaliselt teed health_check’i. Kui oled kogenud DBA, siis teed health_check’i. Vaatasid indeksite kasutust jne. Kui sul on OKmeter, siis on kĂ”ik suurepĂ€rane. See on suurepĂ€rane jĂ€lgimine Postgres’i jaoks. OKmeter.io – palun installige see, seal on kĂ”ik vĂ€ga hĂ€sti tehtud. See on tasuline.

Kui sul seda ei ole, siis tavaliselt sul pole palju, mida on. JĂ€lgimises on tavaliselt olemas CPU, IO ja seda ka tingimustega, ja kĂ”ik. Aga meil on vaja rohkem. Me peame nĂ€gema, kuidas töötab automaatne vakuum, kuidas töötab kontrollpunkt, IO-s peame eraldama kontrollpunkti bgwriter’ist ja taustprotsessidest jne.

Probleem on see, et kui sa aitad mÔnda suurt ettevÔtet, ei saa nad midagi kiiresti rakendada. Nad ei saa kiiresti osta OKmeteri. VÔib-olla ostavad nad selle kuue kuu pÀrast. Nad ei saa kiiresti installida mingisuguseid pakette.

Ja meil tekkis mĂ”te, et vajame sellist spetsiaalset tööriista, mis ei nĂ”ua mingit installimist, st te ei pea tootmisse midagi paigaldama. Installige see oma sĂŒlearvutisse vĂ”i jĂ€lgimisserverisse, kust selle kĂ€ivitada. Ja see analĂŒĂŒsib palju asju: operatsioonisĂŒsteemi, failisĂŒsteemi ja ise Postgres'i, tehes kergeid pĂ€ringuid, mida saab otse tootmises kasutada ja mis ei too kaasa purunemist.

Me nimetame seda Postgres-checkup'iks. Kui meditsiiniliselt, siis see on regulaarne heaolu kontroll. Kui autotemaatika kontekstis, siis – see on nagu hooldus. Sa teed autole hooldust iga kuue kuu vĂ”i aasta tagant, sĂ”ltuvalt markist. Kas sa teed oma andmebaasile hooldust? St kas sa teed regulaarselt sĂŒvitsi minevat uurimist? Seda on vaja teha. Kui sa teed varukoopiaid, siis tee ka checkup, see on sama oluline.

Ja meil on selline tööriist. See hakkas aktiivselt arenema alles kolm kuud tagasi. See on veel noor, kuid seal on palju kasulikku.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Koondame kĂ”ige "mĂ”jukamad" pĂ€ringugrupid – raport K003 Postgres-checkup-is

Ja seal on raportite grupp K. Praegu on kolm raportit. Ja seal on ka raport K003. Seal on pg_stat_statements-i tipp, sorteeritud total_time jÀrgi.

Kui sorteerime pĂ€ringugruppe total_time jĂ€rgi, nĂ€eme tipus gruppi, mis koormab meie sĂŒsteemi kĂ”ige rohkem, st tarbib rohkem ressursse. Miks ma rÀÀgin pĂ€ringugruppidest? Kuna me eemaldame parameetrid. Need ei ole enam pĂ€ringud, vaid pĂ€ringugrupid, st need on abstraktsed.

Ja kui optimeerime ĂŒlevalt alla, kergendame oma ressursse ja lĂŒkkame edasi aega, millal peame uuendama. See on vĂ€ga hea viis raha sÀÀsta.

VÔib-olla ei ole see vÀga hea viis kasutajakogemuse osas, kuna me ei pruugi nÀha haruldasi, kuid vÀga ebameeldivaid juhtumeid, kus inimene ootas 15 sekundit. KokkuvÔttes on need nii haruldased, et me ei nÀe neid, kuid samas tegeleme ressurssidega.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Mis toimus selles tabelis? Me tegime kaks lÔikesalvestust. Postgres_checkup arvutab iga mÔÔtme, nagu total-time, calls, rows, shared_blks_read jne, erinevuse. KÔik on arvutatud. Pg_stat_statementsil on suur probleem, et ta ei mÀleta, millal seda lÀhtestati. Kui pg_stat_database mÀletab, siis pg_stat_statements ei mÀleta. Te nÀete seal 1 000 000 numbrit, aga kust me selle saime, pole teada.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Siin me teame, et meil on kaks lĂ”ikesalvestust. Me teame, et selles olukorras oli erinevus 56 sekundit. VĂ€ga vĂ€ike aeg. Total_time’i jĂ€rgi sorteeritud. Edasi saame me diferentseerida, st jagame kĂ”ik mÔÔtmed durationiga. Kui me iga mÔÔtme jagame durationiga, saame kutsungite arvu sekundis.

Edasi on total_time per second – see on minu lemmik mÔÔde. See mÔÔdetakse sekundites, st kui palju sekundeid kulus meie sĂŒsteemil selle pĂ€ringugrupi tĂ€itmiseks sekundis. Kui te nĂ€ete seal rohkem kui ĂŒks sekund sekundis, tĂ€hendab see, et vajadusi on rohkem kui ĂŒks tuum. See on vĂ€ga hea mÔÔde. Te saate aru, et sellele isikule on nĂ€iteks vajalik vĂ€hemalt kolm tuuma.

See, this is our know-how; I haven't seen anything like it before. Notice – it's very simple – second by second. Sometimes, when your CPU is at 100%, it's half an hour per second, meaning you've spent half an hour on just this request.

Next, we see rows per second. We know how many rows were returned per second.

And another interesting aspect. How many shared_buffers we read per second from the shared_buffers itself. The hits were already there, while the rows we took from the operating system's cache or from the disk. The first option is fast, while the second might be fast or might not, depending on the situation.

The second method of differentiation – we divide the number of requests in this group. In the second column, you will always have one request divided by the request. And then it gets interesting – how many milliseconds it took for this request. We know the average behavior of this request. It required 101 milliseconds for each request. This is a traditional metric we need for understanding.

Kui palju ridu iga pÀring keskmiselt tagastas. NÀeme, et see grupp tagastab 8. Kui palju keskmiselt vahemÀlust tuli ja loeti. NÀeme, et kÔik on suurepÀraselt vahemÀlus. Ainult hitid esimese grupi jaoks.

Ja iga rea neljas alamrida – see on protsent kogu koguarvust. Meil on calls. Ütleme, et 1 000 000. Ja me saame aru, kui suur on selle grupi panus. NĂ€eme, et antud juhul on esimese grupi panus vĂ€iksem kui 0,01%. See tĂ€hendab, et see on nii aeglane, et me ei nĂ€e seda ĂŒldpildis. Teine grupp aga – 5% kĂ”igist kutsumistest. See tĂ€hendab, et 5% kĂ”igist kutsumistest on teine grupp.

Ka total_time on huvitav. Esimese grupi pĂ€ringutele kulutasime 14% kogu tööajast. Teisele grupile – 11% jne.

Ma ei hakka detailidesse sĂŒvenema, kuid seal on nĂŒansse. Me nĂ€itame ĂŒlal viga, sest kui me vĂ”rdleme, vĂ”ivad snapshotid muutuda, st mĂ”ned pĂ€ringud vĂ”ivad kaduda ja teises ei pruugi neid enam olla, aga mĂ”ned vĂ”ivad uued ilmuda. Ja me seal arvutame vea. Kui nĂ€ete 0, siis on see hea. Vigu ei ole. Kui veaprotsent on kuni 20%, on see OK.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Edasi liikudes, naaseme meie teema juurde. Peame koostama töökoormuse. Alustame ĂŒlevalt alla, kuni jĂ”uame 80% vĂ”i 90% -ni. TĂŒĂŒpiliselt on see 10-20 gruppi. Ja teeme failid pgbench'i jaoks. Seal kasutame juhuslikku (random) lĂ€henemist. Kahjuks ei toimi see alati. Postgres 12-s on selle lĂ€henemise rakendamiseks rohkem vĂ”imalusi.

Nii kogume 80-90% kokku total_time-st. Mis jÀrgmiseks panna «@»-le? Vaatame kÔnesid, jÀlgime protsente ja saame aru, et siin peaks olema teatud protsent. Nendest protsentidest saame aru, kuidas igat faili tasakaalustada. PÀrast seda kasutame pgbench'i ja alustame tööd.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Meil on veel K001 ja K002.

K001 – see on ĂŒks suur rida koos nelja alarĂŒhmaga. See iseloomustab kogu meie koormust. Vaadake teist veergu ja teist alarĂŒhma. NĂ€eme, et see on umbes 1,5 sekundit sekundis, st kui on kaks tuuma, siis on see hea. Koormus on umbes 75%. Ja see töötab nii. Kui meil on 10 tuuma, siis oleme tĂ€iesti rahulikud. Nii saame ressursse hinnata.

K002 – seda nimetame pĂ€ringute klassideks, st SELECT, INSERT, UPDATE, DELETE. Ja eraldi SELECT FOR UPDATE, kuna see lukustab.

Siit vÔime jÀreldada, et SELECT'i tavalised lugemised moodustavad 82% kÔigist kutsumistest, kuid tarbivad ainult 74% total_time'ist. See tÀhendab, et neid kutsutakse palju, kuid nad tarbivad vÀhem ressursse.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Ja naaseme kĂŒsimuse juurde: «Kuidas valida Ă”igesti shared_buffers?». Olen mĂ€rganud, et enamikki benchmark'e ehitatakse idee pĂ”hjal – vaatame, milline on lĂ€bilaskevĂ”ime. Seda mÔÔdetakse tavaliselt TPS vĂ”i QPS'iga.

Ja me pĂŒĂŒame, kasutades seadistusi, autolt pigistada vĂ”imalikult palju tehinguid sekundis. Siin on just 311 sekundis SELECT'i jaoks.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Kuid keegi ei sÔida tööle ja tagasi koju autoga tÀis speeds. See on rumal. Nii on ka andmebaasidega. Me ei tohiks sÔita maksimaalsel kiirusel, keegi ei tee seda. Keegi ei ela tootmises, kus CPU on 100%. Kuigi vÔib-olla on keegi, kes elab, kuid see ei ole hea.

Idee on selline, et tavaliselt kasutame me umbes 20% oma vĂ”imalustest, soovitatavalt mitte ĂŒle 50%. PĂŒĂŒame optimeerida reageerimisaega meie kasutajate jaoks eelkĂ”ige. St. me peame oma kĂ€si keerama nii, et 20% kiirusel oleks minimaalne latentsus, tinglikult. See on idee, mida pĂŒĂŒame ka oma katsetes rakendada.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Ja lÔpetuseks soovitused:

  • Kohustuslikult tehke Database Lab.
  • VĂ”imaluse korral tehke see nĂ”udmise alusel, et see tööle vajutada teatud ajaks - proovige ja siis visake minema. Kui teil on pilved, siis see on iseenesest mĂ”istetav, s.t. omage palju seismist.
  • Olge uudishimulikud. Ja kui midagi ei klapi, kontrollige katsetega, kuidas see kĂ€itub. Nancy't saab kasutada, et end harida ja kontrollida, kuidas andmebaas töötab.
  • Ja sihtige minimaalset reageerimisaega.
  • Ärge kartke Postgresi lĂ€htekoodide ees. Kui töötate lĂ€htekoodidega, peate oskama inglise keelt. Seal on palju kommentaare, kĂ”ik on selgitatud.
  • Ja kontrollige andmebaasi tervist regulaarselt, vĂ€hemalt kord kolme kuu jooksul kĂ€sitsi vĂ”i Postgres-checkupiga.

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

KĂŒsimused

AitÀh vÀga palju! VÀga huvitav asi.

Kaks asja.

Jah, kaks tĂŒkki. Ainult et ma ei saanud tĂ€ielikult aru. Kui me Nancy'ga töötame, saame me reguleerida ainult ĂŒhte parameetrit vĂ”i terve grupi korraga?

Meil on delta-konfiguratsiooniparameeter. Sinna saad keerata nii palju kui soovid. Kuid tuleb mÔista, et kui muudatusi on palju, vÔid teha valeid jÀreldusi.

Jah. Miks ma kĂŒsisin? Sest eksperimente on keeruline teha, kui sul on ainult ĂŒks parameeter. Sa reguleerid seda, vaatad, kuidas see töötab. HÀÀlestad selle. Siis hakkad jĂ€rgmist muutma.

Samas saab korraga reguleerida, kuid see sĂ”ltub olukorrast, muidugi. Siiski on parem testida ĂŒhte idee. Meil tekkis eile idee. Olime vĂ€ga sarnases olukorras. Kaks konfiguratsiooni. Ja me ei saanud aru, miks oli suur erinevus. Ja tekkis idee, et peaksime kasutama dikotoomiat, et jĂ€rjestikku mĂ”ista ja leida, mis vahe on. Saame kohe poole parameetritest muuta sama sarnaseks, siis veerandi jne. KĂ”ik on paindlik.

Ja on veel kĂŒsimus. Projekt on noor, areneb. Dokumentatsioon on juba valmis, kas on olemas detailne kirjeldus?

Ma tegin sinna spetsiaalselt lingi parameetrite kirjeldusele. See on olemas. Kuid palju on veel puudu. Otsin kaasamĂ”tlejaid. Ja ma leian neid, kui esindan. See on vĂ€ga Ă€ge. Keegi töötab juba minuga, keegi aitas ja tegi midagi. Ja kui see teema teid huvitab, andke mulle kindlasti tagasisidet – mida on puudu.

Kui labori Àra teeme, vÔib-olla tuleb tagasiside. NÀeme. AitÀh!

Tere! AitÀh ettekande eest! MÀrkasin, et Amazoni tugi on olemas. Kas plaanitakse ka GSP tuge?

Hea kĂŒsimus. Oleme alustanud. Ja oleme hetkeks peatunud, sest soovime raha sÀÀsta. Toetust pakutakse localhost'is töötamise kaudu. Saate ise luua instantsi ja töötada kohalikult. Muide, just nii me teeme. Getlabs jagan, seal GSP peal. Kuid me ei nĂ€e praegu mĂ”tet sellise orkestreerimise tegemiseks, kuna Google'il ei ole odavaid spot'ide pakkumisi. Seal on ??? instantsid, kuid nendele kehtivad piirangud. Esiteks on alati ainult 70% allahindlus ja seal ei saa hinna osas mĂ€ngida. Spot'ide puhul tĂ”stame hinda 5-10% vĂ”rra, et vĂ€hendada tĂ”enĂ€osust, et teid ĂŒmber lĂŒkatakse. See tĂ€hendab, et spot'ide puhul sÀÀstate raha, kuid need vĂ”ivad igal ajal Ă€ra vĂ”tta. Kui teie hind on veidi kĂ”rgem kui teistel, surete hiljem. Google'il on tĂ€ielikult erinev spetsiifika. Ja veel on ĂŒks vĂ€ga halb piirang – nad elavad ainult 24 tundi. Ja mĂ”nikord tahame katset teha 5 pĂ€eva. Kuid spot'ide puhul on see vĂ”imalik, mĂ”nikord elavad need kuude kaupa.

Tere! AitÀh ettekande eest! Te mainisite checkup'i. Kuidas te arvutate vigu stat_statements?

VĂ€ga hea kĂŒsimus. Ma vĂ”in vĂ€ga detailselt nĂ€idata ja rÀÀkida. LĂŒhidalt – me vaatame, kuidas on muutunud rĂŒhmade pĂ€ringute kogum: kui palju on kadunud ja kui palju on uusi tekkinud. Ja seejĂ€rel vaatame kahte mÔÔdikut: total_time ja calls, seega on seal kaks viga. Ja vaatame, milline on kadunud rĂŒhmade panus. Seal on kaks alammoodi: lahkunud ja saabunud. Vaatame, kui suur on nende panus kogu pilti.

Kas te ei karda, et see seal pöörleb kaks-kolm korda ajavahemikus snapƥottide vahel?

St. nad registreerusid uuesti vÔi kuidas?

NĂ€iteks, see pĂ€ring on juba ĂŒks kord vĂ€lja tĂ”rjuda, siis tuli tagasi ja tĂ”rjuti taas vĂ€lja, siis tuli veel kord tagasi ja tĂ”rjuti jĂ€lle vĂ€lja. Ja te siin midagi arvutasite, kus see kĂ”ik on?

Hea kĂŒsimus, tuleb vaadata.

Ma tegin sarnast asja. Muidugi lihtsamat, ma tegin seda ĂŒksi. Aga mul tuli nullida, teha reset stat_statements ja orienteeruda snapĆĄoti hetkel, et seal oleks vĂ€hem teatud osa, et see ei oleks ikkagi jĂ”udnud lakke, kui palju stat_statements-ite vĂ”ib koguneda. Ja ma lĂ€htun, et tĂ”enĂ€oliselt ei ole midagi vĂ€lja tĂ”rjutud.

Jah-jah.

Aga ma ei mÔista, kuidas vÔiks midagi muud usaldusvÀÀrselt teha.

Kahjuks ei mÀleta ma tÀpselt - kas me seal kasutame pÀringu teksti vÔi queryid pg_stat_statements ja selle jÀrgi juhindume. Kui me juhindume queryid'ist, siis peaksime vÔrreldes sarnaseid asju.

Ei, see vÔib mitme vÔrgu vahel vÀlja juhtida ja uuesti tagasi tulla.

Kas selle sama id-ga?

Jah.

Me uurime seda. Hea kĂŒsimus. Peame uurima. Kuid seni, mida me nĂ€eme, on meil kas kirjutatud 0...

See on muidugi haruldane juhtum, aga olin jahmunud, kui kuulsin, et stat_statements seal vÔib vÀlja juhtida.

Pg_stat_statements'is vÔib palju olla. Oleme kohtunud sellega, et kui teil track_utility = on, siis jÀlgitakse ka teie setteid.

Jah, muidugi.

Ja kui teil on random java hibernate, siis hakkab seal lukuklahvi tabel lukustuma. Ja niipea, kui te keelate vĂ€ga koormatud rakenduse, on teil 50-100 gruppi. Ja seal on enam-vĂ€hem kĂ”ik stabiilne. Üks viis selle vastu vĂ”itlemiseks on pg_stat_statements.max suurendada.

Jah, aga tuleb teada, kui palju. Ja kuidagi peab selle ĂŒle jĂ€lgima. Mina teen nii. T. e. mul on pg_stat_statements.max. Ja vaatan, et ma snapshot'i ajal ei ole jĂ”udnud 70% juurde. HĂ€sti, see tĂ€hendab, et me ei ole midagi kaotanud. Teeme reseti. Ja kogume uuesti. Kui jĂ€rgmises snapshot'is on vĂ€hem kui 70, siis tĂ€hendab, et tĂ”enĂ€oliselt ei ole me jĂ€lle midagi kaotanud.

Jah. Vaikimisi on praegu 5000. Ja paljudele sellest piisab.

Tavaliselt – jah.

Video:

Vaata videot

P.S. Isiklikult lisan, et kui Postgresis on konfidentsiaalsed andmed ja neid ei tohi testkeskkonda viia, siis vÔib kasutada PostgreSQL Anonymizer. Skeem on umbkaudu jÀrgmine:

Tööstuslik lÀhenemine PostgreSQL-i hÀÀlestamisele: eksperimendid andmebaasidega". Nikolai Samohvalov

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster