Hello.
Vanya no anarako ary mpamorona Java aho. Mitranga izany fa miasa be amin'ny PostgreSQL aho - mametraka ny angon-drakitra, manatsara ny rafitra, ny fampisehoana ary ny milalao DBA kely amin'ny faran'ny herinandro.
Vao haingana aho no nanadio angona maromaro tao amin'ny microservices ary nanoratra tranomboky java
Disclaimer
Ny dikan-teny fototra amin'ny PostgreSQL iarahako dia 10. Ny fanontaniana SQL rehetra ampiasaiko dia voasedra amin'ny version 11 ihany koa. Ny dikan-teny tohanana kely indrindra dia 9.6.
prehistory
Efa ho herintaona lasa izay no niantombohan'ny zava-drehetra tamin'ny toe-javatra hafahafa tamiko: niafara tamin'ny hadisoana ny famoronana fanondroana tsy misy manga. Ny index mihitsy, toy ny mahazatra, dia nijanona tao amin'ny angon-drakitra tao anatin'ny toe-javatra tsy mety. Nampiseho tsy fahampiana ny fanadihadiana momba ny log
Olana voalohany - configuration default
Azo inoana fa reraky ny rehetra ny fanoharana momba ny Postgres, izay azo atao amin'ny mpanamboatra kafe, saingy ... ny fametrahana default dia tena mametraka fanontaniana maromaro. Farafaharatsiny, mendrika ny hojerena fikojakojana_asa_mem, temp_file_limit, statement_time out ΠΈ lock_time out.
Raha ny antsika fikojakojana_asa_mem dia ny default 64 MB, ary temp_file_limit zavatra manodidina ny 2 GB - tsy ampy fitadidiana fotsiny izahay hamoronana tondro eo amin'ny latabatra lehibe.
Noho izany, in pg-index-health Nanangona andiany aho
Olana roa - fanondroana duplicate
Ny angon-drakitray dia miaina amin'ny kapila SSD, ary ampiasainay HA-configuration miaraka amin'ny foibe data marobe, mpampiantrano master ary n- isan'ny kopia. Ny habaka kapila dia loharano tena sarobidy ho antsika; tsy latsa-danja noho ny fampisehoana sy ny fanjifana CPU izany. Noho izany, amin'ny lafiny iray, mila indexes ho an'ny famakiana haingana isika, ary amin'ny lafiny iray, tsy te-hahita index tsy ilaina ao amin'ny angon-drakitra, satria mihinana habaka izy ireo ary mampiadana ny fanavaozana ny data.
Ary ankehitriny, rehefa namerina ny zava-drehetra
Olana telo - fifandimbiasana indices
Ny ankamaroan'ny mpamorona vaovao dia mamorona index amin'ny tsanganana tokana. Tsikelikely, rehefa niaina tanteraka an'ity orinasa ity, ny olona dia manomboka manatsara ny fanontaniany ary manampy indeksa sarotra kokoa izay misy tsanganana maromaro. Toy izany ny endriky ny fanondro amin'ny tsanganana A, A + B, A + B + C sy ny sisa. Ny roa voalohany amin'ireo tondro ireo dia azo ariana soa aman-tsara, satria izy ireo dia tovan'ny fahatelo. Izany koa dia mitahiry habaka kapila be dia be ary misy ny diagnostika amin'izany
Olana efatra - fanalahidy vahiny tsy misy index
Ny Postgres dia ahafahanao mamorona teritery manan-danja avy any ivelany tsy misy fanondroana fanondroana. Aminβny toe-javatra maro dia tsy olana izany, ary mety tsy hiseho mihitsy aza... Aminβizao fotoana izao...
Toy izany ihany koa taminay: fa tamin'ny fotoana iray dia nisy asa iray, nihazakazaka araka ny fandaharam-potoana ary nanadio ny angon-drakitra momba ny baikon'ny fitsapana, dia nanomboka "nampiana" anay ny mpampiantrano tompony. Very maina ny CPU sy ny IO, nihena ny fangatahana ary tapitra ny fotoana, dimanjato ny serivisy. Famakafakana haingana
delete from <table> where id in (β¦)
Amin'ity tranga ity, mazava ho azy, nisy index amin'ny id tao amin'ny latabatra kendrena, ary vitsy dia vitsy no voafafa araka ny fepetra. Toa tsy maintsy niasa ny zava-drehetra, saingy, indrisy, tsy nisy izany.
Ilay mahafinaritra dia tonga namonjy manazava analyse ary nilaza fa ankoatry ny famafana ny firaketana ao amin'ny latabatra kendrena, dia misy ihany koa ny fanamarinana ny fahamendrehana, ary amin'ny iray amin'ireo tabilao mifandraika dia tsy mahomby io fanamarinana io. scan sequential noho ny tsy fisian'ny index sahaza. Noho izany dia teraka ny diagnostics
Olana dimy - sanda null amin'ny indexes
Amin'ny alΓ lan'ny default, ny Postgres dia ahitana sanda tsy misy dikany amin'ny indeksan'ny btree, saingy matetika tsy ilaina ao izy ireo. Noho izany, miezaka mafy aho hanary ireo nulls ireo (diagnostics where <A> is not null
. Tamin'izany fomba izany no nahafahako nampihena ny haben'ny iray amin'ireo fanondroanay avy amin'ny 1877 MB ho 16 KB. Ary ao amin'ny iray amin'ireo serivisy, ny haben'ny angon-drakitra dia nihena 16% (tamin'ny 4.3 GB amin'ny isa tanteraka) noho ny fanilihana ny sanda tsy misy dikany amin'ny index. Mitsitsy be dia be amin'ny habaka kapila miaraka amin'ny fanovana tsotra. π
Olana enina - tsy fahampian'ny fanalahidy fototra
Noho ny toetry ny mekanika
Indray andro, nisy fifindra-monina mahafinaritra iray naka sy nanavao ny firaketana rehetra tao anaty latabatra lehibe iray ampiasaina. Nahazo +100 GB ny haben'ny latabatra izahay. Tena mahamenatra izany, saingy tsy nifarana teo ny zava-dratsy nataonay. Taorian'ny nifaranan'ny autovacuum teo amin'ity latabatra ity 15 ora taty aoriana, dia hita fa tsy hiverina ny toerana ara-batana. Tsy afaka nampitsahatra ny serivisy izahay ary nanao VACUM FENO, ka nanapa-kevitra ny hampiasa
Ao amin'ny version library 0.1.5 Nampiana ny fahafahana manangona angona avy amin'ny bloat of tables and indexes ary mamaly izany ara-potoana.
Olana fito sy valo - tsy ampy fanondroana sy fanondro tsy ampiasaina
Ny diagnostika roa manaraka dia:
Araka ny efa nosoratako dia mampiasa config miaraka amin'ny kopia maromaro izahay, ary ny enta-mavesatra mamaky amin'ny mpampiantrano samihafa dia tena hafa. Vokatr'izany, ny toe-javatra dia hita fa ny latabatra sy ny indeksa sasany amin'ny mpampiantrano sasany dia saika tsy ampiasaina, ary ho an'ny fanadihadiana dia mila manangona antontan'isa avy amin'ny mpampiantrano rehetra ao amin'ny cluster ianao.
Io fomba fiasa io dia nahafahanay nitahiry gigabytes am-polony maro tamin'ny alalan'ny fanesorana ireo tondro izay tsy nampiasaina mihitsy, ary koa nanampy ireo tondro tsy hita tamin'ny latabatra tsy dia nampiasaina.
Ho famaranana
Mazava ho azy, ho an'ny diagnostika rehetra azonao atao ny manamboatra
Ny diagnostika sasany dia azo atao amin'ny fitsapana miasa avy hatrany aorian'ny famoahana ny fifindra-monina angona. Ary ity angamba no iray amin'ireo endri-javatra mahery indrindra amin'ny tranomboky. Ohatra iray amin'ny fampiasana dia hita ao amin'ny
Misy dikany ny manao fisavana ho an'ny indeksa tsy ampiasaina na tsy hita, ary koa ho an'ny bloat, amin'ny tena angon-drakitra ihany. Ny sanda voaangona dia azo raketina ao
Tena manantena izany aho pg-index-health ho ilaina sy ilaina. Azonao atao ihany koa ny mandray anjara amin'ny fivoaran'ny tranomboky amin'ny alΓ lan'ny tatitra ireo olana hitanao sy ny fanolorana diagnostika vaovao.
Source: www.habr.com