Kedu ihe kọwapụtara gbachiri nkịtị yana otu esi eme ka ọ na-ekwu okwu

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 Kọwaa onye ọrụ (Ọ ka mma, n'ezie, ịkọwapụta ozugbo (ANALYZE, BUFFERS) ...) ma ọ bụ modul auto_explain.

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:

Kedu ihe kọwapụtara gbachiri nkịtị yana otu esi eme ka ọ na-ekwu okwu

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 - kọwaa.tensor.ru

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:

Kedu ihe kọwapụtara gbachiri nkịtị yana otu esi eme ka ọ na-ekwu okwu

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

Kedu ihe kọwapụtara gbachiri nkịtị yana otu esi eme ka ọ na-ekwu okwu

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

Kedu ihe kọwapụtara gbachiri nkịtị yana otu esi eme ka ọ na-ekwu okwu

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ụ:

Kedu ihe kọwapụtara gbachiri nkịtị yana otu esi eme ka ọ na-ekwu okwuKedu ihe kọwapụtara gbachiri nkịtị yana otu esi eme ka ọ na-ekwu okwu

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"?

Kedu ihe kọwapụtara gbachiri nkịtị yana otu esi eme ka ọ na-ekwu okwuAnyị 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:

Kedu ihe kọwapụtara gbachiri nkịtị yana otu esi eme ka ọ na-ekwu okwu

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

Kedu ihe kọwapụtara gbachiri nkịtị yana otu esi eme ka ọ na-ekwu okwu

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: nkọwa.tensor.ru/archive

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

Tinye a comment