Hi
Sunana Vanya kuma ni mai haɓaka Java ne. Ya faru da cewa ina aiki da yawa tare da PostgreSQL - kafa bayanai, inganta tsarin, aiki, da kuma kunna ɗan DBA a karshen mako.
Kwanan nan na gyara bayanai da yawa a cikin ƙananan ayyukanmu kuma na rubuta ɗakin karatu na java
Disclaimer
Babban sigar PostgreSQL da nake aiki dashi shine 10. Duk tambayoyin SQL da nake amfani da su ana gwada su akan sigar 11. Mafi ƙarancin sigar tallafi shine 9.6.
prehistory
Duk ya fara kusan shekara guda da suka gabata tare da yanayin da ya kasance baƙon abu a gare ni: gasa da ƙirƙirar ƙididdiga daga shuɗi ya ƙare tare da kuskure. Fihirisar kanta, kamar yadda ta saba, ta kasance a cikin ma'ajin bayanai a cikin mara inganci. Binciken log ɗin ya nuna ƙarancin
Matsala daya - tsoho tsari
Wataƙila kowa ya gaji da misalin game da Postgres, wanda za'a iya gudanar da shi a kan mai yin kofi, amma ... ƙayyadaddun ƙayyadaddun ƙayyadaddun gaske yana haifar da tambayoyi da yawa. Aƙalla, yana da daraja a kula da shi kiyaye_aiki_mem, temp_file_limit, sanarwa_lokaci и kulle_lokaci.
A wajenmu kiyaye_aiki_mem shi ne tsoho 64 MB, kuma temp_file_limit wani abu a kusa da 2 GB - ba mu da isasshen ƙwaƙwalwar ajiya don ƙirƙirar fihirisa akan babban tebur.
Saboda haka, in pg-index-lafiya Na tattara jerin abubuwa
Matsala ta biyu - fihirisa kwafi
Takaddun bayanan mu suna rayuwa akan faifan SSD, kuma muna amfani da su HA-tsari tare da cibiyoyin bayanai da yawa, babban mai watsa shiri da n- adadin kwafi. Wurin diski abu ne mai matukar amfani a gare mu; ba shi da mahimmanci fiye da aiki da amfani da CPU. Don haka, a gefe guda, muna buƙatar fihirisa don karantawa da sauri, a gefe guda kuma, ba ma son ganin alamun da ba dole ba a cikin ma'ajin bayanai, tunda suna cinye sararin samaniya kuma suna raguwar sabunta bayanai.
Kuma yanzu, bayan mayar da komai
Matsala ta uku - fihirisa masu shiga tsakani
Yawancin masu haɓaka novice suna ƙirƙirar fihirisa akan shafi ɗaya. Sannu a hankali, kasancewar sun sami wannan sana'a sosai, mutane sukan fara inganta tambayoyinsu kuma suna ƙara ƙarin hadaddun fihirisa waɗanda suka haɗa da ginshiƙai da yawa. Wannan shine yadda fihirisa a kan ginshiƙai ke bayyana A, A + B, A+B+C da sauransu. Biyu na farko na waɗannan fihirisa za a iya jefa su cikin aminci, tun da prefixes ne na na uku. Wannan kuma yana adana sararin diski mai yawa kuma akwai bincike don wannan
Matsala hudu - maɓallan ƙasashen waje ba tare da fihirisa ba
Postgres yana ba ku damar ƙirƙirar maɓalli na ƙasashen waje ba tare da ƙididdige fihirisar goyan baya ba. A yawancin yanayi wannan ba matsala ba ne, kuma yana iya yiwuwa ma ba zai iya bayyana kansa ba ... A halin yanzu ...
Haka yake tare da mu: kawai cewa a wani lokaci a wani lokaci wani aiki, yana gudana bisa ga jadawalin da kuma share bayanan umarni na gwaji, ya fara "ƙara" mana da mai masaukin baki. CPU da IO sun tafi ɓata, buƙatun sun ragu kuma sun ƙare, sabis ɗin ya kasance ɗari biyar. Bincike mai sauri
delete from <table> where id in (…)
A wannan yanayin, ba shakka, akwai fihirisa ta id a cikin tebur ɗin da aka yi niyya, kuma kaɗan ne aka share bayanan bisa ga yanayin. Ya zama kamar duk abin da ya kamata ya yi aiki, amma, alas, bai yi ba.
Abin mamaki ya zo don ceto bayyana nazari kuma ya ce baya ga goge bayanan da ke cikin tebur ɗin da aka yi niyya, akwai kuma tantance ingancin tantancewa, kuma a ɗaya daga cikin teburan da ke da alaƙa wannan cak ɗin ya gaza. duban bi-biyu saboda rashin maƙasudin da ya dace. Ta haka aka haifi bincike
Matsala biyar – ƙima maras kyau a cikin fihirisa
Ta hanyar tsoho, Postgres ya haɗa da ƙima mara kyau a cikin fihirisar btree, amma yawanci ba a buƙatar su a can. Don haka, na yi ƙoƙari na yi ƙoƙari na jefar da waɗannan nulls (diagnostics where <A> is not null
. Ta haka ne na sami damar rage girman daya daga cikin fihirisar mu daga 1877 MB zuwa 16 KB. Kuma a cikin ɗayan sabis ɗin, girman bayanan ya ragu a cikin duka da 16% (ta 4.3 GB a cikakkiyar lambobi) saboda keɓance ƙimar mara amfani daga ma'auni. Babban tanadi a cikin sararin faifai tare da sauƙaƙan gyare-gyare. 🙂
Matsala shida - rashin maɓalli na farko
Saboda yanayin tsarin
Wata rana, ƙaura ɗaya mai ban mamaki ta ɗauki kuma ta sabunta duk bayanan a cikin babban tebur da aka yi amfani da shi sosai. Mun sami +100 GB zuwa girman tebur daga shuɗi. Abin kunya ne, amma mugunyar mu ba ta kare a nan ba. Bayan autovacuum akan wannan tebur ya ƙare sa'o'i 15 bayan haka, ya bayyana a fili cewa wurin jiki ba zai dawo ba. Ba za mu iya dakatar da sabis ɗin ba kuma mu sanya VACUUM FULL, don haka mun yanke shawarar yin amfani da shi
A cikin sigar ɗakin karatu 0.1.5 An ƙara ikon tattara bayanai daga ɓarna na tebur da fihirisa da kuma ba da amsa a kan lokaci.
Matsaloli bakwai da takwas - rashin isassun fihirisa da fihirisar da ba a yi amfani da su ba
Abubuwa biyu masu zuwa sune:
Kamar yadda na riga na rubuta, muna amfani da tsari tare da kwafi da yawa, kuma nauyin karatu akan runduna daban-daban ya bambanta. A sakamakon haka, yanayin ya zama cewa ba a amfani da wasu teburi da fihirisa akan wasu runduna a zahiri, kuma don bincike kuna buƙatar tattara ƙididdiga daga duk rundunonin da ke cikin gungu.
Wannan hanya ta ba mu damar adana dubun gigabytes da yawa ta hanyar cire fihirisa da ba a taɓa amfani da su ba, da kuma ƙara maƙasudin da ba a taɓa amfani da su ba zuwa teburan da ba a cika amfani da su ba.
A matsayin ƙarshe
Tabbas, don kusan dukkanin bincike za ku iya saitawa
Ana iya yin wasu bincike a cikin gwaje-gwajen aiki nan da nan bayan ƙaddamar da ƙaura na bayanai. Kuma wannan shi ne watakila daya daga cikin mafi ƙarfi fasali na laburare. Ana iya samun misalin amfani a ciki
Yana da ma'ana don yin cak don ƙididdiga marasa amfani ko ɓacewa, da kuma kumburi, kawai akan ainihin bayanan bayanai. Ana iya yin rikodin ƙimar da aka tattara a ciki
Ina fatan hakan pg-index-lafiya zai zama da amfani kuma a cikin buƙata. Hakanan kuna iya ba da gudummawa ga haɓaka ɗakin karatu ta hanyar ba da rahoton matsalolin da kuka samu da ba da shawarar sabbin bincike.
source: www.habr.com