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
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=1
ma ọ 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