Bawo
Orukọ mi ni Vanya ati pe Mo jẹ oludasile Java kan. O ṣẹlẹ pe Mo ṣiṣẹ pupọ pẹlu PostgreSQL - ṣeto ibi ipamọ data, iṣapeye eto, iṣẹ ṣiṣe, ati ṣiṣere DBA diẹ ni awọn ipari ose.
Laipẹ Mo ti ṣe atunṣe ọpọlọpọ awọn data data ninu awọn iṣẹ microservices wa ati kọ ile-ikawe java kan
be
Ẹya akọkọ ti PostgreSQL ti Mo ṣiṣẹ pẹlu jẹ 10. Gbogbo awọn ibeere SQL ti Mo lo tun ni idanwo lori ẹya 11. Ẹya atilẹyin ti o kere julọ jẹ 9.6.
prehistory
Gbogbo rẹ bẹrẹ ni ọdun kan sẹyin pẹlu ipo ti o jẹ ajeji si mi: ẹda ifigagbaga ti atọka lati inu buluu ti pari pẹlu aṣiṣe kan. Atọka funrararẹ, gẹgẹbi iṣe deede, wa ninu ibi ipamọ data ni ipo aiṣedeede. Iṣiro akọọlẹ fihan aito kan
Isoro ọkan - aiyipada iṣeto ni
Boya gbogbo eniyan ni o rẹwẹsi pupọ fun apẹẹrẹ nipa Postgres, eyiti o le ṣiṣẹ lori alagidi kọfi kan, ṣugbọn… iṣeto aiyipada ga gaan ni nọmba awọn ibeere. Ni o kere ju, o tọ lati san ifojusi si itọju_iṣẹ_mem, temp_file_limit, gbólóhùn_akoko и lock_timeout.
Ninu ọran tiwa itọju_iṣẹ_mem je aiyipada 64 MB, ati temp_file_limit nkankan ni ayika 2 GB - a nìkan ko ni to iranti to a ṣẹda ohun Ìwé lori kan ti o tobi tabili.
Nitorina, ninu pg-index-ilera Mo ti gba a jara
Isoro meji - àdáwòkọ atọka
Awọn apoti isura infomesonu wa n gbe lori awọn awakọ SSD, ati pe a lo HA-iṣeto ni pẹlu ọpọ data awọn ile-iṣẹ, titunto si ogun ati n-nọmba ti replicas. Aaye disk jẹ ohun elo ti o niyelori pupọ fun wa; o jẹ ko kere pataki ju iṣẹ ati Sipiyu agbara. Nitorinaa, ni apa kan, a nilo awọn atọka fun kika iyara, ati ni apa keji, a ko fẹ lati rii awọn atọka ti ko wulo ninu ibi ipamọ data, nitori wọn jẹ aaye ati fa fifalẹ imudojuiwọn data.
Ati nisisiyi, ntẹriba pada ohun gbogbo
Isoro mẹta - awọn atọka intersecting
Pupọ awọn olupilẹṣẹ alakobere ṣẹda awọn atọka lori iwe kan. Diẹdiẹ, ti o ni itọwo iṣowo yii daradara, awọn eniyan bẹrẹ lati mu awọn ibeere wọn pọ si ati ṣafikun awọn atọka eka diẹ sii ti o pẹlu awọn ọwọn pupọ. Eyi ni bi awọn atọka lori awọn ọwọn ṣe han A, A + B, A+B+C ati bẹbẹ lọ. Meji akọkọ ninu awọn atọka wọnyi le jẹ danu kuro lailewu, nitori wọn jẹ awọn ami-iṣaaju ti ẹkẹta. Eyi tun ṣafipamọ ọpọlọpọ aaye disk ati pe awọn iwadii aisan wa fun eyi
Isoro mẹrin - awọn bọtini ajeji laisi awọn atọka
Postgres gba ọ laaye lati ṣẹda awọn idiwọ bọtini ajeji laisi asọye atọka atilẹyin. Ni ọpọlọpọ awọn ipo eyi kii ṣe iṣoro, ati pe o le ma ṣe afihan ararẹ paapaa ... Fun akoko naa ...
O jẹ kanna pẹlu wa: o kan pe ni akoko kan ni akoko iṣẹ kan, ṣiṣe ni ibamu si iṣeto kan ati sisọ data data ti awọn ibere idanwo, bẹrẹ si "fikun" si wa nipasẹ oluwa oluwa. Sipiyu ati IO lọ si egbin, awọn ibeere fa fifalẹ ati pe akoko ti jade, iṣẹ naa jẹ ẹdẹgbẹta. Ayẹwo kiakia
delete from <table> where id in (…)
Ni idi eyi, dajudaju, itọka kan wa nipasẹ id ni tabili ibi-afẹde, ati pe awọn igbasilẹ pupọ diẹ ti paarẹ ni ibamu si ipo naa. O dabi pe ohun gbogbo yẹ ki o ṣiṣẹ, ṣugbọn, alas, ko ṣe.
Iyanu naa wa si igbala se alaye itupale o si sọ pe ni afikun si piparẹ awọn igbasilẹ ninu tabili ibi-afẹde, ayẹwo iṣotitọ itọkasi tun wa, ati lori ọkan ninu awọn tabili ti o jọmọ ayẹwo yii kuna. lesese scan nitori aini atọka ti o yẹ. Bayi ni a bi awọn iwadii aisan
Isoro marun - asan iye ninu awọn atọka
Nipa aiyipada, Postgres pẹlu awọn iye asan ni awọn atọka btree, ṣugbọn wọn kii nilo nigbagbogbo nibẹ. Nitorinaa, Mo fi taratara gbiyanju lati jabọ awọn asan wọnyi (awọn iwadii aisan where <A> is not null
. Ni ọna yii Mo ni anfani lati dinku iwọn ọkan ninu awọn atọka wa lati 1877 MB si 16 KB. Ati ninu ọkan ninu awọn iṣẹ naa, iwọn data data dinku lapapọ nipasẹ 16% (nipasẹ 4.3 GB ni awọn nọmba pipe) nitori iyasoto ti awọn iye asan lati awọn atọka. Awọn ifowopamọ nla ni aaye disk pẹlu awọn iyipada ti o rọrun pupọ. 🙂
Isoro mẹfa - aini awọn bọtini akọkọ
Nitori awọn iseda ti awọn siseto
Ni ọjọ kan, ijira iyalẹnu kan mu ati ṣe imudojuiwọn gbogbo awọn igbasilẹ ni tabili nla ati ti nṣiṣe lọwọ. A ni + 100 GB si iwọn tabili lati buluu naa. O jẹ itiju nla, ṣugbọn awọn aburu wa ko pari nibẹ. Lẹhin ti autovacuum lori tabili yii pari awọn wakati 15 lẹhinna, o han gbangba pe ipo ti ara kii yoo pada. A ko le da iṣẹ naa duro ki a ṣe VACUUM FULL, nitorinaa a pinnu lati lo
Ni awọn ìkàwé version 0.1.5 Agbara lati gba data lati bloat ti awọn tabili ati awọn atọka ati dahun si ni ọna ti akoko ti ṣafikun.
Awọn iṣoro meje ati mẹjọ - awọn atọka ti ko to ati awọn atọka ti ko lo
Awọn iwadii aisan meji wọnyi ni:
Bi Mo ti kọ tẹlẹ, a lo iṣeto ni pẹlu ọpọlọpọ awọn ẹda, ati fifuye kika lori awọn ọmọ ogun oriṣiriṣi yatọ ni ipilẹ. Bi abajade, ipo naa wa jade pe diẹ ninu awọn tabili ati awọn atọka lori diẹ ninu awọn agbalejo ni a ko lo ni adaṣe, ati fun itupalẹ o nilo lati gba awọn iṣiro lati gbogbo awọn ọmọ-ogun ninu iṣupọ naa.
Ọna yii gba wa laaye lati ṣafipamọ ọpọlọpọ awọn mewa gigabytes nipa yiyọ awọn atọka ti a ko lo tẹlẹ, bakannaa fifi awọn atọka ti o padanu si awọn tabili ti a ko lo.
Bi ipari
Nitoribẹẹ, fun fere gbogbo awọn iwadii aisan o le tunto
Diẹ ninu awọn iwadii aisan le ṣee ṣe ni awọn idanwo iṣẹ-ṣiṣe lẹsẹkẹsẹ lẹhin yiyi awọn ijira data jade. Ati pe eyi jẹ boya ọkan ninu awọn ẹya ti o lagbara julọ ti ile-ikawe mi. Apeere ti lilo le ṣee ri ninu
O jẹ oye lati ṣe awọn sọwedowo fun awọn atọka ti a ko lo tabi ti o padanu, ati fun bloat, nikan lori aaye data gidi kan. Awọn iye ti a gba le ṣe igbasilẹ ni
Mo nireti pe pg-index-ilera yoo wulo ati ni eletan. O tun le ṣe alabapin si idagbasoke ile-ikawe nipa jijabọ awọn iṣoro ti o rii ati didaba awọn iwadii aisan tuntun.
orisun: www.habr.com