He aha ka ʻōlelo leo ʻo EXPLAIN a pehea e kamaʻilio ai

ʻO ka nīnau maʻamau a ka mea hoʻomohala e nīnau ai i kā lākou DBA a i ʻole ka mea nona ka ʻoihana e nīnau ai i kahi kākā'ōlelo PostgreSQL he aneane like mau ia: "No ke aha i lōʻihi ai ka hoʻokō ʻana o nā nīnau ma ka waihona ʻikepili?"

Nā kumu kuʻuna:

  • algorithm kūpono ʻole
    ke hoʻoholo ʻoe e hui pū me kekahi mau CTE ma waena o kekahi mau ʻumi tausani o nā moʻolelo
  • ʻikepili pili ʻole
    inā ʻokoʻa loa ka hoʻolaha maoli ʻana o ka ʻikepili ma ka papa mai ka mea i hōʻiliʻili ʻia e ANALYZE i ka manawa hope loa
  • "hoʻopili" i nā kumuwaiwai
    a ʻaʻohe lawa ka mana helu CPU i hoʻolaʻa ʻia, ke hoʻonui mau ʻia nei nā gigabytes o ka hoʻomanaʻo, a i ʻole ʻaʻole hiki i ka disk ke mālama i nā "makemake" āpau o ka waihona ʻikepili.
  • ke ālai ʻana mai nā kaʻina hana hoʻokūkū

A inā paʻakikī ka pale ʻana e hopu a kālailai, a laila no nā mea ʻē aʻe a pau e pono ai mākou hoʻolālā nīnau, hiki ke loaʻa me ka hoʻohana ʻana Mea hoʻohana WEHEWEHE (ʻOi aku ka maikaʻi, ʻoiaʻiʻo, e WEHEWEHE koke (ANALYZE, BUFFERS) …) ai ʻole module wehewehe_aunoa.

Akā, e like me ka mea i ʻōlelo ʻia ma ka palapala like,

"He hana noʻeau ka hoʻomaopopo ʻana i kahi hoʻolālā, a no ke akamai ʻana, pono ke loaʻa ʻana o kahi ʻike nui, ..."

Akā hiki iā ʻoe ke hana me ka ʻole o ia inā ʻoe e hoʻohana i ka mea hana kūpono!

Pehea ke ʻano o kahi hoʻolālā nīnau? E like me kēia:

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

a i ʻole penei:

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

Akā, he mea paʻakikī loa ka heluhelu ʻana i kahi hoʻolālā mai ka wā ʻōpiopio a he mea maʻalahi hoʻi:

  • hōʻike ʻia ma ka node huina o nā kumuwaiwai lāʻau liʻiliʻi
    ʻo ia hoʻi, no ka hoʻomaopopo ʻana i ka nui o ka manawa i hoʻokō ʻia ai kahi kikowaena kikoʻī, a i ʻole ka nui o ka ʻikepili i kēia heluhelu ʻana mai ka papa i kiʻi ʻia mai ka disk, pono ʻoe e unuhi i kekahi mai kekahi.
  • pono ka manawa node hoʻonui ʻia e nā loops
    ʻAe, ʻaʻole ka unuhi ʻana ka hana paʻakikī loa e hana "i loko o kou poʻo" - ma hope o nā mea āpau, ua hōʻike ʻia ka manawa hoʻokō ma ke ʻano he awelika no hoʻokahi hoʻokō ʻana o kahi node, a hiki ke loaʻa nā haneli o lākou
  • ʻĀ, ʻo kēia mau mea a pau e pale aku iā mākou mai ka pane ʻana i ka nīnau nui - no laila ʻo wai ka loulou nāwaliwali loa?

I ko mākou ho'āʻo ʻana e wehewehe i kēia mau mea a pau i kekahi mau haneli o kā mākou mau mea hoʻomohala, ua ʻike mākou mai waho mai he ʻano like ia me kēia:

He aha ka ʻōlelo leo ʻo EXPLAIN a pehea e kamaʻilio ai

A ʻo ia hoʻi, pono mākou…

Nā mea hana

Ma loko, ua hoʻāʻo mākou e hōʻiliʻili i nā ʻano hana koʻikoʻi a pau e kōkua iā mākou e hoʻomaopopo, ma muli o ka hoʻolālā a me ke noi, "ʻo wai ka mea e hewa ai a me ka mea e hana ai." A, ʻoiaʻiʻo hoʻi, ua kaʻana like mākou i kekahi o ko mākou ʻike me ke kaiāulu.
E hui a hauʻoli - wehewehe.tensor.ru

ʻIke ʻia o nā hoʻolālā

He mea maʻalahi anei ke hoʻomaopopo i kahi hoʻolālā ke ʻano like me kēia?

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

ʻAʻole naʻe.

Akā, pēlā nō ia, ma ke ʻano pōkole, ke hoʻokaʻawale ʻia nā ʻōkuhi koʻikoʻi, ʻoi aku ka maopopo:

He aha ka ʻōlelo leo ʻo EXPLAIN a pehea e kamaʻilio ai

Akā inā ʻoi aku ka paʻakikī o ka hoʻolālā, e hiki mai ke kōkua pakuhi hoʻokaʻawale manawa e nā kikowaena:

He aha ka ʻōlelo leo ʻo EXPLAIN a pehea e kamaʻilio ai

ʻĀ, no nā koho paʻakikī loa, wikiwiki ʻo ia e hoʻopakele kiʻikuhi hoʻokō:

He aha ka ʻōlelo leo ʻo EXPLAIN a pehea e kamaʻilio ai

Eia kekahi laʻana, aia kekahi mau kūlana koʻikoʻi ʻole i ka wā e loaʻa ai i kahi hoʻolālā he ʻoi aku ma mua o hoʻokahi kumu ʻoiaʻiʻo:

He aha ka ʻōlelo leo ʻo EXPLAIN a pehea e kamaʻilio aiHe aha ka ʻōlelo leo ʻo EXPLAIN a pehea e kamaʻilio ai

Nā hōʻailona kūkulu

ʻĀ, inā ua hoʻonohonoho mua ʻia a ʻike ʻia ke ʻano holoʻokoʻa o ka hoʻolālā a me kona mau nāwaliwali, no ke aha e hōʻike ʻole ai iā lākou i ka mea hoʻomohala a wehewehe iā lākou ma ka ʻōlelo Pelekania maʻalahi?

He aha ka ʻōlelo leo ʻo EXPLAIN a pehea e kamaʻilio aiUa hōʻiliʻili mua mākou i kekahi mau kakini o kēia mau mamana ʻōlelo paipai.

Mea hoʻopili nīnau lālani-ma-laina

I kēia manawa, inā ʻoe e kau i ka nīnau mua ma ka hoʻolālā e kālailai ʻia nei, hiki iā ʻoe ke ʻike i ka nui o ka manawa i hoʻolilo ʻia ma kēlā me kēia mea hana pākahi—e like me kēia:

He aha ka ʻōlelo leo ʻo EXPLAIN a pehea e kamaʻilio ai

...a i ʻole e like me kēia:

He aha ka ʻōlelo leo ʻo EXPLAIN a pehea e kamaʻilio ai

Ke pani nei i nā palena i loko o kahi nīnau

Inā ʻaʻole ʻoe i hoʻopili wale i ka nīnau akā ʻo kāna mau palena hoʻi mai ka laina DETAIL o ka log i ka hoʻolālā, hiki iā ʻoe ke kope hou iā ia me ka hoʻohana ʻana i kekahi o nā koho aʻe:

  • me ka hoʻololi ʻana o nā waiwai i loko o ka nīnau
    no ka hoʻokō pololei ʻana ma luna o kona kumu ponoʻī a me ka hoʻopili hou ʻana
    SELECT 'const', 'param'::text;
  • me ka hoʻololi ʻana o nā waiwai ma o PREPARE/EXECUTE
    e hoʻohālike i ka hana o ka mea hoʻonohonoho manawa, i ka wā e hiki ai ke hoʻowahāwahā ʻia ka ʻāpana parametric - no ka laʻana, i ka wā e hana ana ma nā papa i māhele ʻia
    DEALLOCATE ALL;
    PREPARE q(text) AS SELECT 'const', $1::text;
    EXECUTE q('param'::text);
    

Waihona o nā hoʻolālā

E hoʻopili, kālailai, a kaʻana like me nā hoa hana! E waiho ʻia kāu mau hoʻolālā ma ka waihona, a hiki iā ʻoe ke hoʻi iā lākou ma hope: wehewehe.tensor.ru/archive

Akā inā ʻaʻole ʻoe makemake i nā poʻe ʻē aʻe e ʻike i kāu hoʻolālā, mai poina e kaha i ka pahu "mai hoʻolaha ma ka waihona".

Ma nā ʻatikala aʻe, e kūkākūkā wau i nā pilikia a me nā hoʻonā e kū mai ana i ka wā e kālailai ai i kahi hoʻolālā.

Source: www.habr.com

E kūʻai i ka hoʻokipa hilinaʻi no nā pūnaewele me ka pale DDoS, nā kikowaena VPS VDS 🔥 E kūʻai i ka hoʻokipa pūnaewele hilinaʻi me ka pale DDoS, nā kikowaena VPS VDS | ProHoster