Ajụjụ mara mma nke onye nrụpụta na-ewetara DBA ya ma ọ bụ onye nwe azụmaahịa na-ewetara onye ndụmọdụ PostgreSQL ọ fọrọ nke nta ka ọ bụrụ otu ihe: "Gịnị mere arịrịọ ji ewe ogologo oge iji mechaa na nchekwa data?"
Usoro omenala:
- algọridim na-adịghị arụ ọrụ
mgbe ị kpebiri isonyere ọtụtụ CTE ihe karịrị iri puku kwuru iri puku ndekọ - ọnụ ọgụgụ na-adịghị mkpa
ma ọ bụrụ na nkesa nke data n'ezie na tebụl adịlarị dị nnọọ iche na nke AnaLYZE anakọtara n'oge ikpeazụ - "plug" na akụrụngwa
na enwekwaghị ike ịgbakọ raara onwe ya nye nke CPU, gigabytes nke ebe nchekwa na-agbapụta mgbe niile, ma ọ bụ diski enweghị ike idobe “ọchịchọ” niile nke nchekwa data. - igbochi site na asọmpi usoro
Ma ọ bụrụ na blockings bụ nnọọ ike ijide na nyochaa, mgbe ahụ maka ihe ọ bụla ọzọ anyị chọrọ atụmatụ ajụjụ, nke enwere ike nweta site na iji (Ọ ka mma, n'ezie, ịkọwapụta ozugbo (ANALYZE, BUFFERS) ...) ma ọ bụ .
Ma, dị ka ekwuru n'otu akwụkwọ ahụ,
"Ịghọta atụmatụ bụ nka, na iji mara ya chọrọ ahụmahụ ụfọdụ..."
Ma ị nwere ike ime na-enweghị ya ma ọ bụrụ na ị na-eji ngwá ọrụ kwesịrị ekwesị!
Kedu ihe atụmatụ ajụjụ na-adị ka? Ihe dị ka nke ahụ:
Index Scan using pg_class_relname_nsp_index on pg_class (actual time=0.049..0.050 rows=1 loops=1)
Index Cond: (relname = $1)
Filter: (oid = $0)
Buffers: shared hit=4
InitPlan 1 (returns $0,$1)
-> Limit (actual time=0.019..0.020 rows=1 loops=1)
Buffers: shared hit=1
-> Seq Scan on pg_class pg_class_1 (actual time=0.015..0.015 rows=1 loops=1)
Filter: (relkind = 'r'::"char")
Rows Removed by Filter: 5
Buffers: shared hit=1ma ọ bụ dị ka nke a:
"Append (cost=868.60..878.95 rows=2 width=233) (actual time=0.024..0.144 rows=2 loops=1)"
" Buffers: shared hit=3"
" CTE cl"
" -> Seq Scan on pg_class (cost=0.00..868.60 rows=9972 width=537) (actual time=0.016..0.042 rows=101 loops=1)"
" Buffers: shared hit=3"
" -> Limit (cost=0.00..0.10 rows=1 width=233) (actual time=0.023..0.024 rows=1 loops=1)"
" Buffers: shared hit=1"
" -> CTE Scan on cl (cost=0.00..997.20 rows=9972 width=233) (actual time=0.021..0.021 rows=1 loops=1)"
" Buffers: shared hit=1"
" -> Limit (cost=10.00..10.10 rows=1 width=233) (actual time=0.117..0.118 rows=1 loops=1)"
" Buffers: shared hit=2"
" -> CTE Scan on cl cl_1 (cost=0.00..997.20 rows=9972 width=233) (actual time=0.001..0.104 rows=101 loops=1)"
" Buffers: shared hit=2"
"Planning Time: 0.634 ms"
"Execution Time: 0.248 ms"Mana ịgụ atụmatụ ahụ na ederede "site na mpempe akwụkwọ" siri ike ma edoghị anya:
- na-egosipụta na ọnụ nchikota site subtree akụrụngwa
ya bụ, iji ghọta oge ole ọ na-ewe iji gbuo otu ọnụ, ma ọ bụ ole kpọmkwem ihe ọgụgụ a sitere na tebụl welitere data na diski ahụ, ịkwesịrị iwepụ otu na nke ọzọ. - chọrọ oge ọnụ mụbaa site na loops
ee, mwepu abụghị ọrụ kachasị mgbagwoju anya nke kwesịrị ime "n'isi" - mgbe niile, a na-egosi oge igbu oge dị ka nkezi maka otu ogbugbu nke ọnụ, ma enwere ike inwe ọtụtụ narị n'ime ha. - nke ọma, na ihe niile a ọnụ na-egbochi anyị ịza ajụjụ bụ isi - ya mere onye "njikọ kacha adịghị ike"?
Mgbe anyị gbalịrị ịkọwa ihe a niile nye ọtụtụ narị ndị mmepe anyị, anyị chọpụtara na site n'èzí ọ dị ka nke a:

Ma nke ahụ pụtara na anyị chọrọ ...
Ngwá ọrụ
N'ime ya anyị gbalịrị ịnakọta isi ọrụ niile na-enyere aka ịghọta "onye ga-ata ụta na ihe a ga-eme" dịka atụmatụ na arịrịọ siri dị. Ọfọn, ma kesaa akụkụ nke ahụmịhe gị na ndị obodo.
Zute ma jiri -
Nhụta nke atụmatụ
Ọ dị mfe ịghọta atụmatụ mgbe ọ dị ka nke a?
Seq Scan on pg_class (actual time=0.009..1.304 rows=6609 loops=1)
Buffers: shared hit=263
Planning Time: 0.108 ms
Execution Time: 1.800 ms
Ọ bụghị n'ezie.
Ma dị ka nke a, n'ụdị nke mbirimgbe e kewapụrụ ihe ngosi isi, ọ na-edo anya karịa:

Ma ọ bụrụ na atụmatụ ahụ dị mgbagwoju anya karị, ọ ga-abịa napụta nkesa oge pichart site ọnụ:

Ọfọn, maka nhọrọ ndị kasị sie ike ọ na-adị ngwa ngwa iji nyere aka chaatị ọganihu:

Dịka ọmụmaatụ, enwere ọnọdụ ndị na-adịghị mkpa mgbe atụmatụ nwere ike inwe ihe karịrị otu mgbọrọgwụ:


Ngosipụta ihe owuwu
Ọfọn, ọ bụrụ na edozilarị ihe niile nke atụmatụ ahụ na ntụpọ ọnya ya, gịnị kpatara na ị gaghị eme ka onye mmepụta ahụ pụta ìhè ma kọwaa ha na "asụsụ Russian"?
Anyị achịkọtalarị ụdị ndebiri iri na abuo ole na ole.
Profaịlụ ajụjụ n'ahịrị n'ahịrị
Ugbu a, ọ bụrụ na i buliri ajụjụ mbụ ahụ na atụmatụ a tụlere, ị ga-ahụ oge ole ejiri na nkwupụta nke ọ bụla - ihe dị ka nke a:

... ma ọ bụ ọbụna dị ka nke a:

Dochie paramita n'ime arịrịọ
Ọ bụrụ na ị "tinyere" ọ bụghị naanị arịrịọ na atụmatụ ahụ, kamakwa parampat ya site na ahịrị DETAIL nke log ahụ, ị nwere ike detuo ya n'otu n'ime nhọrọ ndị a:
- na nnọchi uru na ajụjụ
maka igbu egbu ozugbo na ntọala gị na ịkọwapụta profaịlụ ọzọSELECT 'const', 'param'::text; - na nnọchi uru site na PREPARE/EXECUTE
iṅomi ọrụ nke onye nhazi oge, mgbe enwere ike ileghara akụkụ parametric - dịka ọmụmaatụ, mgbe ị na-arụ ọrụ na tebụl ndị kewara ekewa.DEALLOCATE ALL; PREPARE q(text) AS SELECT 'const', $1::text; EXECUTE q('param'::text);
Archive nke atụmatụ
Tapawa, nyochaa, kesaa ndị ọrụ ibe! A ga-edobe atụmatụ ndị a ma ị nwere ike ịlaghachikwute ha ma emechaa:
Mana ọ bụrụ na ịchọghị ka ndị ọzọ hụ atụmatụ gị, echefula ịlele igbe “ebipụtala na ebe nchekwa”.
N'isiokwu ndị na-esonụ, m ga-ekwu maka ihe isi ike na mkpebi ndị na-ebilite mgbe a na-enyocha atụmatụ.
isi: www.habr.com
