Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Ini ndinokurudzira kuti uverenge zvinyorwa zvemushumo kubva pakutanga kwa2016 naAndrey Salnikov "Zvakanganisika mumashandisirwo anotungamira bloat mu postgresql"

Mumushumo uyu, ini ndichaongorora zvikanganiso zvikuru mumashandisirwo anomuka padanho rekugadzira nekunyora kodhi yekushandisa. Uye ini ndichatora chete izvo zvikanganiso zvinotungamira kune bloat muPostgresql. Sezvo mutemo, uku ndiko kutanga kwekuguma kwekuita kwehurongwa hwako huzere, kunyange zvazvo pakutanga pasina zvidikanwi zveizvi zvaionekwa.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Ndinofara kugamuchira munhu wese! Chirevo ichi hachisi chehunyanzvi sechapfuura kubva kune wandaishanda naye. Chirevo ichi chakanyanya kunanga kubackend system vanogadzira nekuti isu tine nhamba yakati wandei yevatengi. Uye vose vanoita zvikanganiso zvakafanana. Ndichakuudza nezvavo. Ini ndichatsanangura zvinhu zvinouraya uye zvakaipa izvo kukanganisa uku kunotungamira.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Sei kukanganisa kuchiitwa? Izvo zvinoitwa nekuda kwezvikonzero zviviri: chero nguva, pamwe ichashanda uye nekuda kwekusaziva mamwe maitiro anoitika pamwero pakati peiyo dhatabhesi uye application, pamwe neiyo dhatabhesi pachayo.

Ini ndichakupa mienzaniso mitatu ine mifananidzo inotyisa yekuipa kwakaita zvinhu. Ini ndichakuudza muchidimbu nezve mameshini anoitika ipapo. Uye maitiro ekuita navo, pazvakaitika, uye ndedzipi nzira dzekudzivirira dzekushandisa kudzivirira kukanganisa. Ini ndichakuudza nezve maturusi ekubatsira uye nekupa zvinobatsira zvinongedzo.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Ndakashandisa test database pandakanga ndine matafura maviri. Imwe ndiro ine maakaundi evatengi, imwe yacho ine matranseksheni pamaakaundi aya. Uye nemamwe ma frequency isu tinogadziridza masaramusi pane aya maakaundi.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Yekutanga data yeplate: idiki chaizvo, 2 MB. Nguva yekupindura yedatabase uye yakanangana nechiratidzo zvakare yakanaka kwazvo. Uye mutoro wakanaka - 2 mashandiro pasekondi zvinoenderana nendiro.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Uye kuburikidza nemushumo uyu ini ndichakuratidza magirafu kuitira kuti unzwisise zviri kuitika. Pachagara paine masiraidhi maviri ane magirafu. Yekutanga slide ndiyo inoitika kazhinji pane server.

Uye mumamiriro ezvinhu aya, tinoona kuti tine chiratidzo chiduku. Indekisi idiki pa2 MB. Iri ndiro girafu rekutanga kuruboshwe.

Avhareji yenguva yekupindura pane server zvakare yakagadzikana uye ipfupi. Iri ndiro girafu rekurudyi.

Pazasi kuruboshwe girafu rinoratidza kutengeserana kwakareba. Tinoona kuti kutengeserana kunopedzwa nokukurumidza. Uye iyo autovacuum haisati yashanda pano, nekuti yaive yekutanga bvunzo. Icharamba ichishanda uye ichatibatsira.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Yechipiri siraidhi ichagara yakatsaurirwa kune ndiro iri kuedzwa. Mumamiriro ezvinhu aya, isu tinogara tichigadzirisa zviyero zveakaundi yemutengi. Uye isu tinoona kuti avhareji yenguva yekupindura yekuvandudza oparesheni yakanaka, isingasviki millisecond. Isu tinoona kuti processor zviwanikwa (iyi ndiyo yekumusoro kurudyi girafu) zvakare inopedzwa zvakaenzana uye idiki chaizvo.

Iyo yezasi yekurudyi girafu inoratidza kuti yakawanda sei yekushanda uye dhisiki memory yatinopfuura kuburikidza nekutsvaga mutsara watinoda tisati taugadzirisa. Uye nhamba yekushanda maererano nechiratidzo i2 pasekondi, sezvandambotaura pakutanga.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Uye zvino tine nhamo. Nokuda kwechimwe chikonzero kune kutengeserana kwakakanganwa kwenguva refu. Zvikonzero zvinowanzova zvese banal:

  • Imwe yeakajairika ndeyekuti isu takatanga kuwana sevhisi yekunze mune kodhi yekushandisa. Uye sevhisi iyi haitipinduri. Ndiko kuti, isu takavhura kutengeserana, takaita shanduko mudhatabhesi ndokuenda kubva pachikumbiro kuverenga tsamba kana kune imwe sevhisi mukati mezvivakwa zvedu, uye nekuda kwechimwe chikonzero haitipindure kwatiri. Uye chikamu chedu chakanamira munzvimbo isingazivikanwe kuti ichagadziriswa riini.
  • Mamiriro echipiri ndipo pakaitika kusarudzika mune yedu kodhi nekuda kwechimwe chikonzero. Uye kunze isu hatina kugadzirisa kuvharwa kwekutengeserana. Uye isu takapedzisira neyakaturika chikamu neyakavhurika transaction.
  • Uye iyo yekupedzisira zvakare inyaya yakajairika. Iyi ikodhi yemhando yakaderera. Mamwe marongero anovhura kutengeserana. Inorembera, uye iwe ungasaziva mukushandisa kuti unayo yakarembera.

Zvinhu zvakadaro zvinosvikepi?

Kusvika padanho rekuti matafura edu nemaindex zvinotanga kuzvimba zvakanyanya. Izvi ndizvo chaizvo zvakafanana bloat athari. Kune dhatabhesi, izvi zvinoreva kuti nguva yekupindura dhatabhesi ichawedzera zvakanyanya uye mutoro uri pa database server uchawedzera. Uye somuuyo, kushandisa kwedu kuchatambura. Nekuti kana wakashandisa gumi milliseconds mukodhi yako pachikumbiro kune dhatabhesi, gumi milliseconds pane yako logic, ipapo basa rako rakatora 10 milliseconds kupedzisa. Uye zvino mamiriro ako ezvinhu achasuruvarisa zvachose.

Uye ngationei zvinoitika. Pazasi kuruboshwe girafu rinoratidza kuti isu tine refu refu kutengeserana. Uye kana tikatarisa pagirafu rekumusoro kuruboshwe, tinoona kuti ukuru hwetafura yedu hwakangoerekana hwasvetuka kubva pamamegabytes maviri kusvika pa300 megabytes. Panguva imwecheteyo, chiyero che data mutafura hachina kuchinja, i.e. kune marara akawandisa emarara ipapo.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Mamiriro ezvinhu akaenzana maererano neavhareji sevha yekupindura nguva yakashandukawo nemirairo yakawanda yehukuru. Ndiko kuti, zvese zvikumbiro paserver zvakatanga kudonha zvachose. Uye panguva imwecheteyo, maitiro emukati ePostgres akatangwa nenzira ye autovacuum, iyo iri kuedza kuita chimwe chinhu nekudya zviwanikwa.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Chii chiri kuitika nechiratidzo chedu? Zvimwe chete. Yedu yeavhareji yenguva yekupindura zvinoenderana nechiratidzo yakasvetuka mirairo yakawanda yehukuru. Kunyanya maererano nezviwanikwa zvakadyiwa, tinoona kuti mutoro uri pa processor wakawedzera zvakanyanya. Iri ndiro girafu rekurudyi. Uye yakawedzera nekuti processor inofanirwa kugadzirisa kuburikidza neboka remitsetse isina basa mukutsvaga iyo inodiwa. Iri ndiro girafu rezasi rekurudyi. Uye nekuda kweizvozvo, nhamba yedu yekufona pasekondi yakatanga kudonha zvakanyanya, nekuti dhatabhesi yakanga isina nguva yekugadzirisa nhamba imwechete yezvikumbiro.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Tinofanira kudzokera kuupenyu. Isu tinoenda online uye tinoona kuti kutengeserana kwenguva refu kunotungamira kumatambudziko. Isu tinowana uye tinouraya kutengeserana uku. Uye zvese zvave kuita zvakajairika kwatiri. Zvose zvinoshanda sezvazvinofanira.

Takadzikama, asi mushure mechinguva tinotanga kuona kuti chikumbiro hachishande senge pasati paitika emergency. Zvikumbiro zvichiri kuitwa zvishoma nezvishoma, uye zvishoma nezvishoma. Imwe nehafu kusvika kaviri zvishoma zvishoma mumuenzaniso wangu. Kuremerwa paserver zvakare kwakakwira kupfuura zvayaive isati yaitika njodzi.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Uye mubvunzo: "Chii chiri kuitika kubhesi panguva ino?" Uye iyo inotevera mamiriro anoitika nenheyo. Pachati chekutengeserana iwe unogona kuona kuti yakamira uye hapana chaizvo kutengeserana kwenguva refu. Asi saizi yechiratidzo yakawedzera zvinouraya panguva yetsaona. Uye kubvira ipapo havana kuderera. Ivhareji yenguva pachigadziko yakagadzikana. Uye mhinduro dzinoita sedziri kuuya zvakaringana nekumhanya kunogamuchirwa kwatiri. Iyo autovacuum yakawedzera kushanda uye yakatanga kuita chimwe chinhu nechiratidzo, nekuti inoda kusefa kuburikidza nedata rakawanda.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Kunyanya, maererano neplate yekuedza ine maakaunti, kwatinoshandura zviyero: nguva yekupindura yechikumbiro inoita kunge yadzokera kune yakajairika. Asi chaizvoizvo rakakwirira nekamwe nehafu.

Uye kubva pamutoro uri pa processor, tinoona kuti mutoro uri pa processor hauna kudzokera kune inodiwa kukosha kusati kwaparara. Uye zvikonzero zviripo zvakarara chaizvo muzasi kurudyi girafu. Zvinogona kuonekwa kuti chitsama chakati chendangariro chiri kutsvakwa ipapo. Ndiko kuti, kuti tiwane mutsara unodiwa, tinoparadza zviwanikwa zvesevha yedatabase tichirongedza data risingabatsiri. Nhamba yekutengeserana pasekondi yakagadzikana.

Pakazara zvakanaka, asi mamiriro acho akaipa kupfuura zvazvaive. Bvisa kushatiswa kwedatabase semhedzisiro yekushandisa kwedu kunoshanda neiyi dhatabhesi.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Uye kuti unzwisise zviri kuitika ipapo, kana iwe wanga usiri pamushumo wekare, zvino ngatitore dzidziso shoma. Dzidziso pamusoro pemaitiro emukati. Sei motokari yevacuum uye inoitei?

Muchidimbu kuti tinzwisise. Pane imwe nguva munguva tine tafura. Tine mitsara mutafura. Mitsetse iyi inogona kushanda, mhenyu, uye zvatinoda iye zvino. Vanoratidzwa negirini pamufananidzo. Uye kune mitsara yakafa yakatogadzirwa, yakagadziridzwa, uye zvinyorwa zvitsva zvakaonekwa pazviri. Uye ivo vakamakwa kuti havachafadze kune dhatabhesi. Asi ivo vari patafura nekuda kwePostgres chimiro.

Sei uchida vacuum yemotokari? Pane imwe nguva, autovacuum inouya, inowana dhatabhesi uye yoibvunza kuti: "Ndokumbira undipe id yechinyakare chekutengeserana icho chavhurwa mudhatabhesi." Dhatabhesi inodzosera id iyi. Uye iyo autovacuum, ichivimba nayo, inoronga kuburikidza nemitsara iri patafura. Uye kana akaona kuti mamwe mitsara yakachinjwa nekutengeserana kwekare, saka ane kodzero yekuisa chiratidzo iyo semitsetse yatinogona kushandisa zvakare mune ramangwana nekunyora data idzva ipapo. Iyi inzira yekumashure.

Panguva ino, isu tinoramba tichishanda ne database uye tinoramba tichiita shanduko patafura. Uye pamitsara iyi, yatinogona kushandisa zvakare, tinonyora data nyowani. Uye nokudaro tinowana kutenderera, i.e. nguva dzose mimwe mitsetse yakafa yakafa inooneka ipapo, panzvimbo payo tinonyora mitsetse mitsva yatinoda. Uye iyi inzvimbo yakajairwa kuti PostgreSQL ishande.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Chii chakaitika panguva yetsaona? Nzira iyi yakaitika sei ikoko?

Takanga tine chiratidzo mune chimwe chimiro, vamwe vapenyu, mamwe mitsara yakafa. Vacuum yemota yasvika. Akabvunza dhatabhesi kuti kutengeserana kwedu kwekare chii uye id yayo chii. Ndakatambira id iyi, inogona kunge iri maawa akawanda apfuura, pamwe maminetsi gumi apfuura. Zvinoenderana nekuremerwa kwemutoro waunayo pane yako database. Uye akaenda achitsvaga mitsara yaaigona kumaka seyakashandiswazve. Uye ini handina kuwana mitsara yakadaro mutafura yedu.

Asi panguva ino tinoramba tichishanda netafura. Isu tinoita chimwe chinhu mairi, kuivandudza, shandura iyo data. Chii chinofanira kuita dhatabhesi panguva ino? Haana sarudzo kunze kwekuwedzera mitsetse mitsva kumagumo etafura iripo. Uye saka saizi yedu yetafura inotanga kuzvimba.

Muchokwadi, tinoda mitsetse yakasvibira kuti ishande. Asi panguva yedambudziko rakadaro, zvinoitika kuti chikamu chemitsetse yakasvibira yakaderera zvakanyanya mutafura yese.

Uye kana isu tichiita mubvunzo, dhatabhesi inofanirwa kupfuura nemumitsetse yese: zvese zvitsvuku negirinhi, kutsvaga mutsara waunoda. Uye mhedzisiro yekuvhuvhuta tafura ine data risingabatsiri inonzi "bloat", iyo inodyawo dhisiki yedu nzvimbo. Rangarira, yaive 2 MB, yakava 300 MB? Iye zvino shandura megabytes kune gigabytes uye iwe uchakurumidza kurasikirwa nedhisiki yako yese zviwanikwa.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Migumisiroi ingavapo kwatiri?

  • Mumuenzaniso wangu, tafura uye index yakakura ka150. Vamwe vevatengi vedu vakave nezviitiko zvinouraya pavakangotanga kupera dhisiki nzvimbo.
  • Ukuru hwematafura pachahwo hahuzomboperi. Autovacuum mune dzimwe nguva inogona kugura muswe wetafura kana paine mitsara yakafa chete. Asi sezvo paine kutenderera nguva dzose, mutsara wegirini unogona kuoma kumagumo uye usingagadziriswe, nepo mamwe ese achizonyorwa pane imwe nzvimbo pakutanga kwendiro. Asi ichi chiitiko chisingagoneki zvekuti tafura yako pachayo ichaderera muhukuru, saka haufanirwe kutarisira.
  • Iyo dhatabhesi inoda kuronga kuburikidza neboka rose remitsetse isina basa. Uye isu tinoparadza dhisiki zviwanikwa, tinoparadza processor zviwanikwa uye magetsi.
  • Uye izvi zvinokanganisa zvakananga chikumbiro chedu, nekuti kana pakutanga takashandisa 10 milliseconds pachikumbiro, 10 milliseconds pane yedu kodhi, ipapo panguva yekuparara takatanga kushandisa yechipiri pachikumbiro uye gumi milliseconds pane kodhi, i.e. ukuru mukushanda kwekushandisa kwakadzikira. Uye tsaona payakagadziriswa, takatanga kushandisa 10 milliseconds pachikumbiro, 20 milliseconds pane kodhi. Izvi zvinoreva kuti isu tichiri kudonha nekamwe nechidimbu mukubudirira. Uye izvi zvese imhaka yekutengeserana kumwe kwakaoma, pamwe nekukanganisa kwedu.
  • Uye mubvunzo: "Tingadzosa sei zvinhu zvose?" kuitira kuti zvinhu zvose zvive zvakanaka nesu uye zvikumbiro zvinouya nokukurumidza sepamberi njodzi.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Nechinangwa ichi pane imwe denderedzwa rebasa rinoitwa.

Kutanga tinoda kuwana matambudziko ematafura ane bloated. Isu tinonzwisisa kuti mune mamwe matafura kurekodha kunonyanya kushanda, mune mamwe kushoma. Uye nokuda kweizvi tinoshandisa kuwedzera pgstattuple. Nekuisa iyi yekuwedzera, unogona kunyora mibvunzo ichakubatsira iwe kuwana matafura akanyatsoputika.

Kana uchinge wawana matafura aya, unofanirwa kuamanikidza. Patova nematurusi eizvi. Mukambani yedu tinoshandisa zvishandiso zvitatu. Yekutanga ndiyo yakavakirwa-mukati VACUUM FULL. Ane utsinye, ane hasha uye haana tsitsi, asi dzimwe nguva anobatsira zvikuru. Pg_repack ΠΈ pgcompacttable - Aya ndiwo echitatu-bato zvishandiso zvekumanikidza matafura. Uye vanobata dhatabhesi zvakanyanya.

Iwo anoshandiswa zvichienderana nezvinokunakira iwe. Asi ndichakuudza pamusoro peizvi pakupedzisira. Chinhu chikuru ndechokuti pane zvishandiso zvitatu. Pane zvakawanda zvokusarudza kubva.

Mushure mekunge tagadzirisa zvese uye nekuva nechokwadi chekuti zvese zvakanaka, isu tinofanirwa kuziva nzira yekudzivirira mamiriro aya mune ramangwana:

  • Inogona kudzivirirwa nyore nyore. Iwe unofanirwa kutarisa nguva yezvikamu pane Master server. Kunyanya masesesheni ane njodzi mukusashanda mune transaction state. Ava ndivo vakangovhura transaction, vakaita chimwe chinhu ndokusiya, kana kungorembera, vakarasika mucode.
  • Uye kwauri, sevagadziri, zvakakosha kuti uedze kodhi yako kana mamiriro aya amuka. Hazvina kuoma kuita. Ichi chichava cheki inobatsira. Iwe uchadzivisa nhamba huru yematambudziko e "mwana" ane chokuita nekutengesa kwenguva refu.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Mune magirafu aya, ndaida kukuratidza kuti chiratidzo uye maitiro e database akachinja sei mushure mekunge ndapfuura nechiratidzo neVACUUM FULL munyaya iyi. Izvi hazvisi kugadzirwa kwandiri.

Saizi yetafura yakabva yadzokera kune yakajairika kushanda kwayo kwema megabytes akati wandei. Izvi hazvina kukanganisa zvakanyanya avhareji yenguva yekupindura sevha.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Asi zvakanangana nechiratidzo chedu chekuyedza, kwatakagadziridza zviyero zveakaundi, tinoona kuti avhareji yekupindura nguva yechikumbiro chekuvandudza data muchiratidzo yakaderedzwa kusvika pre-emergency mazinga. Izvo zviwanikwa zvakadyiwa ne processor kupedzisa chikumbiro ichi zvakare zvakadonha kusvika ku pre-crash level. Uye iyo yezasi yekurudyi girafu inoratidza kuti ikozvino tinowana chaizvo mutsara watinoda ipapo ipapo, tisingapfuuri nemumirwi yemitsara yakafa yaivepo tafura isati yatsikirirwa. Uye avhareji yekukumbira nguva yakaramba iri padanho rakafanana. Asi pano ndine, pane kudaro, kukanganisa muhardware yangu.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Apa ndipo panoperera nyaya yekutanga. Ndiyo inonyanyozivikanwa. Uye zvinoitika kumunhu wese, zvisinei neruzivo rwemutengi uye kuti vanogadzira zvirongwa vanokwanisa sei. Nokukurumidza kana kuti gare gare izvi zvinoitika.

Nyaya yechipiri, umo isu tinogovera mutoro uye optimize server zviwanikwa

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

  • Takatokura tatova serious vakomana. Uye isu tinonzwisisa kuti isu tine replica uye zvingava zvakanaka kuti isu tienzanise mutoro: nyorera kuna Tenzi, uye uverenge kubva pane iyo replica. Uye kazhinji mamiriro aya anomuka kana tichida kugadzirira mamwe mishumo kana ETL. Uye bhizinesi rinofara zvikuru pamusoro peizvi. Anonyatsoda mishumo yakasiyana-siyana ine yakawanda yakaoma analytics.
  • Mishumo inotora maawa akawanda, nekuti analytics yakaoma haigone kuverengerwa mumamilliseconds. Isu, sevarume vakashinga, nyora kodhi. Mune yekuisa application tinoita kurekodha paTenzi, uye toita mishumo pane replica.
  • Kugovera mutoro.
  • Zvose zvinoshanda zvakakwana. Isu tiri vakuru.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Uye mamiriro ezvinhu aya akaita sei? Kunyanya pamagirafu aya, ini ndakawedzerawo nguva yekutengeserana kubva kune replica yenguva yekutengeserana. Mamwe magirafu ese anoreva chete kune Master server.

Panguva iyi, report board yangu yainge yakura. Kune akawanda awo. Isu tinoona kuti avhareji nguva yekupindura sevha yakagadzikana. Tinoona kuti pane replica tine kutengeserana kwenguva refu kunomhanya kwemaawa maviri. Isu tinoona kushanda kwakanyarara kwe autovacuum, iyo inogadzirisa mitsara yakafa. Uye zvinhu zvose zvakanaka nesu.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Kunyanya, zvinoenderana nendiro yakaedzwa, isu tinoenderera mberi nekuvandudza mabhengi eakaundi ipapo. Uye isu zvakare tine yakagadzikana yekupindura nguva yezvikumbiro, yakagadzikana yekushandisa zviwanikwa. Zvese zvakanaka nesu.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Zvese zvakanaka kusvika nguva iyi mishumo yatanga kudzoka nekuda kwekupokana nekudzokorora. Uye vanopfura zvakare panguva nenguva.

Isu tinoenda online uye tinotanga kuverenga kuti sei izvi zviri kuitika. Uye tinowana mhinduro.

Mhinduro yekutanga ndeyekuwedzera replication latency. Isu tinoziva kuti mushumo wedu unomhanya kwemaawa matatu. Isu tinoisa kunonoka kwekudzokorora kusvika maawa matatu. Tiri kuvhura zvese, asi tichiri kuramba tichinetsekana nemishumo dzimwe nguva ichidzimwa.

Tinoda kuti zvinhu zvose zvive zvakakwana. Tinokwira mberi. Uye isu takawana inotonhorera marongero paInternet - hot_standby_feedback. Ngatibatidze. Hot_standby_feedback inotibvumira kubata autovacuum paMaster. Nokudaro, tinobvisa zvachose kupokana kwekudzokorora. Uye zvese zvinoshanda zvakanaka kwatiri nemishumo.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Uye chii chiri kuitika neMaster server panguva ino? Uye isu tiri mudambudziko rakazara ne Master server. Ikozvino tiri kuona magirafu pandinenge ndine ese maviri aya marongero akagoneswa. Uye isu tinoona kuti chikamu pane yedu replica neimwe nzira yakatanga kukanganisa mamiriro pane Master server. Ane mhedzisiro nekuti akambomira autovacuum, iyo inobvisa mitsara yakafa. Saizi yetafura yedu yakakwira zvakare. Avhareji yenguva yekubvunza mubvunzo pane yese dhatabhesi zvakare yakakwira. Iwo autovacuums akaomesa zvishoma.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Kunyanya, kubva mundiro yedu, tinoona kuti iyo data yekuvandudza pairi zvakare yakasvetukira kumatenga. CPU kushandiswa kwakawedzera zvakafanana. Tiri zvakare kupinda munhamba huru yemitsara yakafa, isina maturo. Uye nguva yekupindura yechiratidzo ichi uye nhamba yekutengeserana yadonha.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Zvichaita sei kana tisingazive zvandaitaura kare?

  • Tinotanga kutsvaga matambudziko. Kana takasangana nematambudziko muchikamu chekutanga, tinoziva kuti izvi zvinogona kunge zvakakonzerwa nekutengesa kwenguva refu uye kuenda kuna Tenzi. Tine dambudziko pana Master. Masoseji iye. Inopisa, Mutoro wayo Avhareji ingangoita zana.
  • Zvikumbiro zviripo zvinononoka, asi isu hationi chero kutengeserana kwenguva refu ikoko. Uye isu hatinzwisise kuti chii chiri kunetsa. Hatinzwisisi pekutarisa.
  • Isu tinotarisa sevha midziyo. Pamwe raid yedu yakabondera. Pamwe memory stick yedu yatsva. Hongu, chero chinhu chinogona kuitika. Asi kwete, maseva matsva, zvese zvinoshanda zvakanaka.
  • Wese munhu ari kumhanya: maneja, vagadziri uye director. Hapana chinobatsira.
  • Uye pane imwe nguva zvinhu zvose zvinongoerekana zvatanga kuzvigadzirisa.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Panguva iyi, chikumbiro chiri pamufananidzo wedu chakagadziriswa ndokuenda. Takagamuchira report. Bhizinesi richiri kufara. Sezvauri kuona, chiratidzo chedu chakakura zvakare uye hachisi kuzoderera. Pane girafu ine zvikamu, ndakasiya chidimbu cheichi chiitiko chakareba kubva kune replica kuitira kuti iwe ugone kufungidzira kuti zvinotora nguva yakareba sei kudzamara mamiriro agadzikana.

Chikamu chapera. Uye chete mushure meimwe nguva sevha inouya zvakanyanya kana zvishoma muhurongwa. Uye avhareji yenguva yekupindura zvikumbiro paMaster server inodzokera kune yakajairika. Nekuti, pakupedzisira, iyo autovacuum ine mukana wekuchenesa kunze uye kumaka iyi mitsara yakafa. Uye akatanga kuita basa rake. Uye nekukurumidza sei anozviita, nekukurumidza isu tichapinda muhurongwa.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Zvinoenderana nepiritsi yakaedzwa, kwatinogadziridza zviyero zveakaundi, tinoona iwo mufananidzo wakafanana. Avhareji yeakaundi yekuvandudza nguva iri zvakare zvishoma nezvishoma normalizing. Izvo zviwanikwa zvinodyiwa ne processor zvakare zvakaderedzwa. Uye nhamba yekutengeserana pasekondi inodzokera kune yakajairika. Asi zvakare tadzokera pakare, kwete sezvataiva tisati taita tsaona.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Chero zvazvingaitika, isu tinowana kudhirowa kwekuita, sepakutanga, nehafu nehafu kusvika kaviri, uye dzimwe nguva zvimwe.

Tinoita kunge taita zvese nemazvo. Govera mutoro. Mudziyo wacho hausi kushanda. Takakamura zvikumbiro maererano nepfungwa dzedu, asi zvakadaro zvinhu zvose zvakaramba zvakashata.

  • Usagone kugonesa hot_standby_feedback? Hongu, hazvikurudzirwe kuibatidza pasina zvikonzero zvakasimba. Nekuti iyi twist inobata zvakananga iyo Master server uye inomisa kushanda kwe autovacuum ipapo. Nekuigonesa pane imwe replica uye kukanganwa nezvazvo, unogona kuuraya Master uye kuwana matambudziko makuru nekushandisa.
  • Wedzera max_standby_streaming_delay? Hongu, kune mishumo ichi ichokwadi. Kana iwe uine rondedzero yemaawa matatu uye usingade kuti iparare nekuda kwekupokana kwekudzokorora, saka ingo wedzera kunonoka. Chirevo chenguva refu hachidi data rasvika mudhatabhesi izvozvi. Kana iwe uinayo kwemaawa matatu, saka urikumhanyisa kune imwe yekare data nguva. Uye kwauri iwe, kana paine kunonoka kwemaawa matatu kana matanhatu-awa hakuzoite mutsauko, asi iwe uchagamuchira mishumo nguva dzose uye hauzove nematambudziko nekudonha.
  • Nomuzvarirwo, iwe unofanirwa kudzora nguva refu pane replicas, kunyanya kana iwe ukafunga kugonesa hot_standby_feedback pane replica. Nekuti chero chinhu chinogona kuitika. Isu takapa iyi replica kumugadziri kuti aedze zvikumbiro. Akanyora chikumbiro chakapenga. Akachiparura ndokuenda kunonwa tea, tichibva tatora Master. Kana kuti pamwe takaisa zvisirizvo application imomo. Mamiriro acho akasiyana. Sessions pane replicas inofanirwa kutariswa nekungwarira sepaMaster.
  • Uye kana uine mibvunzo inokurumidza uye yakareba pane replicas, saka munyaya iyi zviri nani kuparadzanisa kuti ugovere mutoro. Ichi chinongedzo chekufambisa_kunonoka. Kune vanokurumidza, iva nemufananidzo mumwe chete nekunonoka kudzokorodza kudiki. Pazvikumbiro zvekutaura kwenguva refu, iva nemufananidzo unogona kupera nemaawa matanhatu kana pazuva. Aya ndiwo mamiriro akajairika.

Isu tinobvisa mhedzisiro nenzira imwechete:

  • Tinowana matafura akazvimba.
  • Uye isu tinoimanikidza nechishandiso chiri nyore chinokodzera isu.

Nyaya yechipiri inoperera pano. Ngatienderei kunyaya yechitatu.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Zvakare zvakajairika kwatiri kwatinoita kutama.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

  • Chero chigadzirwa chesoftware chiri kukura. Zvinodiwa pazviri zviri kuchinja. Chero zvazvingava, tinoda kukudziridza. Uye zvinoitika kuti isu tinofanirwa kugadzirisa iyo data mutafura, kureva kuti tiite yekuvandudza maererano nekutama kwedu kwekushanda kutsva kwatiri kusuma sechikamu chebudiriro yedu.
  • Iyo yekare data fomati haina kugutsa. Ngatitii isu zvino tatendeukira kune yechipiri tafura, apo ini ndine zvekutengeserana pamaakaundi aya. Uye ngatiti ivo vaiva muRubles, uye takasarudza kuwedzera kururamisa uye kuzviita mumakopecks. Uye nokuda kweizvi tinoda kugadzirisa: wedzera munda nehuwandu hwekutengesa nezana.
  • Munyika yanhasi, isu tinoshandisa otomatiki vhezheni vhezheni yekudzora maturusi. Ngatitii Liquibase. Tinonyoresa kutama kwedu ikoko. Isu tinozviyedza pane yedu test base. Zvese zvakanaka. Iyo update iri kuitika. Inovhara basa kwechinguva, asi isu tinowana yakagadziridzwa data. Uye isu tinogona kuvhura mashandiro matsva pane izvi. Zvese zvakaongororwa zvikaongororwa. Zvose zvakasimbiswa.
  • Takaita basa rakarongwa uye takatama.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Hekuno kutama nekuvandudzwa kunoratidzwa pamberi pako. Sezvo aya ari eakaundi yangu yekutengeserana, ndiro yaive 15 GB. Uye sezvo isu tichivandudza mutsara wega wega, takapeta kaviri saizi yetafura neinogadziridza, nekuti isu takanyorazve mutsara wega wega.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Munguva yekutama, hapana chataigona kuita nendiro iyi, nekuti zvese zvikumbiro kwairi zvakaiswa mumutsara uye zvakamirira kusvika iyi update yapera. Asi pano ini ndoda kukwevera kutarisa kwako kune nhamba dziri pane yakatwasuka axis. Ndiko kuti, isu tine avhareji yekukumbira nguva isati yatama yeanenge 5 milliseconds uye processor mutoro, nhamba ye block mashandiro ekuverenga disk memory isingasviki 7,5.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Takaita zvekutama uye takava nematambudziko zvakare.

Kutama kwakabudirira, asi:

  • Basa rekare ikozvino rinotora nguva yakareba kuti ripere.
  • Tafura yakakura zvakare muhukuru.
  • Kuremerwa paserver zvakare kwakava kukuru kupfuura kare.
  • Uye, hongu, isu tichiri kufunga nezvekushanda kwakashanda nemazvo, isu takavandudza zvishoma.

Uye izvi zvakare bloat, izvo zvakare zvinoparadza hupenyu hwedu.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Pano ini ndinoratidza kuti tafura, semakesi maviri apfuura, haisi kuzodzokera kune yakapfuura saizi. Avhareji sevha inotakura inoita seyakakwana.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Uye kana tikatendeukira kutafura nemaakaundi, tichaona kuti avhareji nguva yekukumbira yakapetwa kaviri patafura iyi. Kuremerwa pane processor uye nhamba yemitsara yakarongedzwa mundangariro yakasvetuka pamusoro pe7,5, asi yaive yakaderera. Uye yakasvetuka kaviri muchiitiko che processors, 2 nguva muchiitiko che block mashandiro, i.e. isu takawana kuderedzwa mukuita kweserver. Uye semhedzisiro - kuderedzwa kwekuita kwekushandisa kwedu. Panguva imwecheteyo, nhamba yekufona yakaramba iri padanho rimwechete.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Uye chinhu chikuru pano ndechokunzwisisa kuti ungaita sei kutama kwakadaro nenzira yakarurama. Uye vanofanira kuitwa. Tinoita mamigration aya zvakanaka nguva dzose.

  • Kutama kukuru kwakadaro hakungoerekani kwaitika. Vanofanira kugara vachidzorwa.
  • Kutarisirwa nemunhu ane ruzivo kunodiwa. Kana iwe uine DBA pachikwata chako, saka rega DBA izviite. Ibasa rake. Kana zvisina kudaro, regai munhu ane ruzivo rwakanyanya azviite, anoziva kushanda ne databases.
  • Iyo nyowani dhatabhesi schema, kunyangwe isu tikagadziridza imwe koramu, isu tinogara tichigadzirira mumatanho, i.e. pamberi peiyo vhezheni yechishandiso isati yaburitswa:
  • Minda mitsva inowedzerwa umo isu ticharekodha iyo yakagadziridzwa data.
  • Isu tinoendesa data kubva kumunda wekare kuenda kumunda mutsva muzvikamu zvidiki. Sei tiri kuita izvi? Chekutanga, isu tinogara tichidzora maitiro ekuita uku. Tinoziva kuti takatotamisa mabhechi akawanda uye tasara akawanda.
  • Uye chechipiri chakanaka ndechekuti pakati pebatch imwe neimwe yakadaro tinovhara kutengeserana, kuzarura imwe itsva, uye izvi zvinobvumira autovacuum kushanda maererano neplate, maka mitsara yakafa kuti ishandiswezve.
  • Kune mitsetse inozoonekwa apo application ichiri kushanda (isu tichine yekare application inoshanda), tinowedzera trigger inonyora hunyowani hutsva kuminda mitsva. Muchiitiko chedu, uku ndiko kuwanza nezana rekare kukosha.
  • Kana isu takasindimara zvachose uye tichida iyo munda wakafanana, saka kana tapedza kutama kwese uye tisati taburitsa vhezheni nyowani yekushandisa, tinongotumidza minda. Iwo ekare anopiwa mamwe mazita akagadzirwa, uye minda mitsva inotumidzwa kune yekare.
  • Uye chete mushure meizvozvo tinotangisa vhezheni nyowani yekushandisa.

Uye panguva imwechete isu hatizowana bloat uye hatizotamburi maererano nekuita.

Apa ndipo panoperera nyaya yechitatu.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

https://github.com/dataegret/pg-utils/blob/master/sql/table_bloat.sql

https://github.com/dataegret/pg-utils/blob/master/sql/table_bloat_approx.sql

Uye zvino zvishoma zvakadzama nezve maturusi andakataura munyaya yekutanga.

Usati watsvaga bloat, unofanirwa kuisa iyo yekuwedzera pgstattuple.

Kuti urege kuuya nemibvunzo, takatonyora mibvunzo iyi mubasa redu. Unogona kuzvishandisa. Pane zvikumbiro zviviri pano.

  • Yekutanga inotora nguva yakareba kuti ishande, asi inokuratidza iwo chaiwo bloat kukosha kubva patafura.
  • Yechipiri inoshanda nekukurumidza uye inoshanda zvakanyanya kana iwe uchida kukurumidza kuongorora kana pane bloat kana kwete maererano netafura. Uye iwe unofanirwawo kunzwisisa kuti bloat inogara iripo muPostgres tafura. Ichi chikamu cheiyo MVCC modhi.
  • Uye 20% bloat yakajairika kumatafura muzviitiko zvakawanda. Ndiko kuti, haufanirwe kunetseka uye kudzvanya iyi tafura.

Takaona kuti tingaziva sei matafura akazvimba nedata risingabatsiri.

Iye zvino nezve maitiro ekugadzirisa bloat:

  • Kana tine piritsi duku uye madhisiki akanaka, kureva, pahwendefa kusvika kune gigabyte, zvinokwanisika kushandisa VACUUM FULL. Achatora kiyi yega kubva kwauri patafura kwemasekonzi mashoma uye zvakanaka, asi achaita zvese nekukurumidza uye nehasha. Chii chinoita VACUUM FULL? Zvinotora kiyi yakasarudzika patafura uye inonyorazve mitsara mhenyu kubva pamatafura ekare kupinda mutafura nyowani. Uye pakupedzisira anovatsiva. Inobvisa mafaira ekare uye inotsiva ekare neatsva. Asi kwenguva yebasa rayo, zvinotora kukiya chete patafura. Izvi zvinoreva kuti haugone kuita chero chinhu netafura iyi: kana kuinyorera, kana kuiverengera, kana kuishandura. Uye VACUUM FULL inoda imwe nzvimbo yedhisiki yekunyora data.
  • Next tool pg_repack. Muchirevo chayo, yakafanana zvikuru neVACUUM FULL, nokuti inonyora zvakare data kubva kumafaira ekare kusvika kune matsva uye inotsiva patafura. Asi panguva imwecheteyo, haitore kukiya yakasarudzika patafura pakutanga chaiko kwebasa rayo, asi inotora iyo chete panguva iyo yatove nedata yakagadzirira kutsiva mafaera. Yayo disk resource zvinodiwa zvakafanana neaya eVACUUM FULL. Iwe unoda imwe dhisiki nzvimbo, uye izvi dzimwe nguva zvakakosha kana uine terabyte matafura. Uye inonyatso processor-nzara nekuti inoshanda nesimba neI/O.
  • Yechitatu yekushandisa ndeye pgcompacttable. Inonyanya kungwarira nezviwanikwa nekuti inoshanda zvinoenderana nemisimboti yakati siyanei. Pfungwa huru yepgcompacttable ndeyekuti inofambisa yese mitsara mhenyu kusvika pakutanga kwetafura uchishandisa zvigadziriso mutafura. Uye zvino inobvisa vacuum patafura iyi, nekuti tinoziva kuti tine mitsara mhenyu kwekutanga uye mitsara yakafa kumagumo. Uye iyo vacuum pachayo inocheka muswe uyu, i.e. haidi yakawedzera dhisiki nzvimbo. Uye panguva imwecheteyo, inogona kuramba yakasvinwa maererano nezviwanikwa.

Zvese nematurusi.

Zvakajairwa zvikanganiso mumashandisirwo zvinotungamira ku bloat mu postgresql. Andrey Salnikov

Kana iwe ukawana iyo bloat musoro inonakidza maererano nekutarisa mberi mukati, heano mamwe anobatsira malink:

Ndakaedza zvakanyanya kuratidza nyaya inotyisa yevagadziri, nekuti ndivo vatengi vedu vakananga vedatabase uye vanofanirwa kunzwisisa kuti chii uye chii zviito zvinotungamira. Ndinovimba ndakabudirira. Ndinokutendai nekuteerera kwenyu!

Mibvunzo yako

Ndatenda nemushumo! Makataura pamusoro pekuti mungaziva sei matambudziko. Vanganyeverwa sei? Ndiko kuti, ndaive nemamiriro ezvinhu apo zvikumbiro zvakarembera kwete chete nekuti ivo vakawana mamwe masevhisi ekunze. Aya aingova majoini emusango. Pane zvikumbiro zvidiki, zvisingakuvadzi zvakangoswera zuva rose, zvobva zvatanga kuita zvisina maturo. Ndiko kuti, zvakafanana nezvaunotsanangura. Nzira yekutevera sei izvi? Gara uye ugare wakatarisa kuti ndechipi chikumbiro chakanamira? Izvi zvingadziviswa sei?

Muchiitiko ichi, iri ibasa revatariri vekambani yako, kwete hazvo reDBA.

Ndiri administrator.

PostgreSQL ine maonero anonzi pg_stat_activity anoratidza mibvunzo yakarembera. Uye iwe unogona kuona kuti yakareba sei yakarembera ipapo.

Ndinofanira kuuya kuzotarisa maminitsi mashanu ega ega?

Gadzirisa cron uye tarisa. Kana uine chikumbiro chenguva refu, nyora tsamba uye ndizvozvo. Ndiko kuti, haufanire kutarisa nemeso ako, inogona kuve otomatiki. Iwe uchagamuchira tsamba, iwe unopindura kwairi. Kana kuti unogona kupfura otomatiki.

Pane here zvikonzero zviri pachena nei izvi zvichiitika?

Ndanyora zvimwe. Mimwe mienzaniso yakaoma kunzwisisa. Uye panogona kuva nekurukurirano kwenguva refu.

Ndatenda nemushumo! Ini ndaida kujekesa nezve pg_repack utility. Kana akasaita zvekukiya ega, zvino...

Anokiya exclusive.

... ipapo ndaigona kurasikirwa nedata. Chikumbiro changu hachifanire kunge chiri kurekodha chero chinhu panguva ino?

Kwete, inoshanda zvakanaka netafura, i.e. pg_repack inotanga kutamisa mitsetse yese iripo. Nomuzvarirwo, imwe mhando yekupinda mutafura inoitika ipapo. Ari kungokanda muswe wemboro uyu kunze.

Ndiko kuti, anozviita pakupedzisira?

Pakupedzisira, anotora kiyi yega kuti achinje mafaera aya.

Ichakurumidza kupfuura VACUUM FULL?

VACUUM FULL, payakangotanga, yakabva yatora yakasarudzika kukiya. Uye kusvikira aita zvose, haazomubvumiri kuenda. Uye pg_repack inotora yakasarudzika kukiya panguva yekutsiva faira. Panguva ino hauzonyora ipapo, asi data haizorasikirwe, zvese zvichave zvakanaka.

Mhoro! Wataura nezvekushanda kwemota vacuum. Paiva negirafu raiva nemasero matsvuku, eyero uye egirini ekurekodha. Kureva kuti, yero - akamaka seakadzimwa. Uye somuuyo, chimwe chinhu chitsva chinogona kunyorwa mavari?

Ehe. Postgres haibvise mitsetse. Ane hunhu hwakadaro. Kana tikagadziridza mutsara, taimaka chekare sechadzimwa. Iyo id yekutengeserana yakashandura iyi mutsara inoonekwa ipapo, uye isu tinonyora mutsara mutsva. Uye isu tine zvikamu zvinokwanisa kuzviverenga. Pane imwe nguva vanochembera. Uye chakakosha mashandiro anoita autovacuum ndechekuti inopfuura nemumitsetse iyi uye inomaka seisina basa. Uye iwe unogona kunyora pamusoro data ipapo.

Ndinonzwisisa. Asi handizvo izvo mubvunzo uri pamusoro. Handina kupedza. Ngatitii tine tafura. Iine minda yehukuru hwakasiyana. Uye kana ndikaedza kuisa chimwe chinhu chitsva, chingangotadza kukwana musero rekare.

Kwete, chero zvakadaro mutsara wese unovandudzwa ipapo. Postgres ine mhando mbiri dzekuchengetedza data. Inosarudza kubva kumhando yedata. Pane data inochengetwa zvakananga mutafura, uye kune zvakare tos data. Aya ndiwo akawanda data: zvinyorwa, json. Vanochengetwa mumahwendefa akasiyana. Uye maererano nemahwendefa aya, nyaya imwechete ine bloat inoitika, i.e. zvinhu zvose zvakafanana. Vanongonyorwa zvakasiyana.

Ndatenda nemushumo! Zvinotenderwa here kushandisa mivhunzo yekutaura nguva yekupera kumisa nguva?

Zvinogamuchirika zvikuru. Isu tinoshandisa izvi kwese kwese. Uye sezvo isu tisina zvedu masevhisi, isu tinopa rutsigiro kure, tine vakasiyana-siyana vatengi. Uye munhu wose anogutsikana zvachose neizvi. Ndiko kuti, isu tine cron mabasa anoongorora. Nguva yezvikamu zvinongobvumirana nemutengi, zvisati zvatisingabvumirani. Inogona kuva miniti, inogona kuva maminitsi gumi. Izvo zvinoenderana nemutoro pachigadziko uye chinangwa chayo. Asi isu tese tinoshandisa pg_stat_activity.

Ndatenda nemushumo! Ndiri kuedza kushandisa report yako kune zvandinokumbira. Uye zvinoita sekunge tinotanga kutengeserana kwese kwese, uye nekuipedzisa zvakajeka kwese kwese. Kana paine kusarudzika, saka rollback ichiri kuitika. Ndakabva ndatanga kufunga. Mushure mezvose, kutengeserana kunogona kusatanga zvakajeka. Izvi zvichida fungidziro kumusikana. Kana ndikangovandudza rekodhi, kutengeserana kuchatanga muPostgreSQL uye kungopedzisa kana kubatana kwabviswa?

Kana iwe uri kutaura izvozvi nezve danho rekushandisa, saka zvinoenderana nemutyairi wauri kushandisa, pane ORM iri kushandiswa. Kune akawanda marongero ipapo. Kana iwe uine auto kuzvipira payakagoneswa, saka kutengeserana kunotanga ipapo uye kunovhara ipapo.

Ndiko kuti, inovhara pakarepo mushure mekuvandudzwa?

Zvinoenderana nezvirongwa. Ndakatumidza imwe marongero. Uku ndiko kusungirirwa kweauto. Zvakajairika. Kana ikagoneswa, saka kutengeserana kwakavhurwa uye kuvharwa. Kunze kwekunge wataura zvakajeka "tanga kutengeserana" uye "kupedza kutengeserana", asi wakangotangisa chikumbiro muchikamu.

Mhoro! Ndatenda nemushumo! Ngatimbofungidzira kuti isu tine dhatabhesi iri kuzvimba nekuzvimba uyezve nzvimbo iri paserver inopera. Pane zvishandiso zvekugadzirisa mamiriro aya?

Nzvimbo iri paserver inoda kutariswa nemazvo.

Semuenzaniso, iyo DBA yakaenda kunonwa tii, yaive panzvimbo yekutandarira, nezvimwe.

Kana faira system yagadzirwa, ingangoita imwe mhando yenzvimbo yekuchengetedza inogadzirwa uko data risina kunyorwa.

Ko kana iri pasi pe zero zvachose?

Ikoko kunonzi reserved space, i.e. inogona kusunungurwa uye zvichienderana nekuti yakakura sei yakasikwa, unowana nzvimbo yemahara. By default handizivi kuti vangani. Uye mune imwe nyaya, endesa madhisiki kuitira kuti uve nenzvimbo yekuita basa rekuvakazve. Unogona kudzima imwe tafura yawakavimbiswa kusada.

Pane mamwe maturusi here?

Zvinogara zvichigadzirwa nemaoko. Uye munharaunda zvinova pachena izvo zvakanakisa kuita ipapo, nekuti imwe data yakakosha uye imwe haina-yakakosha. Uye kune yega yega dhatabhesi uye chishandiso chinoshanda nacho, zvinoenderana nebhizinesi. Nguva dzose inosarudzwa munharaunda.

Ndatenda nemushumo! Ndine mibvunzo miviri. Chekutanga, wakaratidza masiraidhi airatidza kuti kana kutengeserana kwanamira, ese saizi yepatafura uye saizi ye index inokura. Uye zvakare pane chirevo pakanga paine boka rezvishandiso zvinorongedza piritsi. Zvakadini neindex?

Vanoarongedzawo.

Asi vacuum haina kukanganisa index?

Vamwe vanoshanda nendekisi. Semuenzaniso, pg_rapack, pgcompacttable. Iyo vacuum inodzokorora ma index uye inoabata. NeVACUUM FULL pfungwa ndeyekunyora zvese, i.e. inoshanda nemunhu wese.

Uye mubvunzo wechipiri. Ini handinzwisise kuti sei mishumo pane replicas ichitsamira zvakanyanya pakudzokororwa kwayo. Kwandiri zvaiita sokuti mishumo inoverengwa, uye kudzokororwa kunonyorwa.

Chii chinokonzera kupokana kwekudzokorora? Tine Master pane maitiro anoitika. Tine vacuum yemotokari iri kuitika. Chii chinoita autovacuum chaizvo? Ari kucheka mimwe mitsetse yekare. Kana panguva ino tine chikumbiro pane replica inoverenga mitsara iyi yekare, uye pana Tenzi mamiriro ezvinhu akaitika kuti autovacuum yamaka mitsara iyi sezvinobvira kuti inyore, saka tinoinyora pasi. Uye isu takagamuchira pakiti yedata, patinenge tichida kunyorazve mitsara iyo inodiwa nechikumbiro pane replica, maitiro ekudzokorora anomirira nguva yekubuda yawakamisa. Uye ipapo PostgreSQL ichasarudza izvo zvakanyanya kukosha kwairi. Uye kudzokorora kunonyanya kukosha kwaari kupfuura chikumbiro, uye iye achapfura chikumbiro kuitira kuti aite shanduko idzi pane replica.

Andrey, ndine mubvunzo. Aya magirafu anoshamisa awakaratidza panguva yemharidzo, aya ndiwo mhedzisiro yebasa reimwe rudzi rwekushandisa kwako? Magirafu acho akagadzirwa sei?

Iri ibasa Okmeter.

Ichi chigadzirwa chekutengesa here?

Ehe. Ichi chigadzirwa chekutengesa.

Source: www.habr.com

Voeg