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

Soovitame tutvuda Nikolai Samohvalovi ettekande "Tööstuslik lÀhenemine PostgreSQL-i tuunimisele: eksperimendid andmebaasidega" kokkuvÔttega.

Shared_buffers = 25% – kas see on palju vĂ”i vĂ€he? VĂ”i just paras? Kuidas mĂ”ista, kas see – ĂŒsna vananenud – soovitus sobib teie konkreetsele juhtumile?

On aeg lĂ€heneda postgresql.conf parameetrite valimise kĂŒsimusele "tĂ€iskasvanulikult". Mitte pimedate "autotuunijate" vĂ”i vananenud nĂ”uannete abil artiklitest ja blogidest, vaid pĂ”hinedes:

  1. tÀpselt lÀbiviidud katsetele andmebaasides, mis viiakse lÀbi automatiseeritult, suure koguse ning tingimustes, mis on vÔimalikult lÀhedased "lahingutingimustele",
  2. sĂŒvateadmistele DBMS-i ja OS-i toimimistest.

Kasutades Nancy CLI (https://gitlab.com/postgres.ai/nancy), vaatleme konkreetset nĂ€idet – tuntud shared_buffers – erinevates olukordades, erinevates projektides ja proovime aru saada, kuidas optimaalselt seadistada meie infrastruktuuri, andmebaasi ja koormust.

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

RÀÀgime katsetest andmebaasidega. See on lugu, mis kestab veidi ĂŒle kuue kuu.

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

Natuke minust. Kogemus Postgresiga on ĂŒle 14 aasta. Olen asutanud mitmeid sotsiaalsete vĂ”rgustike ettevĂ”tteid. ÜkskĂ”ik kus on kasutatud ja kasutatakse Postgresit.

Samuti on RuPostgres grupil Meetup, 2. koht maailmas. JÔuame jÀrk-jÀrgult 2000 inimese lÀhedale. RuPostgres.org.

Ja erinevate konverentside raames, sealhulgas Highload, vastutan andmebaaside eest, sealhulgas Postgresi eest alates selle asutamisest.

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

Ja viimase paar aastat olen oma Postgresi konsultatsioonipraktikat taaselustanud 11 ajavööndis.

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

Ja kui ma seda paar aastat tagasi tegin, oli mul aktiivse kĂ€sitöö katkestus Postgresiga, tĂ”enĂ€oliselt alates 2010. aastast. Üllatusin, kui vĂ€he DBA igapĂ€evaelu on muutunud, kui palju on endiselt vaja palju kĂ€sitööd. Ja ma mĂ”tlesin kohe, et siin on midagi valesti, peaksime rohkem automatiseerima.

Kuna see kÔik toimus kaugjuhtimise teel, olid enamik kliente pilves. Ja palju on juba tÔeliselt automatiseeritud. Umbes sellest natuke hiljem. St. kÔik see viis mÔttele, et peaks olema rida tööriistu, st. mingi platvorm, mis automatiseerib praktiliselt kÔik DBA toimingud, et saaks hallata suurt hulka andmebaase.

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

Selles ettekandes ei kÀsitleta:

  • „HĂ”bedasi kuulikesi“ ja vĂ€iteid, nagu – seadke 8 GB vĂ”i 25% shared_buffers ja teil on kĂ”ik hĂ€sti. Shared_buffersi osas ei ole palju juttu.
  • HĂ€kkimise "sisutĂŒkkid".

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

Mis siis saab?

  • Saavad olema optimeerimise pĂ”himĂ”tted, mida me rakendame ja arendame. Saavad olema erinevad ideed, mis meil teel tekivad, ja erinevad tööriistad, mida me peamiselt Open Source'is loome, st aluse teeme Open Source'is. Veel enam, meil on toetustiketid, peaaegu kogu suhtlus toimib Open Source'is. Saate jĂ€lgida, mida me praegu teeme, mis tuleb jĂ€rgmise vĂ€ljaandega jne.
  • Samuti on olemas teatud kogemus nende pĂ”himĂ”tete, nende tööriistade kasutamisest mitmesugustes ettevĂ”tetes: alates vĂ€ikestest idufirmadest kuni suurte ettevĂ”teteni.

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

Kuidas see kÔik areneb?

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

Esiteks, DBA peamine ĂŒlesanne, peale instantside loomise tagamise, varukoopiate taastamise jne, on kitsaskohtade leidmine ja jĂ”udluse optimeerimine.

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

Praegu on see korraldatud nii. Me vaatame jĂ€lgimist, nĂ€eme midagi, mĂ”ned detailid jÀÀvad puudu. Me hakkame sĂŒvenema pĂ”hjalikumalt, tavaliselt kĂ€sitsi, ja mĂ”istame, mida sellega teha.

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

Ja on kaks lĂ€henemist. Pg_stat_statements on vaikimisi lahendus aeglaste pĂ€ringute tuvastamiseks. Ja Postgresi logide analĂŒĂŒs pgBadgeriga.

Igal lĂ€henemisel on tĂ”sised puudused. Esimese lĂ€henemise puhul on meil kĂ”ik parameetrid kĂ”rvale heidetud. Ja kui me nĂ€eme rĂŒhmi SELECT * FROM table where veerg on «?» vĂ”i «$», algusest peale Postgresi versioonis 10, ei tea me – kas see on indeksi skaneerimine vĂ”i jĂ€rjestikune skaneerimine. See sĂ”ltub vĂ€ga palju parameetrist. Kui paned sinna harvaesineva vÀÀrtuse, on see indeksi skaneerimine. Kui paned sinna vÀÀrtuse, mis katab 90% tabelist, on see ilmselgelt jĂ€rjestikune skaneerimine, sest Postgres tunneb statistikat. Ja see on pg_stat_statements tĂ”sine puudus, kuigi mingid tööd kĂ€ivad.

Logide analĂŒĂŒsi kĂ”ige olulisem puudus on see, et te ei saa endale lubada "log_min_duration_statement = 0", tavaliselt. Ja sellest me rÀÀgime ka. Seega, te ei nĂ€e kogu pilti. Ja mingi pĂ€ring, mis on vĂ€ga kiire, vĂ”ib tarbida tohutult palju ressursse, kuid te ei nĂ€e seda, kuna see jÀÀb teie kĂŒnnise alla.

Kuidas DBA lahendavad leitud probleemid?

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

NĂ€iteks leidsime mingi probleemi. Mida tavaliselt tehakse? Kui olete arendaja, siis teete midagi mingis instantsis, mis ei ole nii suures mahus. Kui olete DBA, siis teil on staging. Ja see vĂ”ib olla ainult ĂŒks. Ja ta on kuue kuu vĂ”rra maha jÀÀnud. Ja te arvate, et lĂ€hete tootmisesse. Ja isegi kogenud DBA-d kontrollivad pĂ€rast tootmises, replikas. Ja juhtub, et luuakse ajutine indeks, veendutakse, et see aitab, eemaldatakse see ja antakse arendajatele, et nad saaksid selle migreerimisfailidesse panna. Just selline jaburus toimub praegu. Ja see on hĂ€da.

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

  • Konfiguratsioonide hÀÀlestamine.
  • Indeksite kogumi optimeerimine.
  • SQL-pĂ€ringu muutmine (see on kĂ”ige keerulisem viis).
  • Ressursside lisamine (enamiku juhtude puhul kĂ”ige lihtsam viis).

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

Sellega on seotud vĂ€ga palju. Postgresis on palju tööriistu. Tuleb palju teada. Postgresis on palju indekseid, sealhulgas tĂ€nu sellele konverentsi korraldajatele. Ja seda kĂ”ike tuleb teada, ja see tekitab DBA-de seas tunnet, et DBA-d tegelevad musta maagia. T. e. tuleb kĂŒmme aastat tegutseda, et hakata seda normaalselt mĂ”istma.

Ja mina olen selle musta maagia vastane. Ma tahan, et oleks tehnoloogia, mitte oleks kÔike intuitiivselt.

Elu nÀited

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

Olen seda vÀhemalt kahes projektis jÀlginud, sealhulgas oma omas. JÀrjekordne blogipostitus teatab meile, et vÀÀrtus 1 000 default_statistict_target jaoks on hea. Hea, proovime tootmises.

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

Ja siin me, kasutades oma tööriista kaks aastat hiljem, katsetades andmebaasidega, millest tÀna rÀÀgime, saame vÔrrelda, mis oli ja mis on saanud.

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

Ja selleks peame looma eksperimendi. See koosneb neljast osast.

  • Esimene – keskkond. Me vajame riistvara. Ja kui ma tulen mĂ”nesse ettevĂ”ttesse ja sĂ”lmin lepingu, siis ĂŒtlen, et nad annaksid mulle sama riistvara, mis on tootmises. Iga teie meistri jaoks on mul vaja vĂ€hemalt ĂŒhte sellist riistvara. Olgu see virtuaalne masin Amasonis vĂ”i Google'is, vĂ”i tahan ma just sellist riistvara. T. e. tahan taastada keskkonna. Ja keskkonna mĂ”isted hĂ”lmavad Postgressi peaversiooni.
  • Teine osa – meie uuringute objekt. See on andmebaas. Seda saab luua mitmel viisil. NĂ€itan, kuidas.
  • Kolmas osa – koormus. See on kĂ”ige keerulisem hetk.
  • Ja neljas osa on see, mida me kontrollime, st millega me vĂ”rreldes hakkama saame. Oletame, et me saame konfiguratsioonis muuta ĂŒhte vĂ”i mitut parameetrit, vĂ”i saame luua indeksi jne.

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

Me alustame eksperimenti. Siin on pg_stat_statements. Vasakul on see, mis oli. Paremal on see, mis on saanud.

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

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

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

Aga kui me kerime allapoole, siis seal on pgBadgerist vĂ”i pg_stat_statements'ist pĂ€rinevad pĂ€ringute grupid. Siin on kaks varianti. Me nĂ€eme, et mĂ”ni pĂ€ring langes 88%. Ja siin on juba inseneriline lĂ€henemine. Me saame kaevuda sĂŒgavamale, sest see on huvitav, miks see langes. Tuleb mĂ”ista, mis seal statistikaga oli. Miks suurem hulga kaste statistikates viib halvematele tulemustele.

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

VÔi me ei pea kaevama, vaid saame teha "ALTER TABLE ... ALTER COLUMN" ja tuua tagasi 100 kasti selle veeru statistikas. Ja eksperimendi kÀigus saame veenduda, et see lahendus aitas. KÔik. See on inseneriline lÀhenemine, mis aitab meil nÀha pilti ja langetada otsuseid andmete, mitte intuitsiooni pÔhjal.

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

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

MĂ”ned nĂ€ited teistest valdkondadest. Testides on CI-testid juba aastaid. Ükski projekt ei tohiks enam mĂ”istlikus meelest elada ilma automaatsete testideta.

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

Teistes tööstusharudes: lennunduses, autotööstuses, kui katsetame aerodĂŒnaamikat, on meil samuti vĂ”imalik eksperimente teha. Me ei hakka kohe midagi plaanidest kosmosesse saatma ega viima mĂ”nda autot kohe maanteele. NĂ€iteks on olemas aerodĂŒnaamiline tunnel.

Teiste valdkondade jÀlgimistest saame jÀreldusi teha.

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

Esiteks on meil spetsiaalne keskkond. See on production'ile lĂ€hedane, kuid mitte liiga lĂ€hedane. Selle peamine omadus on see, et see peab olema odav, korduv ja maksimaalselt automatiseeritud. Veel peavad olema spetsiaalsed vahendid pĂ”hjalikuks analĂŒĂŒsiks.

TĂ”enĂ€oliselt, kui me lennukit tĂ”stsime ja lendame, on meil vĂ€hem vĂ”imalusi uurida iga millimeetri ulatust tiiva pinnal kui aerodĂŒnaamilises tĂșnnis. Meil on parem varustus diagnostikaks. Me saame lubada rohkem kaalu, mida me ei saa lennuki Ă”hus olles lubada. Niisamuti ka Postgresiga. Me saame mĂ”nel juhul eksperimentide kĂ€igus lubada tĂ€ielikku pĂ€ringulogimist. Ja me ei soovi seda tootmises teha. VĂ”ib-olla aktiveerime selle plaanide kaudu auto_explain abil.

Ja nagu ma ĂŒtlesin, kĂ”rge automatiseerimise tase tĂ€hendab, et me vajutame nuppu ja kordame. Nii peaks see olema, et oleks palju eksperimente ja see oleks voogesituses.

Nancy CLI – andmebaasistuudio alus

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

Ja me tegime sellise asja. Ehk siis rÀÀkisin neist ideedest juunis, peaaegu aasta tagasi. Ja meil on juba avatud lÀhtekoodiga Nancy CLI, mis on alus andmebaasi labori ehitamiseks.

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

Nancy — See on avatud lĂ€htekoodiga, Gitlabis. VĂ”ite öelda, et saate proovida. Andsin selle kohta lingi slaidides. Saate sellele klĂ”psata ja seal on help kĂ”igis parameetrites.

Muidugi on seal veel palju arenduses. Seal on palju ideid. Kuid see on juba see, mida me rakendame praktiliselt igapĂ€evaselt. Ja kui meil tekib idee – mis juhtub, kui kustutame 40 000 000 rida, ja kĂ”ik seisab IO-s, siis saame eksperimendi lĂ€bi viia ja sĂŒvitsi uurida, et mĂ”ista, mis toimub, ning proovida seda jooksvalt parandada. Ehk siis teeme eksperimenti. NĂ€iteks kohandame midagi ja vaatame, mis lĂ”puks vĂ€lja tuleb. Ja me ei tee seda tootmises. See on idee sisu.

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

Kus see vÔib toimida? See vÔib töötada kohapeal, st seda saab teha igal pool, isegi MacBookis. Vajalik on docker, saame minna. Ja kÔik. Saame selle kÀivitada mingis instantsis riistvaral vÔi virtuaalmasinas, kus iganes.

Ja on ka vĂ”imalus kĂ€ivitada kaugelt Amazonis EC2 instantsides, spotides. See on vĂ€ga tore vĂ”imalus. NĂ€iteks eile viisime lĂ€bi ĂŒle 500 eksperimendi i3 instantsiga, alustades kĂ”ige nooremast kuni i3-16-xlarge'ni. Ja need 500 eksperimenti maksid meile 64 dollarit. IgaĂŒks kestis 15 minutit. See tĂ€hendab, et kuna kasutatakse spote, on see vĂ€ga odav – 70% allahindlus, Amazonis on sekundipĂ”hine mÔÔtmine. Te saate teha vĂ€ga palju. Saate lĂ€bi viia tĂ”elist uuringut.

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

Ja kolme peamise versiooni Postgres toimetatakse. Pole vÀga keeruline tÀiendada mÔningaid vana ja uut 12. versiooni samuti.

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

Me saame objekti mÀÀrata kolmel viisil. Need on:

  • Dump/sql-fail.
  • Peamine viis on PGDATA kausta kloonimine. Reeglina vĂ”etakse see varunduss serverist. Kui teil on korralikud binaarsed varukoopiad, siis sealt saate kloone teha. Kui teil on pilved, siis teeb teie eest seda pilveteenus, nagu Amazon ja Google. See on peamine meetod reaalse tootmise kloonide jaoks. Me arendame seda viisil.
  • Viimane meetod sobib uuringuteks, kui on soov uurida, kuidas Postgresis mingi asi töötab. See on pgbench. Te saate seda genereerida pgbenchiga. See on lihtsalt ĂŒks valik 'db-pgbench'. Ütlete, millise skaalaga soovite töödelda. Ja kĂ”ik genereeritakse pilves, nagu öeldud.

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

Ja koormus:

  • Koormust saame tĂ€ita ĂŒhe SQL-voo kaudu. See on kĂ”ige primitiivsem meetod.
  • VĂ”i saame emuleerida koormust. Ja emuleerida saame peamiselt jĂ€rgmisel viisil. Me peame koguma kĂ”ik logid. Ja see on valulik. Ma nĂ€itan, miks. Ja pgreplay abil, mis on sisse ehitatud Nancy'sse, mĂ€ngime selle tagasi.
  • VĂ”i teine variant. Nii nimetatud kĂ€sitsi koormus, mida me teeme teatud jĂ”upingutustega. AnalĂŒĂŒsides meie praegust koormust tootmissĂŒsteemis, vĂ€lja tĂ”mmata populaarsed pĂ€ringugrupid. Ja pgbench abil saame laboratooriumis seda koormust emuleerida.

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

  • VĂ”i peame tĂ€itma mingi SQL, st me kontrollime mingit migratsiooni, loome indeksi, teostame ANALYZE. Ja vaatame, mis oli enne vaakumist ja pĂ€rast vaakumit. ÜhesĂ”naga, mis tahes SQL.
  • VĂ”i muudame konfiguraatoris ĂŒhte vĂ”i mitut seadet. Saame paluda, et kontrollitaks nĂ€iteks 100 vÀÀrtust Amazonis meie terabaidi andmebaasi jaoks. Ja mĂ”ne tunni pĂ€rast on teil tulemus. Üldiselt kestab terabaidi andmebaasi kĂ€ivitamine mitu tundi. Kuid arenduses on meil patch, meil on vĂ”imalik seeria, st saate jĂ€rjestikku samal serveril kasutada sama pgdata ja kontrollida. Postgres taaskĂ€ivitatakse, vahemĂ€lu tĂŒhi. Ja saate lasta koormust.

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

  • Saabub kataloog, kus on hulk erinevaid faile, alustades pg-snapshots.stat***. Ja seal on kĂ”ige huvitavamad – need on pg_stat_statements ja pg_stat_kcacke. Need on kaks laiendust, mis analĂŒĂŒsivad pĂ€ringuid. Ja pg_stat_bgwriter sisaldab mitte ainult pgwriter statistikat, vaid ka checkpoint'i ja seda, kuidas backend’id ise mustad vahemĂ€lud vĂ€lja tĂ”ukavad. Ja seda kĂ”ike on huvitav vaadata. NĂ€iteks kui seadistame shared_buffers'i, siis on vĂ€ga huvitav vaadata, kui palju keegi seal vĂ€lja tĂ”ukab.
  • Saabuvad ka Postgresi logid. Kaks logi – ettevalmistuse logi ja koormuse mĂ€ngimise logi.
  • Suhteliselt uus funktsioon – FlameGraphs.
  • Samuti, kui olete kasutanud pgreplay vĂ”i pgbench koormuse mĂ€ngimise variante, siis tuleb nende originaalne vĂ€ljund. Ja te nĂ€ete latentsust ja TPS-i. Saate aru, kuidas nad seda nĂ€gid.
  • Teave sĂŒsteemi kohta.
  • PĂ”hilised kontrollid CPU ja IO. See on rohkem EC2 eksemplaride jaoks Amazonis, kui soovite voos kĂ€ivitada 100 ĂŒhesugust eksemplari ja seal jooksutada 100 erinevat katset, siis teil on 10 000 katsetust. Ja peate veenduma, et te ei saa defektset eksemplari, mida keegi juba rĂ”hub. Sellel riistvaral aktiveerivad teised ja teie ressursid jÀÀvad vĂ€heseks. Sellised tulemused on parem kĂ”rvaldada. Ja just Aleksei Kopytovi sysbench'i abil teeme mĂ”ned lĂŒhikesed kontrollid, mis tulevad ja mida saab teistega vĂ”rrelda, st saate aru, kuidas CPU ja IO kĂ€ituvad.

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

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

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

Oletame, et tahame reaalset koormust logide abil korrata. SuurepĂ€rane idee, kui see on avatud lĂ€htekoodiga pgreplay’i peale kirjutatud. Me kasutame seda. Kuid et see korralikult töötaks, peate lubama tĂ€ieliku pĂ€ringute logimise parameetrite ja ajastusega.

Seal on mĂ”ned keerukused duration ja timestamp'i osas. Me jĂ€tame selle kĂ”igi köögilisest aspektist kĂ”rvale. Peamine kĂŒsimus on – kas saate endale seda lubada vĂ”i ei saa?

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

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

Probleem on selles, et see ei pruugi olla saadaval. Te peate esmalt mÔistma, millist voogu hakata logima. Kui teil on pg_stat_statements, saate sellise pÀringu abil (link saadaval esitluses) aru saada, kui palju byte'e kirjutatakse sekundis.

Me vaatame pÀringu pikkust. Me ei pööra tÀhelepanu sellele, et seal ei ole parameetreid, kuid me teame pÀringu pikkust ja teame, kui mitu korda sekundi jooksul see tÀidetakse. Seega saame umbkaudselt hinnata, kui palju byte'e sekundis. Me vÔime eksida kaks korda, kuid me saame selle meetodi abil kindlasti umbes arvu teada.

Me nĂ€eme, et see pĂ€ring tĂ€idetakse 802 korda sekundis. Ja me nĂ€eme, et bytes_per sec – 300 kB/s kirjutatakse pluss miinus. Ja tavaliselt saame sellise voolu endale lubada.

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

Aga! Asi on selles, et erinevaid logimise sĂŒsteeme on palju. Ja vaikimisi kasutavad inimesed tavaliselt 'syslog'.

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

Ja kui teil on syslog, vÔib teil olla selline pilt. VÔtame pgbench'i, aktiveerime pÀringute logimise ja vaatame, mis vÀlja tuleb.

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

Ilma logimiseta – see on vasak pool. Me saime 161 000 TPS. Syslog'i kasutades – see Ubuntu 16.04 Amazonis annab meile 37 000 TPS. Ja kui me muudame spetsiaalsete logimise meetodite kaheks, siis on olukord palju parem. See tĂ€hendab, et me ootasime langust, kuid mitte nii suurt.

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

Ja CentOS 7 puhul, kus ka journald osaleb, muutes logid binaarfookus koopiate otsimiseks jms, on seal olukord tĂ”eliselt kohutav – TPS langeb 44 korda.

Tööstuslik lÀhenemine PostgreSQL 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 hĂŒpata syslog'ist eemale, siis tehke seda.

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

  • Hinnake IOPS-i ja kirjutamisvoogu.
  • Kontrollige oma logimise sĂŒsteemi.
  • Kui prognoositud koormus on liiga suur, kaaluge sampeldamise varianti.

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

Meil on pg_stat_statements. Nagu ma ĂŒtlesin, peab see kindlasti olema. Ja me saame vĂ”tta ja iga pĂ€ringute rĂŒhma spetsiaalselt kirjeldada failis. Ja edasi saame kasutada pgbench'i vĂ€ga mugavat funktsiooni – mitu faili saab edastada valiku '-f' abil.

Ta mÔistab palju «-f». Ja vÔime öelda «@» abil, kui suur osa igast failist peaks olema. T. e. me saame öelda, et seda teostame 10 % juhtudest, ja seda 20 %. Ja see lÀheneb meile sellele, mida nÀeme tootmises.

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

Kuidas me saame aru, mis meil tootmises on? Kui suur on ja mida? Siin on see natuke kĂ”rvale kaldumine. Meil on veel ĂŒks toode. postgres-checkup. Ka see pĂ”hineb Open Source'is. Ja me arendame seda aktiivselt.

See tekkis pisut teistel pĂ”hjustel. SellepĂ€rast, et monitooring ei ole piisav. T. e. te tulete, vaatate andmebaasi, vaatate olemasolevaid probleeme. Ja tavaliselt teete health_check'i. Kui olete kogenud DBA, siis teete health_check'i. Vaadake indeksite kasutust jne. Kui teil on OKmeter, siis on suurepĂ€rane. See on suurepĂ€rane monitooring Postgres'i jaoks. OKmeter.io – palun, kasutage seda, seal on kĂ”ik vĂ€ga hĂ€sti tehtud. See on tasuline.

Kui seda ei ole, siis tavaliselt on teil vĂ€he, mis on. Monitooringus on tavaliselt ainult CPU, IO ja see ka ettevaatlikult, ja kĂ”ik. Aga meil on vaja rohkem. Me peame nĂ€gema, kuidas avakĂŒpsetamine töötab, kuidas kontrollpunkt töötab, IO-s tuleb eristada kontrollpunkti bgwriter'ist ja tagurpidi jne.

Probleem on see, et kui sa aitad mingi suure ettevÔttega, siis nad ei saa midagi kiiresti rakendada. Ei saa kiiresti osta OKmeterit. VÔib-olla ostavad nad selle kuue kuu pÀrast. Ei saa kiiresti paigaldada mingeid pakette.

Ja meil tuli idee, et me vajame sellist spetsiaalset tööriista, mis ei nĂ”ua midagi installimist, t. e. te ei pea tootmisesse midagi installima. Paigaldage see oma sĂŒlearvutisse vĂ”i jĂ€lgimisserverisse, kust te seda kĂ€ivitama hakkate. Ja see analĂŒĂŒsib palju asju: operatsioonisĂŒsteemi, failisĂŒsteemi ja Postgres'i, tehes kergeid pĂ€ringuid, mida saab tootmises jooksutada ja mis ei pĂ”hjusta sĂŒsteemi seiskumist.

Me nimetasime selle Postgres-checkup'iks. Kui rÀÀkida arstiteemal, siis see on regulaarne tervisekontroll. Kui rÀÀkida autode teemal, siis see on nagu tehniline ĂŒlevaatus. Teete oma autole tehnilise ĂŒlevaatuse iga kuue kuu vĂ”i aasta tagant, olenevalt margist. Aga kas teete tehnilist ĂŒlevaatust oma andmebaasile? T. e. kas teete regulaarselt sĂŒvaanalĂŒĂŒse? Seda tuleb teha. Kui teete varukoopiaid, siis tehke ka kontroll, see ei ole vĂ€hem oluline.

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

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

Kogume kĂ”ige „mĂ”jukamad” pĂ€ringute grupid – K003 aruanne Postgres-checkupis

Ja seal on K gruppide aruanne. Kolm aruannet hetkel. Ja seal on selline aruanne nagu K003. Seal on pg_stat_statements tipp, sorteeritud total_time jÀrgi.

Kui me sorteerime pĂ€ringute grupid total_time jĂ€rgi, nĂ€eme grupi, mis koormab meie sĂŒsteemi kĂ”ige enam, st tarbib rohkem ressursse. Miks ma kutsub neid pĂ€ringute gruppideks? Sest me oleme parameetrid vĂ€lja visanud. Need pole enam pĂ€ringud, vaid pĂ€ringute grupid, st need on abstraktne.

Ja kui me optimeerime ĂŒlevalt alla, kergendame oma ressurse ja lĂŒkkame edasi hetke, mil peame tegema uuenduse. See on vĂ€ga hea viis raha sÀÀsta.

VĂ”ib-olla ei ole see vĂ€ga hea viis kasutajate hoolitsemiseks, sest me ei pruugi nĂ€ha harvikuid, kuid vĂ€ga tĂŒĂŒtu juhtumeid, kui inimene ootas 15 sekundit. KokkuvĂ”ttes on need harvad, et me ei nĂ€e neid, kuid kasutame ressurssi.

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

Mis juhtus selle tabeliga? Me tegime kaks snapshots. Postgres_checkup teeb teile delta iga mÔÔtme jaoks: total-time, calls, rows, shared_blks_read jne. KÔik, delta on arvutatud. pg_stat_statements suur probleem on see, et ta ei mÀleta, millal see nulliti. Kui pg_stat_database mÀletab, siis pg_stat_statements ei mÀleta. Sa nÀed seal 1 000 000 arvu, kuid kust me selle arvutasime, me ei tea.

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

Ja siin me teame, meil on kaks snapshots. Me teame, et delta oli selle juhtumi puhul 56 sekundit. VÀga vÀike vahe. Sorteeritud total_time jÀrgi. Edasi saame diferentseerida, st jagame kÔik mÔÔtmed durationiga. Kui me iga mÔÔtme jagame durationiga, saame kÔnede arvu sekundis.

JĂ€tkame total_time sekundis – see on minu lemmik mÔÔde. See on mÀÀratud sekundites, st kui palju sekundeid kulus meie sĂŒsteemil selle pĂ€ringute grupi tĂ€itmiseks sekundis. Kui sa seal nĂ€ed rohkem kui sekund sekundis, tĂ€hendab see, et vajad rohkem kui ĂŒhe tuuma. See on vĂ€ga hea mÔÔde. Sa saad aru, et sellele isikule on nĂ€iteks vajalik minimaalselt kolm tuuma.

See on meie know-how, midagi sellist ma pole kuskil nĂ€inud. Pange tĂ€hele – see on vĂ€ga lihtne asi – sekund sekundis. MĂ”nikord, kui teie CPU on 100%, siis pool tundi sekundis, st te tegelesite ainult nende pĂ€ringutega pool tundi.

Edasi nÀeme ridade arvu sekundis. Me teame, mitu rida sekundis tagastati.

Ja edasi on veel huvitav asi. Kui palju me shared_buffers-st sekundis lugesime. Hitid olid juba seal, rida saime kas operatsioonisĂŒsteemi vahemĂ€lust vĂ”i kettalt. Esimene variant on kiire, teine vĂ”ib olla kiire, aga vĂ”ib ka mitte olla, see sĂ”ltub olukorrast.

Teine diferentsieerimise viis on, et jagame selle grupi pĂ€ringute arvu. Teises veerus on teil alati ĂŒks pĂ€ring, jagatud pĂ€ringu jĂ€rgi. Ja siis on huvitav – kui palju millisekundeid oli selle pĂ€ringu tĂ€itmiseks. Me teame, kuidas see pĂ€ring keskmiselt kĂ€itub. Iga pĂ€ringu jaoks kulus 101 millisekundit. See on traditsiooniline mÔÔdik, mis on oluline meie arusaamiseks.

Kui palju ridu iga pÀring keskmiselt tagastas. NÀeme, et see grupp tagastab 8. Kui palju keskmiselt vahemÀlust vÔeti ja loeti. NÀeme, et kÔik on ideaalne vahemÀlus. Esimese grupi jaoks on puhtad hitid.

Ja iga rea neljas alareal on see, kui protsenti koguarvust. Meil on calls. Oletame, et 1 000 000. Ja me saame aru, millise panuse see grupp annab. NĂ€eme, et antud juhul paneb esimene grupp vĂ€hem kui 0,01% panuse. See tĂ€hendab, et ta on nii aeglane, et me ei nĂ€e seda ĂŒldpildis. Aga teine grupp – 5% kĂ”igist kutsetest. See tĂ€hendab, et 5% kĂ”igist kutsetest on teine grupp.

Total_time kohta on ka huvitav. Esimese grupi pÀringute jaoks kulus 14% kogu töötamisajast. Teise jaoks 11% jne.

Ma ei sĂŒvene detailidesse, aga seal on nĂŒansse. Meie pealtnĂ€ha ilmub viga, kuna kui me vĂ”rreldes vĂ”rdleme, vĂ”ivad snapshotid nihkuda, st mĂ”ned pĂ€ringud vĂ”ivad kaduda ja teises enam mitte esineda, ning mĂ”ned vĂ”ivad uued ilmuda. Ja me seal arvutame vea vĂ€lja. Kui nĂ€ete 0, siis on kĂ”ik hĂ€sti. Vigu pole. Kui veaprotsent on kuni 20%, on see OK.

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

Edasi naaseme meie teema juurde. Me peame koostama töökoormuse. Me lĂ€heme ĂŒlevalt alla, kuni saavutame 80% vĂ”i 90%. Tavaliselt on see 10-20 gruppi. Ja teeme failid pgbench jaoks. Seal kasutame random. MĂ”nikord ei Ă”nnestu see, kahjuks. Ja Postgres 12-s on rohkem vĂ”imalusi selle lĂ€henemisviisi kasutamiseks.

Ja ja oleme selliselt kogunud 80–90 % kogu ajast. Mida edaspidi pĂ€rast „@“ sisestada? Vaatame kĂ”nesid, vaatame, kui palju protsente ja mĂ”istame, et peaksime olema siin teatud protsendiga. Nendest protsentidest suudame mĂ”ista, kuidas iga faili tasakaalustada. PĂ€rast seda kasutame pgbench'i ja hakkame tööle.

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

Meil on ka K001 ja K002.

K001 on suur string, mis sisaldab nelja alamsÔnumeid. See iseloomustab meie koormust. Vaadake teist veergu ja teist alamsÔnumit. NÀeme, et umbes 1,5 sekundit sekundis, st kui on kaks tuuma, on see hea. Laadimine on umbes 75 %. Ja see töötab nii. Kui meil on 10 tuuma, siis oleme tÀiesti rahulikud. Nii saame ressursse hinnata.

K002 – see on minu meelest pĂ€ringute klassid, st SELECT, INSERT, UPDATE, DELETE. Ja eraldi SELECT FOR UPDATE, kuna see lukustab.

Siit saame jÀreldada, et tavalised SELECT-lugejad moodustavad 82 % kÔigist kÔnedest, kuid samal ajal 74 % kogu ajast. St neid kutsutakse palju, kuid nad tarvitavad vÀhem ressursse.

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

Ja tuleme tagasi kĂŒsimuse juurde: „Kuidas valida Ă”igesti shared_buffers?“. Ma olen tĂ€heldanud, et enamik teste pĂ”hinevad ideel – vaatame, kui palju lĂ€bi lĂ€heb, st mis on lĂ€bilaskevĂ”ime. Seda mÔÔdetakse tavaliselt TPS vĂ”i QPS-iga.

Ja pĂŒĂŒame max Ă”hku vĂ€lja pigistada kohalt koos seadistuste kaudu, et saada vĂ”imalikult palju tehinguid sekundis. Siin on tĂ€pselt 311 sekundi kohta SELECT jaoks.

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

Aga keegi ei sÔida tööle ja tagasi koju autoga tÀis kiirusel. See on rumal. Nii on ka andmebaasidega. Me ei tohiks sÔita tÀiskiirusel, ja keegi ei tee seda. Keegi ei ela produtsioonis, kus on 100% CPU. Kuigi vÔib-olla keegi elab, aga see pole hea.

Idee on selline, et me sĂ”idame tavaliselt 20% oma vĂ”imekusest, soovitatavalt mitte rohkem kui 50%. Ja pĂŒĂŒame optimeerida reageerimisaega meie kasutajatele. St me peame keerama oma nuppe nii, et latentsus oleks minimaalne 20% kiirusel, tinglikult. See on idee, mida pĂŒĂŒame oma katsetes kasutada.

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

Ja lÔpuks soovitused:

  • Kohustuslik on luua Database Lab.
  • VĂ”imaluse korral tehke see vĂ€ljakutsena, et saaks selle mĂ”neks ajaks ĂŒles seada – mĂ€ngida ja kĂ”rvaldada. Kui teil on pilved, siis on see loomulik, st omage palju seisvaid.
  • Olge uudishimulikud. Ja kui midagi on valesti, siis kontrollige katsetega, kuidas see kĂ€itub. Nancy't saab kasutada, et ise Ă”petada ja kontrollida, kuidas andmebaas töötab.
  • Ja suunake minimaalset reageerimisaega.
  • Ja Ă€rge kartke Postgrese lĂ€htekoodi. Kui töötate lĂ€htekoodiga, peate teadma inglise keelt. Seal on vĂ€ga palju kommentaare, kĂ”ik on selgelt seletatud.
  • Ja kontrollige andmebaasi tervist regulaarselt, vĂ€hemalt kord kolme kuu jooksul kĂ€sitsi vĂ”i Postgres-checkupiga.

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

KĂŒsimused

AitÀh palju! VÀga huvitav teema.

Kaks asja.

Jah, kaks asja. Ainult et ma ei saanud tĂ€iesti aru. Kui me Nancy'ga töötame, kas me saame reguleerida vaid ĂŒhte parameetrit vĂ”i terve grupi?

Meil on delfiini konfiguratsiooni parameeter. Saate sinna samaaegselt palju keerata. Kuid tuleb mÔista, et kui muudad palju asju, vÔid vale jÀrelduse teha.

Jah. Miks ma kĂŒsisin? Sest on keeruline katsetada, kui sul on vaid ĂŒks parameeter. Sa keerad seda, vaatad, kuidas see töötab. Seadistad selle. Siis alustad jĂ€rgmisega.

Samaaegselt saab reguleerida, kuid see sĂ”ltub olukorrast, muidugi. Kuid parem on testida ĂŒhe ideed korraga. Eile tuli meil idee. Meil oli vĂ€ga sarnane olukord. Oli kaks konfiguratsiooni. Ja me ei suutnud aru saada, miks vahe on nii suur. Ja tekkis idee, et on vaja kasutada dikotoomiat, et jĂ€rjestikku mĂ”ista ja leida, kus on erinevus. Saame kohe pool parameetritest ĂŒheks muuta, siis veerandi jne. KĂ”ik on paindlik.

Ja on veel kĂŒsimus. Projekt on noor, areneb. Kas dokumentatsioon on juba valmis, on ĂŒksikasjalik kirjeldus?

Olen seal spetsiaalselt linki teinud parameetrite kirjeldustele. See on olemas. Kuid palju asju pole veel valmis. Otsin kaasosalisi. Ja ma leian neid, kui esinen. See on vĂ€ga lahe. Keegi juba töötab minuga, keegi aitas ja tegi midagi. Ja kui teid see teema huvitab, andke tagasi side – mida puudub.

Kui jÔuame laborisse, vÔib-olla tuleb ka tagasi side. Vaatame. AitÀh!

Tere! AitÀh ettekande eest! NÀgin, et Amazoni tugi on olemas. Kas plaanitakse GSP tuge?

Hea kĂŒsimus. Oleme alustanud, kuid oleme selle peatama pannud, kuna soovime kokku hoida. T. e. on olemas tugi, kasutades run on localhost. Saate ise luua instantsi ja töötada kohapeal. Muide, me teeme nii. Getlabi puhul teen ma seda, seal on GSP. Kuid me ei nĂ€e mĂ”tet teha just sellist orkestreerimist, kuna Google'il pole soodsaid spote. Seal on ??? instantsi, kuid neil on piirangud. Esiteks, neil on alati ainult 70% allahindlus ja seal ei saa hindadega mĂ€ngida. Spote tĂ”stame 5-10% vĂ”rra, et vĂ€hendada tĂ”enĂ€osust, et teid vĂ€lja visatakse. T. e. spote kasutades saate kokku hoida, kuid neid vĂ”idakse teil igal ajal Ă€ra vĂ”tta. Kui hind on veidi kĂ”rgem kui teistel, vĂ”idakse teid hiljem vĂ€lja visata. Google'il on tĂ€iesti erinev eripĂ€ra. Ja veel on ĂŒks vĂ€ga halb piirang - need elavad ainult 24 tundi. Ja mĂ”nikord tahame katsetusi viia lĂ€bi 5 pĂ€eva. Kuid spottidega on seda vĂ”imalik teha, spote on mĂ”nikord kuud kestnud.

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

TĂ”eliselt hea kĂŒsimus. Ma saan vĂ€ga ĂŒksikasjalikult nĂ€idata ja rÀÀkida. LĂŒhidalt - vaatame, kuidas grupi pĂ€ringud liikuma hakkavad: kui palju on kadunud ja kui palju uusi on tulnud. Ja seejĂ€rel vaatame kahte mÔÔdikut: total_time ja calls, seega on seal kaks viga. Ja vaatame, milline on kadunud gruppide panus. Seal on kaks alagruppi: lĂ€inud ja tulnud. Vaatame, milline on nende panus kogu pildis.

Kas te ei karda, et see toob seal kaks-kolm korda ringi aega, mis jÀÀb snÀpshotide vahel?

T. e. nad registreerusid uuesti vÔi kuidas?

NÀiteks, see pÀring on juba kord vÀljatÔrjutud, seejÀrel tuli tagasi ja tÔrjus jÀlle vÀlja, seejÀrel tuli veel kord tagasi ja tÔrjus jÀlle vÀlja. Ja te arvutasite midagi, ja kus see kÔik on?

Hea kĂŒsimus, tuleb uurida.

Ma tegin sarnast asja. Loomulikult tegin ma selle lihtsamaks ĂŒksi. Kuid pidin resettima, tegema reset stat_statements ja orienteeruma snĂ€pshoti hetkel, et seal oleks vĂ€hem teatud osa, et see ei oleks veel saavutanud piiri, kui palju stat_statements vĂ”ib koguda. Ja ma orienteerun, et tĂ”enĂ€oliselt ei ole midagi vĂ€lja tĂ”rjutud.

Jah-jah.

Aga kuidas muidu usaldusvÀÀrselt teha ma ei saa aru.

Kahjuks ei mÀleta ma tÀpselt - kas me kasutame seal pÀringu teksti vÔi queryid pg_stat_statements ja sellele orienteerume. Kui me orienteerume queryid, siis teoreetiliselt vÔrreldame me vÔrreldavaid asju.

Ei, ta vÔib mitmeid kordi vahepeal lÔppeda ja uuesti tulla.

Sama ID-ga?

Jah.

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

See on muidugi haruldane juhtum, aga mind jahmatas, kui sain teada, et stat_statements vÔib seal lÔppeda.

Pg_stat_statements-s vÔib olla palju erinevaid asju. Oleme kogenud, et kui teil on track_utility = on, siis teie komplektid jÀlgitakse ka.

Jah, muidugi.

Ja kui teil on Java Hibernate, mis on juhuslik, siis seal hakkab hash-tabel lukustuma. Ja kui te lĂŒlitate vĂ€lja 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 suurendada pg_stat_statements.max.

Jah, aga peate teadma, kui palju. Ja kuidagi peab sellega tegelema. Mina teen nii. St mul on pg_stat_statements.max. Ja vaatan, et ma ei ole hetkeseisuga jÔudnud 70% -ni. HÀsti, see tÀhendab, et me ei kaotanud midagi. Teeme reset'i. Ja kogume jÀlle. Kui jÀrgmises hetkeseisus on alla 70%, siis tÀhendab see, et tÔenÀoliselt ei kaotanud me jÀlle midagi.

Jah. Vaikimisi on praegu 5000 ja paljudele sellest piisab.

Tavaliselt – jah.

Video:

MĂ€ngi videot

P.S. Lisaks ĂŒtlen, et kui Postgres sisaldab konfidentsiaalseid andmeid, mis ei tohi testkeskkonda sattuda, siis saab kasutada PostgreSQL Anonymizer. Skeem on ligikaudu jĂ€rgmine:

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

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster