Te hauora o nga tohu i roto i te PostgreSQL ma nga kanohi o te kaiwhakawhanake Java

Hiha.

Ko Vanya toku ingoa, he kaiwhakawhanake Java ahau. Ko te mea ka nui taku mahi ki te PostgreSQL - te whakarite i te papaaarangi, te arotau i te hanganga, te mahi, me te takaro DBA iti i nga wiki.

I tata nei kua whakatikahia e au etahi putunga raraunga i roto i a maatau miihini me te tuhi i tetahi whare pukapuka java pg-index-health, he maamaa ake tenei mahi, he whakaora i taku wa me te awhina i ahau ki te karo i etahi hapa noa i mahia e nga kaihanga. Ko tenei whare pukapuka ka korerohia i tenei ra.

Te hauora o nga tohu i roto i te PostgreSQL ma nga kanohi o te kaiwhakawhanake Java

Whakakape

Ko te putanga matua o PostgreSQL e mahi tahi ana ahau ko te 10. Ko nga patai SQL katoa e whakamahia ana e ahau ka whakamatauria i te putanga 11. Ko te putanga tautoko iti ko 9.6.

prehistory

I timata katoa tata ki te kotahi tau ki muri me tetahi ahuatanga rereke ki ahau: ko te hanga whakataetae o te taurangi mai i te puru ka mutu he hapa. Ko te taupū ake, pera i nga wa o mua, i noho tonu ki roto i te putunga korero i roto i te ahua muhu. I kitea he ngoikoretanga te tātari rangitaki temp_file_limit. Ka mutu ka haere... Ka keri hohonu, ka kitea e au te tini o nga raru i roto i te whirihoranga putunga raraunga, a, ka huri i oku ringaringa, ka timata ki te whakatika me te kanapa o oku kanohi.

Raruraru tuatahi - whirihoranga taunoa

Tena pea kei te tino ngenge nga tangata katoa ki te kupu whakarite mo Postgres, ka taea te whakahaere i runga i te kawhe, engari ... ko te whirihoranga taunoa ka tino whakaara ake i te maha o nga patai. I te iti rawa, he mea tika kia aro atu tiaki_mahi_mem, temp_file_limit, tauākī_wā и maukati_wā.

I roto i to tatou take tiaki_mahi_mem ko te taunoa 64 MB, a temp_file_limit tetahi mea tata ki te 2 GB - kare noa matou i te nui o te mahara ki te hanga taurangi ki runga tepu nui.

No reira, i roto i pg-index-health I kohia e ahau he raupapa , ki taku whakaaro, ko nga tawhā me whirihora mo ia putunga raraunga.

Raruraru tuarua - taupū takirua

Kei te noho a maatau paparangi raraunga ki nga puku SSD, ka whakamahia e matou HA-whirihoranga me nga pokapū raraunga maha, rangatira rangatira me n-te maha o nga tauira. Ko te mokowā kōpae he rauemi tino nui mo tatou; he mea iti ake i te mahi me te kohi CPU. No reira, i tetahi taha, me tohu taatau mo te panui tere, a, i tetahi atu taha, kaore matou e hiahia ki te kite i nga tohu kore e tika ana i roto i te putunga korero, na te mea ka kai ratou i te waahi me te whakaroa i te whakahou raraunga.

Na inaianei, kua whakahokia mai nga mea katoa taupū muhu a kua nui te kitenga nga korero a Oleg Bartunov, I whakatau ahau ki te whakarite i tetahi purenga "nui". I puta mai kaore nga kaiwhakawhanake e pai ki te panui i nga tuhinga raraunga. Kare ratou e tino pai. Na tenei, e rua nga hapa angamaheni ka ara ake - he tohu i hangaia ma te ringa ki runga i te matua matua me tetahi tohu "a-ringa" rite ki runga i tetahi pou motuhake. Ko te meka kaore e hiahiatia ana - Ka mahia e Postgres nga mea katoa. Ko enei tohu ka taea te whakakore haumaru, a kua puta nga tohu mo tenei kaupapa taupū_rua.

Raruraru tuatoru - nga tohu tohu

Ko te nuinga o nga kaiwhakawhanake tauhou ka hanga taurangi ki te pou kotahi. Ake, ka tino whakamatauria tenei pakihi, ka tiimata te tangata ki te arotau i a raatau patai me te taapiri i nga tohu tohu uaua e uru ana ki nga pou maha. Koinei te ahua o nga tohu i runga i nga pou A, A + B, A + B + C me etahi atu. Ko nga tohu tuatahi e rua o enei tohu ka taea te maka pai ki waho, na te mea ko enei nga tohu tuatahi o te tuatoru. He nui hoki te mokowā kōpae e penapena ana, ā, he tātaritanga mō tēnei taupū_whakawhitinga.

Rapanga tuawha - nga taviri ke kore he tohu

Ka taea e Postgres te hanga here matua kee me te kore e tohu i te taurangi tautoko. I roto i te maha o nga ahuatanga ehara tenei i te raruraru, a kaore pea e puta ake ... Mo tenei wa ...

He rite tonu ki a matou: he mea noa i etahi wa i te wa he mahi, e rere ana i runga i te waarangi me te whakakore i te papaaarangi o nga ota whakamatautau, ka timata te "tapiri" ki a matou e te rangatira rangatira. I pau te PTM me te IO, ka puhoi nga tono, ka mutu te wa, e rima rau te ratonga. Te tātari tere pg_stat_activity i whakaatu nga patai penei:

delete from <table> where id in (…)

I roto i tenei take, o te akoranga, i reira he taupū id i roto i te tepu ūnga, a he iti rawa nga rekoata i mukua i runga i te ahua. Ko te ahua me mahi nga mea katoa, engari, aue, kaore.

Ko te mea whakamiharo i haere mai ki te whakaora whakamārama tātari me tana kii, hei taapiri atu ki te whakakore i nga rekoata kei te teepu whainga, kei reira ano te tirotiro tika, a, i runga i tetahi o nga ripanga e pa ana ka taka tenei haki. matawai raupapa na te kore o te taurangi tika. No reira i whanau mai ai nga mahi tirotiro Kī_ke_karekau_taupū.

Rapanga tuarima – uara null i roto i nga taupū

Ma te taunoa, ka whakaurua e Postgres nga uara kore i roto i nga tohu tohu btree, engari kaore e hiahiatia ana ki reira. No reira, ka whakapau kaha ahau ki te maka atu i enei nulls (diagnostics indexes_with_null_values), te hanga taupū wahanga i runga i nga pou korekore ma te momo where <A> is not null. I tenei huarahi i taea e au te whakaiti i te rahi o tetahi o a maatau tohu tohu mai i te 1877 MB ki te 16 KB. Na i roto i tetahi o nga ratonga, kua heke te rahi o te papaaarangi ma te 16% (na te 4.3 GB i roto i nga tau tino) na te whakakorenga o nga uara kore mai i nga tohu. He nui te penapena i roto i te mokowā kōpae me nga whakarerekētanga tino ngawari. 🙂

Te raruraru tuaono – te kore o nga kii matua

Na te ahua o te tikanga MVCC i Postgres ka taea te ahua penei pupuhii te wa e tipu tere ana te rahi o to tepu na te maha o nga rekoata mate. I whakapono poauau ahau e kore tenei e whakatuma i a tatou, e kore hoki e pa ki to tatou turanga, na te mea, aue!!!, he kaiwhakawhanake noa... Ano te poauau me te poauau o ahau...

I tetahi ra, kotahi te hekenga whakamiharo i tango me te whakahou i nga rekoata katoa i roto i te teepu nui me te kaha whakamahia. I whiwhi matou i te +100 GB ki te rahi tepu mai i te puru. He tino whakama, engari kaore i mutu i reira a maatau mahi. I muri i te mutunga o te mokohau i runga i tenei teepu 15 haora i muri mai, ka kitea e kore e hoki mai te waahi tinana. Kaore i taea e matou te aukati i te ratonga me te whakakii i te VACUUM FULL, no reira ka whakatau matou ki te whakamahi pg_repack. Na ka puta ko tera pg_repack karekau e mohio ki te whakahaere i nga ripanga me te kore he matua matua, etahi atu herenga motuhake ranei, a karekau he matua matua o ta matou papapu. No reira i whanau mai ai nga mahi tirotiro ripanga_kaore_matua_matua.

I roto i te putanga whare pukapuka 0.1.5 Ko te kaha ki te kohi raraunga mai i te pupuhi o nga ripanga me nga taurangi me te whakautu ki a ia i roto i te waa kua taapirihia.

Nga raruraru whitu me te waru - he iti rawa nga tohu tohu me nga tohu kaore i whakamahia

Ko nga tātaritanga e rua e whai ake nei: tables_with_missing_indexes и unused_indexes – i puta mai i to ratou ahua whakamutunga i tata nei. Ko te take kaore e taea te tango me te taapiri.

I tuhia e au, ka whakamahia e matou he whirihoranga me nga tauira maha, a he rereke te taumaha o te panui ki nga kaihautu rereke. Ko te mutunga, ko te ahuatanga ko etahi o nga teepu me nga tohu i runga i etahi kaihautu kaore i te whakamahia, a mo te tātari me kohikohi tatauranga mai i nga kaihautu katoa o te roopu. Tautuhihia nga tatauranga He mea tika ano tenei mo nga kaihautu katoa i roto i te roopu; kaore e taea e koe te mahi i runga i te rangatira anake.

Ma tenei huarahi ka taea e matou te penapena i nga tekau kikipaita ma te tango i nga tohu kaore i whakamahia, me te taapiri i nga tohu kua ngaro ki nga ripanga kare i whakamahia.

Hei mutunga

Ko te tikanga, mo te tata ki nga tātaritanga katoa ka taea e koe te whirihora rārangi whakarerenga. Ma tenei ara, ka taea e koe te whakatinana i nga arowhai i roto i to tono, kia kore ai e puta nga hapa hou, katahi ka whakatika haere i nga mea tawhito.

Ka taea etahi tātaritanga i roto i nga whakamatautau mahi i muri tonu i te hurihanga o nga hekenga raraunga. A koinei pea tetahi o nga ahuatanga tino kaha o taku whare pukapuka. Ka kitea tetahi tauira o te whakamahi i roto whakaaturanga.

He mea tika ki te arowhai mo nga taurangi kaore i whakamahia, ngaro ranei, tae atu ki te pupuhi, i runga i te putunga raraunga tuuturu. Ko nga uara kua kohia ka taea te tuhi ki roto PaateneToko ka tukuna ranei ki te punaha aroturuki.

Ka tino tumanako ahau pg-index-health ka whai hua me te hiahia. Ka taea hoki e koe te whai waahi ki te whakawhanaketanga o te whare pukapuka ma te tuku korero i nga raru ka kitea e koe me te whakaatu i nga tātaritanga hou.

Source: will.com

Tāpiri i te kōrero