PostgreSQL แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜. แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 1 - แƒ›แƒแƒฎแƒกแƒ”แƒœแƒ”แƒ‘แƒ

แƒ˜แƒœแƒŸแƒ˜แƒœแƒ”แƒ แƒ˜ - แƒšแƒแƒ—แƒ˜แƒœแƒฃแƒ แƒ˜แƒ“แƒแƒœ แƒ—แƒแƒ แƒ’แƒ›แƒœแƒ - แƒจแƒ—แƒแƒ’แƒแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜.
แƒ˜แƒœแƒŸแƒ˜แƒœแƒ”แƒ แƒก แƒงแƒ•แƒ”แƒšแƒแƒคแƒ แƒ˜แƒก แƒ’แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ. (แƒ’) R. Diesel.
แƒ”แƒžแƒ˜แƒ’แƒ แƒแƒคแƒ”แƒ‘แƒ˜.
PostgreSQL แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜. แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 1 - แƒ›แƒแƒฎแƒกแƒ”แƒœแƒ”แƒ‘แƒ
แƒแƒœ แƒแƒ›แƒ‘แƒแƒ•แƒ˜ แƒ˜แƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ—แƒฃ แƒ แƒแƒขแƒแƒ› แƒฃแƒœแƒ“แƒ แƒแƒฎแƒกแƒแƒ•แƒ“แƒ”แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒขแƒแƒ แƒก แƒ—แƒแƒ•แƒ˜แƒกแƒ˜ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒฌแƒแƒ แƒกแƒฃแƒšแƒ˜.

แƒฌแƒ˜แƒœแƒแƒกแƒ˜แƒขแƒงแƒ•แƒแƒแƒ‘แƒ

แƒงแƒ•แƒ”แƒšแƒ แƒกแƒแƒฎแƒ”แƒšแƒ˜ แƒจแƒ”แƒ˜แƒชแƒ•แƒแƒšแƒ. แƒ›แƒแƒขแƒฉแƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ˜แƒ—แƒ˜แƒ. แƒ›แƒแƒกแƒแƒšแƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒแƒ•แƒขแƒแƒ แƒ˜แƒก แƒžแƒ˜แƒ แƒแƒ“แƒ˜ แƒแƒ–แƒ แƒ˜แƒ.

แƒ’แƒแƒ แƒแƒœแƒขแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒฃแƒแƒ แƒงแƒแƒคแƒ: แƒกแƒขแƒแƒขแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ’แƒ”แƒ’แƒ›แƒ˜แƒš แƒกแƒ”แƒ แƒ˜แƒแƒจแƒ˜ แƒแƒ  แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ”แƒ‘แƒ˜แƒก แƒ“แƒ”แƒขแƒแƒšแƒฃแƒ แƒ˜ แƒ“แƒ แƒ–แƒฃแƒกแƒขแƒ˜ แƒแƒฆแƒฌแƒ”แƒ แƒ. แƒ›แƒแƒกแƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒฃแƒงแƒแƒ•แƒœแƒ”แƒ‘แƒšแƒ˜แƒ• แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒจแƒ”แƒฃแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ "แƒ แƒแƒ’แƒแƒ แƒช แƒแƒ แƒ˜แƒก".
แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ แƒ˜แƒ’แƒจแƒ˜, แƒ›แƒแƒกแƒแƒšแƒ˜แƒก แƒ“แƒ˜แƒ“แƒ˜ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒ,
แƒ›แƒ”แƒแƒ แƒ”แƒช, แƒ แƒ”แƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒกแƒแƒฌแƒแƒ แƒ›แƒแƒ แƒ‘แƒแƒ–แƒแƒกแƒ—แƒแƒœ แƒกแƒ˜แƒ›แƒ™แƒ•แƒ”แƒ—แƒ แƒ˜แƒก แƒ’แƒแƒ›แƒ.
แƒแƒ›แƒ˜แƒขแƒแƒ›, แƒกแƒขแƒแƒขแƒ˜แƒ”แƒ‘แƒจแƒ˜ แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ˜แƒ“แƒ”แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜ แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒ–แƒแƒ’แƒแƒ“แƒ˜ แƒคแƒแƒ แƒ›แƒ˜แƒ—.
แƒจแƒ”แƒกแƒแƒซแƒšแƒแƒ, แƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒจแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ แƒ’แƒแƒ˜แƒ–แƒแƒ แƒ“แƒแƒก GitHub-แƒ–แƒ” แƒ’แƒแƒ›แƒแƒฅแƒ•แƒ”แƒงแƒœแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒœแƒ”แƒ›แƒ“แƒ”, แƒแƒœ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒแƒ แƒ. แฒ“แƒ แƒ แƒ’แƒ•แƒ˜แƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒก.

แƒ˜แƒกแƒขแƒแƒ แƒ˜แƒ˜แƒก แƒ“แƒแƒกแƒแƒฌแƒงแƒ˜แƒกแƒ˜ -แƒ’แƒแƒฎแƒกแƒแƒ•แƒ— แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ˜แƒฌแƒงแƒ แƒ”แƒก แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜".
แƒ แƒ แƒ›แƒแƒฎแƒ“แƒ แƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ“, แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒ–แƒแƒ’แƒแƒ“แƒ˜ แƒ—แƒ•แƒแƒšแƒกแƒแƒ–แƒ แƒ˜แƒกแƒ˜แƒ— - "แƒกแƒ˜แƒœแƒ—แƒ”แƒ–แƒ˜, แƒ แƒแƒ’แƒแƒ แƒช PostgreSQL แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒ’แƒแƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒ”แƒ‘แƒ˜แƒก แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒ›แƒ”แƒ—แƒแƒ“แƒ˜ยป

แƒ แƒแƒขแƒแƒ› แƒ›แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ”แƒก แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜?

แƒ™แƒแƒ แƒ’แƒแƒ“, แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ แƒ˜แƒ’แƒจแƒ˜, แƒ˜แƒกแƒ”, แƒ แƒแƒ› แƒแƒ  แƒ“แƒแƒ˜แƒ•แƒ˜แƒฌแƒงแƒแƒ— แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ แƒ—แƒแƒ•แƒ˜, แƒ’แƒแƒ˜แƒฎแƒกแƒ”แƒœแƒแƒ— แƒžแƒ”แƒœแƒกแƒ˜แƒแƒ–แƒ” แƒ’แƒแƒกแƒ•แƒšแƒ˜แƒก แƒ“แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ“แƒฆแƒ”แƒ”แƒ‘แƒ˜.
แƒ›แƒ”แƒแƒ แƒ”แƒช, แƒ“แƒแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜แƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒแƒขแƒ˜แƒ–แƒแƒชแƒ˜แƒ. แƒฃแƒ™แƒ•แƒ” แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ แƒ—แƒแƒ•แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒฎแƒแƒœแƒ“แƒแƒฎแƒแƒœ แƒ•แƒ˜แƒฌแƒงแƒ”แƒ‘ แƒ“แƒแƒ‘แƒœแƒ”แƒฃแƒšแƒแƒ‘แƒแƒก แƒ“แƒ แƒชแƒแƒšแƒ™แƒ”แƒฃแƒšแƒ˜ แƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ•แƒ˜แƒฌแƒงแƒ”แƒ‘แƒแƒก.

แƒ™แƒแƒ แƒ’แƒแƒ“, แƒ“แƒ แƒ แƒแƒช แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜แƒ - แƒ›แƒแƒฃแƒšแƒแƒ“แƒœแƒ”แƒšแƒแƒ“ แƒ”แƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ•แƒ˜แƒœแƒ›แƒ”แƒก แƒ’แƒแƒ›แƒแƒแƒ“แƒ’แƒ”แƒก แƒ“แƒ แƒ“แƒแƒ”แƒฎแƒ›แƒแƒ แƒแƒก แƒแƒ  แƒ’แƒแƒ›แƒแƒ˜แƒ’แƒแƒœแƒแƒก แƒ‘แƒแƒ แƒ‘แƒแƒšแƒ˜ แƒ“แƒ แƒแƒ  แƒจแƒ”แƒแƒ’แƒ แƒแƒ•แƒแƒก แƒกแƒแƒ™แƒแƒ›แƒ˜แƒกแƒ˜แƒ. แƒกแƒฎแƒ•แƒ แƒกแƒ˜แƒขแƒงแƒ•แƒ”แƒ‘แƒ˜แƒ— แƒ แƒแƒ› แƒ•แƒ—แƒฅแƒ•แƒแƒ—, แƒ’แƒแƒแƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒ” แƒจแƒ”แƒœแƒ˜ แƒ™แƒแƒ แƒ›แƒ (แƒแƒ แƒ แƒฎแƒแƒ‘แƒ แƒแƒ•แƒกแƒ™แƒ˜). แƒ แƒแƒ“แƒ’แƒแƒœ แƒแƒ› แƒกแƒแƒ›แƒงแƒแƒ แƒแƒจแƒ˜ แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒฆแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒ“แƒ”แƒ”แƒ‘แƒ˜แƒ. แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜แƒ แƒ˜แƒ“แƒ”แƒ˜แƒก แƒžแƒแƒ•แƒœแƒ. แƒ“แƒ แƒ˜แƒ“แƒ”แƒ˜แƒก แƒ แƒ”แƒแƒšแƒแƒ‘แƒแƒ“ แƒ—แƒแƒ แƒ’แƒ›แƒœแƒ แƒฃแƒ™แƒ•แƒ” แƒฌแƒ›แƒ˜แƒœแƒ“แƒ แƒขแƒ”แƒฅแƒœแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒ˜แƒ.

แƒแƒกแƒ” แƒ แƒแƒ› แƒœแƒ”แƒš-แƒœแƒ”แƒšแƒ แƒ“แƒแƒ•แƒ˜แƒฌแƒงแƒแƒ—...

แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ˜แƒก แƒคแƒแƒ แƒ›แƒฃแƒšแƒ˜แƒ แƒ”แƒ‘แƒ.

แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒ:

PostgreSQL (10.5), แƒจแƒ”แƒ แƒ”แƒฃแƒšแƒ˜ แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ (OLTP+DSS), แƒกแƒแƒจแƒฃแƒแƒšแƒ แƒ“แƒ แƒ›แƒกแƒฃแƒ‘แƒฃแƒฅแƒ˜ แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ, แƒ’แƒแƒœแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ AWS แƒฆแƒ แƒฃแƒ‘แƒ”แƒšแƒจแƒ˜.
แƒแƒ  แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜, แƒ˜แƒœแƒคแƒ แƒแƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜ แƒฌแƒแƒ แƒ›แƒแƒ“แƒ’แƒ”แƒœแƒ˜แƒšแƒ˜แƒ แƒ แƒแƒ’แƒแƒ แƒช แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒšแƒ˜ AWS แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜ แƒ›แƒ˜แƒœแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒ—.

แƒกแƒแƒญแƒ˜แƒ แƒแƒ:

แƒ“แƒแƒแƒ™แƒ•แƒ˜แƒ แƒ“แƒ˜แƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒแƒก แƒ“แƒ แƒกแƒขแƒแƒขแƒฃแƒกแƒก, แƒ˜แƒžแƒแƒ•แƒ”แƒ— แƒ“แƒ แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ— แƒกแƒแƒฌแƒงแƒ˜แƒกแƒ˜ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒ›แƒซแƒ˜แƒ›แƒ” แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒก แƒแƒžแƒขแƒ˜แƒ›แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ™แƒšแƒ” แƒจแƒ”แƒกแƒแƒ•แƒแƒšแƒ˜ แƒแƒœ แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜

แƒ“แƒแƒกแƒแƒฌแƒงแƒ˜แƒกแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒจแƒ”แƒ•แƒ”แƒชแƒแƒ“แƒแƒ— แƒ’แƒแƒ•แƒแƒแƒœแƒแƒšแƒ˜แƒ–แƒแƒ— แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ˜แƒก แƒ’แƒแƒ“แƒแƒญแƒ แƒ˜แƒก แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ”แƒ‘แƒ˜ แƒ˜แƒœแƒŸแƒ˜แƒœแƒ แƒ˜แƒก แƒกแƒแƒ แƒ’แƒ”แƒ‘แƒ”แƒšแƒ˜แƒกแƒ แƒ“แƒ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ“แƒแƒ แƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜แƒก แƒ—แƒ•แƒแƒšแƒกแƒแƒ–แƒ แƒ˜แƒกแƒ˜แƒ—, แƒ“แƒ แƒ›แƒ˜แƒ•แƒชแƒ”แƒ— แƒ›แƒแƒ—, แƒ•แƒ˜แƒœแƒช แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒžแƒ”แƒ แƒกแƒแƒœแƒแƒšแƒ˜แƒก แƒกแƒ˜แƒแƒจแƒ˜, แƒ’แƒแƒฃแƒ›แƒ™แƒšแƒแƒ•แƒ“แƒ”แƒ— แƒกแƒแƒ แƒ’แƒ”แƒ‘แƒ”แƒšแƒกแƒ แƒ“แƒ แƒ–แƒแƒ แƒแƒšแƒก. แƒ›แƒ”แƒœแƒ”แƒฏแƒ›แƒ”แƒœแƒขแƒ˜แƒก.

แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜ 1 - "แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒ—"

แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒก แƒ˜แƒกแƒ” แƒ•แƒขแƒแƒ•แƒ”แƒ‘แƒ—, แƒ แƒแƒ’แƒแƒ แƒช แƒแƒ แƒ˜แƒก. แƒ—แƒฃ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ แƒแƒ˜แƒ›แƒ”แƒ—แƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ™แƒ›แƒแƒงแƒแƒคแƒ˜แƒšแƒ˜ แƒฏแƒแƒœแƒ›แƒ แƒ—แƒ”แƒšแƒแƒ‘แƒ˜แƒก, แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒแƒœ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒ—, แƒ˜แƒก แƒแƒชแƒœแƒแƒ‘แƒ”แƒ‘แƒก DBA แƒ˜แƒœแƒŸแƒ˜แƒœแƒ แƒ”แƒ‘แƒก แƒ”แƒšแƒ”แƒฅแƒขแƒ แƒแƒœแƒฃแƒšแƒ˜ แƒคแƒแƒกแƒขแƒ˜แƒ— แƒแƒœ แƒ‘แƒ˜แƒšแƒ”แƒ—แƒ”แƒ‘แƒ˜แƒก แƒงแƒฃแƒ—แƒจแƒ˜ แƒ˜แƒœแƒชแƒ˜แƒ“แƒ”แƒœแƒขแƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒ—.
แƒ˜แƒœแƒŸแƒ˜แƒœแƒ”แƒ แƒ˜, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ›แƒ˜แƒ˜แƒฆแƒ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ, แƒ’แƒแƒ˜แƒ’แƒ”แƒ‘แƒก แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒแƒก, แƒจแƒ”แƒกแƒ—แƒแƒ•แƒแƒ–แƒ”แƒ‘แƒก แƒ’แƒแƒ›แƒแƒกแƒแƒ•แƒแƒšแƒก แƒแƒœ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒแƒก แƒ—แƒแƒ แƒแƒ–แƒ” แƒ“แƒแƒขแƒแƒ•แƒ”แƒ‘แƒก, แƒ˜แƒ› แƒ˜แƒ›แƒ”แƒ“แƒ˜แƒ—, แƒ แƒแƒ› แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ—แƒแƒ•แƒ˜แƒกแƒ—แƒแƒ•แƒแƒ“ แƒ›แƒแƒ’แƒ•แƒแƒ แƒ“แƒ”แƒ‘แƒ แƒ“แƒ แƒ›แƒแƒ˜แƒœแƒช, แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ›แƒแƒšแƒ” แƒ“แƒแƒ˜แƒ•แƒ˜แƒฌแƒงแƒ”แƒ‘แƒ.
Gingerbread แƒ“แƒ donuts, แƒกแƒ˜แƒกแƒฎแƒšแƒฉแƒแƒฅแƒชแƒ”แƒ•แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ›แƒฃแƒฌแƒฃแƒ™แƒ”แƒ‘แƒ˜Gingerbread แƒ“แƒ donuts:
1. แƒ–แƒ”แƒ“แƒ›แƒ”แƒขแƒ˜ แƒแƒ แƒแƒคแƒ”แƒ แƒ˜
2. แƒงแƒแƒ•แƒ”แƒšแƒ—แƒ•แƒ˜แƒก แƒแƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒกแƒ•แƒšแƒ˜แƒก แƒ“แƒ แƒ“แƒแƒ‘แƒ˜แƒœแƒซแƒฃแƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ.
3. แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒ“แƒ แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ“แƒแƒฎแƒแƒ แƒฏแƒแƒ— แƒกแƒแƒ™แƒฃแƒ—แƒแƒ  แƒ—แƒแƒ•แƒ–แƒ”.
แƒกแƒ˜แƒกแƒฎแƒšแƒฉแƒแƒฅแƒชแƒ”แƒ•แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ›แƒฃแƒฌแƒฃแƒ™แƒ”แƒ‘แƒ˜:
1. แƒแƒ“แƒ แƒ” แƒ—แƒฃ แƒ’แƒ•แƒ˜แƒแƒœ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ˜แƒคแƒ˜แƒฅแƒ แƒ”แƒ‘แƒก แƒแƒ› แƒกแƒแƒ›แƒงแƒแƒ แƒแƒจแƒ˜ แƒงแƒแƒคแƒœแƒ˜แƒก แƒแƒ แƒกแƒ–แƒ” แƒ“แƒ แƒกแƒแƒงแƒแƒ•แƒ”แƒšแƒ—แƒแƒ แƒกแƒแƒ›แƒแƒ แƒ—แƒšแƒ˜แƒแƒœแƒแƒ‘แƒแƒ–แƒ” แƒ“แƒ แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ”แƒ แƒ—แƒฎแƒ”แƒš แƒ“แƒแƒฃแƒกแƒ•แƒแƒ›แƒก แƒกแƒแƒ™แƒฃแƒ—แƒแƒ  แƒ—แƒแƒ•แƒก แƒ™แƒ˜แƒ—แƒฎแƒ•แƒแƒก - แƒ แƒแƒขแƒแƒ› แƒ•แƒฃแƒฎแƒ“แƒ˜ แƒ›แƒแƒ— แƒคแƒฃแƒšแƒก? แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜ แƒงแƒแƒ•แƒ”แƒšแƒ—แƒ•แƒ˜แƒก แƒ”แƒ แƒ—แƒ˜ แƒ“แƒ แƒ˜แƒ’แƒ˜แƒ•แƒ”แƒ - แƒ”แƒ แƒ—แƒแƒ“แƒ”แƒ แƒ—แƒ˜ แƒ™แƒ˜แƒ—แƒฎแƒ•แƒแƒ, แƒ แƒแƒชแƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ›แƒแƒ‘แƒ”แƒ–แƒ แƒ“แƒ”แƒ‘แƒ แƒ“แƒ แƒ“แƒแƒ”แƒ›แƒจแƒ•แƒ˜แƒ“แƒแƒ‘แƒ. แƒ“แƒ แƒ›แƒ˜แƒ›แƒฌแƒแƒ“แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒชแƒแƒ แƒ˜แƒ”แƒšแƒ˜แƒ. แƒกแƒแƒ›แƒฌแƒฃแƒฎแƒแƒ แƒแƒ.
2. แƒ˜แƒœแƒŸแƒ˜แƒœแƒ แƒ˜แƒก แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ แƒœแƒฃแƒšแƒ˜แƒก แƒขแƒแƒšแƒ˜แƒ.
3. แƒกแƒแƒ›แƒฃแƒจแƒแƒแƒก แƒ“แƒแƒ’แƒ”แƒ’แƒ›แƒ•แƒ˜แƒกแƒ แƒ“แƒ แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒกแƒ˜แƒ แƒ—แƒฃแƒšแƒ”แƒ”แƒ‘แƒ˜

แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜ 2 - โ€แƒ˜แƒชแƒ”แƒ™แƒ•แƒ” แƒขแƒแƒ›แƒ‘แƒฃแƒ แƒ”แƒ‘แƒ˜แƒ—, แƒฉแƒแƒ˜แƒชแƒ•แƒ˜ แƒ“แƒ แƒฉแƒแƒ˜แƒชแƒ•แƒ˜ แƒคแƒ”แƒฎแƒกแƒแƒชแƒ›แƒ”แƒšแƒ˜โ€

แƒžแƒฃแƒœแƒฅแƒขแƒ˜ 1-แƒ แƒแƒจแƒ˜ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜แƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ, แƒงแƒ•แƒ”แƒšแƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒก แƒ›แƒ˜แƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ—. แƒฉแƒ•แƒ”แƒœ แƒ•แƒฃแƒจแƒ•แƒ”แƒ‘แƒ— แƒฃแƒแƒ›แƒ แƒแƒ• แƒกแƒแƒฎแƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒšแƒ”แƒฅแƒกแƒ˜แƒ™แƒแƒœแƒจแƒ˜ แƒ“แƒ แƒ“แƒ˜แƒœแƒแƒ›แƒ˜แƒฃแƒ  แƒฎแƒ”แƒ“แƒ”แƒ‘แƒจแƒ˜, แƒฉแƒแƒ แƒ—แƒแƒ•แƒ— แƒงแƒ•แƒ”แƒšแƒ แƒกแƒแƒฎแƒ˜แƒก แƒ›แƒ แƒ˜แƒชแƒฎแƒ•แƒ”แƒšแƒก, แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒก แƒ•แƒแƒขแƒแƒœแƒ— แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒจแƒ˜, แƒžแƒ”แƒ แƒ˜แƒแƒ“แƒฃแƒšแƒแƒ“ แƒ•แƒแƒแƒœแƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒ— แƒกแƒ˜แƒ”แƒ‘แƒกแƒ แƒ“แƒ แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒก, แƒ แƒแƒ’แƒแƒ แƒช แƒ”แƒก แƒ˜แƒงแƒ. แƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒšแƒแƒ›แƒแƒ–แƒ˜ แƒแƒœ แƒแƒ แƒ แƒซแƒแƒšแƒ˜แƒแƒœ แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ”แƒ‘แƒ˜, แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒ˜, แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ”แƒ‘แƒ˜. แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜แƒ - แƒ”แƒก แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ›แƒ”แƒขแƒ˜, แƒ›แƒ”แƒขแƒ˜.
แƒžแƒฃแƒœแƒฅแƒขแƒ˜ 2-แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒแƒฅแƒขแƒ˜แƒ•แƒแƒ‘แƒ-แƒ’แƒแƒแƒขแƒแƒ แƒ”แƒ— แƒแƒ› แƒงแƒ•แƒ”แƒšแƒแƒคแƒ แƒ˜แƒก แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜.
แƒžแƒฃแƒœแƒฅแƒขแƒ˜ 3- แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ›แƒ–แƒแƒ“แƒ”แƒ‘แƒ— แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒš แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒก, แƒแƒ› แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒก แƒ•แƒฃแƒฌแƒแƒ“แƒ”แƒ‘แƒ—, แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ - "แƒ แƒแƒ’แƒแƒ  แƒแƒฆแƒญแƒฃแƒ แƒ•แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ".
แƒžแƒฃแƒœแƒฅแƒขแƒ˜ 4- แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜, แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒคแƒ˜แƒ’แƒฃแƒ แƒ”แƒ‘แƒ˜แƒก แƒแƒ› แƒ“แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒœแƒแƒฎแƒ•แƒ˜แƒกแƒแƒก, แƒ‘แƒแƒ•แƒจแƒ•แƒฃแƒ  แƒ’แƒฃแƒšแƒฃแƒ‘แƒ แƒงแƒ•แƒ˜แƒšแƒ แƒ—แƒแƒ•แƒ“แƒแƒฏแƒ”แƒ แƒ”แƒ‘แƒฃแƒšแƒแƒ‘แƒแƒจแƒ˜แƒ - แƒแƒฎแƒšแƒ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ’แƒแƒ›แƒแƒ’แƒ•แƒ˜แƒ•แƒ, แƒ›แƒแƒšแƒ”. แƒ“แƒ, แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒแƒ“ แƒ“แƒ แƒฃแƒ›แƒขแƒ™แƒ˜แƒ•แƒœแƒ”แƒฃแƒšแƒแƒ“ แƒ“แƒแƒจแƒแƒ แƒ“แƒœแƒ”แƒœ แƒ›แƒแƒ— แƒคแƒ˜แƒœแƒแƒœแƒกแƒฃแƒ  แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒก. แƒ›แƒ”แƒœแƒ”แƒฏแƒ›แƒ”แƒœแƒขแƒ˜ แƒแƒกแƒ”แƒ•แƒ” แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ, แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ˜แƒœแƒŸแƒ˜แƒœแƒ แƒ”แƒ‘แƒ˜ แƒ‘แƒ”แƒ•แƒ แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ”แƒœ. แƒ›แƒแƒฅแƒกแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ.
แƒžแƒฃแƒœแƒฅแƒขแƒ˜ 5- แƒ แƒ”แƒ’แƒฃแƒšแƒแƒ แƒฃแƒšแƒแƒ“ แƒ’แƒแƒ˜แƒ›แƒ”แƒแƒ แƒ”แƒ— แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜ 1.
Gingerbread แƒ“แƒ donuts, แƒกแƒ˜แƒกแƒฎแƒšแƒฉแƒแƒฅแƒชแƒ”แƒ•แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ›แƒฃแƒฌแƒฃแƒ™แƒ”แƒ‘แƒ˜Gingerbread แƒ“แƒ donuts:
1. แƒ›แƒ”แƒœแƒ”แƒฏแƒ”แƒ แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒ˜แƒœแƒŸแƒ˜แƒœแƒ แƒ”แƒ‘แƒ˜แƒก แƒชแƒฎแƒแƒ•แƒ แƒ”แƒ‘แƒ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ, แƒžแƒ แƒแƒ’แƒœแƒแƒ–แƒ˜แƒ แƒ”แƒ‘แƒแƒ“แƒ˜ แƒ“แƒ แƒกแƒแƒ•แƒกแƒ” แƒกแƒแƒฅแƒ›แƒ˜แƒแƒœแƒแƒ‘แƒ˜แƒ—. แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ–แƒฃแƒ–แƒฃแƒœแƒ”แƒ‘แƒก, แƒงแƒ•แƒ”แƒšแƒ แƒ“แƒแƒ™แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ.
2. แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒชแƒฎแƒแƒ•แƒ แƒ”แƒ‘แƒแƒช แƒแƒ  แƒแƒ แƒ˜แƒก แƒชแƒฃแƒ“แƒ˜ โ€“ แƒ˜แƒก แƒงแƒแƒ•แƒ”แƒšแƒ—แƒ•แƒ˜แƒก แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ, แƒ แƒแƒ› แƒชแƒแƒขแƒ แƒ›แƒแƒ—แƒ›แƒ˜แƒœแƒ”แƒ‘แƒ แƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒ“แƒ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ’แƒแƒ›แƒแƒ’แƒ˜แƒ•แƒ. แƒแƒ  แƒฎแƒ“แƒ”แƒ‘แƒ แƒฃแƒ™แƒ”แƒ—แƒ”แƒกแƒ˜, แƒ™แƒแƒ แƒ’แƒ˜, แƒ™แƒแƒ แƒ’แƒ˜ - แƒ”แƒก แƒกแƒแƒ›แƒงแƒแƒ แƒ แƒฃแƒกแƒแƒ›แƒแƒ แƒ—แƒšแƒแƒ, แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒชแƒฎแƒแƒ•แƒ แƒ”แƒ‘แƒแƒจแƒ˜ - แƒ˜แƒฆแƒ‘แƒšแƒ˜แƒแƒœแƒ˜.
แƒกแƒ˜แƒกแƒฎแƒšแƒฉแƒแƒฅแƒชแƒ”แƒ•แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ›แƒฃแƒฌแƒฃแƒ™แƒ”แƒ‘แƒ˜:
1. แƒแƒ“แƒ แƒ” แƒ—แƒฃ แƒ’แƒ•แƒ˜แƒแƒœ, แƒ’แƒแƒฉแƒœแƒ“แƒ”แƒ‘แƒ แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒฃแƒคแƒ แƒ แƒญแƒ™แƒ•แƒ˜แƒแƒœแƒ˜ แƒžแƒ แƒแƒ•แƒแƒ˜แƒ“แƒ”แƒ แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ˜แƒ’แƒ˜แƒ•แƒ”แƒก แƒ’แƒแƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒชแƒแƒขแƒ แƒ˜แƒแƒคแƒแƒ“. แƒ“แƒ แƒ—แƒฃ แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜ แƒ˜แƒ’แƒ˜แƒ•แƒ”แƒ, แƒ แƒแƒขแƒแƒ› แƒ’แƒแƒ“แƒแƒ˜แƒฎแƒแƒ“แƒแƒ— แƒ›แƒ”แƒขแƒ˜. แƒ แƒแƒช แƒ˜แƒกแƒ”แƒ• แƒ’แƒแƒ›แƒแƒ˜แƒฌแƒ•แƒ”แƒ•แƒก แƒ›แƒ˜แƒ›แƒฌแƒแƒ“แƒ”แƒ‘แƒšแƒ˜แƒก แƒ’แƒแƒฅแƒ แƒแƒ‘แƒแƒก.
2. แƒ›แƒแƒกแƒแƒฌแƒงแƒ”แƒœแƒ˜แƒ. แƒ แƒ แƒ›แƒแƒกแƒแƒฌแƒงแƒ”แƒœแƒ˜แƒ แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒ›แƒชแƒ˜แƒ แƒ” แƒแƒ–แƒ แƒ˜แƒแƒœแƒ˜ แƒแƒฅแƒขแƒ˜แƒ•แƒแƒ‘แƒ.
3. แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ˜แƒœแƒ แƒ•แƒ”แƒ แƒกแƒ˜แƒแƒจแƒ˜ - แƒแƒ แƒแƒœแƒแƒ˜แƒ แƒ˜ แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ. แƒ›แƒแƒ’แƒ แƒแƒ› แƒ˜แƒœแƒŸแƒ˜แƒœแƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ›แƒ˜แƒœแƒฃแƒกแƒ˜ แƒ˜แƒก แƒแƒ แƒ˜แƒก, แƒ แƒแƒ› แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜แƒกแƒ’แƒแƒœ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒ˜แƒ—, แƒแƒฅ แƒ›แƒฃแƒ“แƒ›แƒ˜แƒ•แƒแƒ“ แƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— IDB-แƒ˜แƒก แƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒ. แƒ“แƒ แƒแƒ›แƒแƒก แƒ“แƒ แƒ แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ. แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ“แƒแƒฎแƒแƒ แƒฏแƒแƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒกแƒแƒงแƒ•แƒแƒ แƒ”แƒšแƒ˜ แƒแƒ“แƒแƒ›แƒ˜แƒแƒœแƒ˜แƒก แƒกแƒแƒกแƒแƒ แƒ’แƒ”แƒ‘แƒšแƒแƒ“. แƒ แƒแƒ“แƒ’แƒแƒœ แƒจแƒ”แƒœ แƒแƒ  แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒ แƒ˜แƒ–แƒ แƒฃแƒœแƒ แƒกแƒแƒ™แƒฃแƒ—แƒแƒ  แƒ—แƒแƒ•แƒ–แƒ”, แƒงแƒ•แƒ”แƒšแƒ แƒจแƒ”แƒœแƒ–แƒ” แƒ–แƒ แƒฃแƒœแƒแƒ•แƒก.

แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜ 3-แƒแƒ  แƒแƒ แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ แƒ•แƒ”แƒšแƒแƒกแƒ˜แƒžแƒ”แƒ“แƒ˜แƒก แƒ’แƒแƒ›แƒแƒ’แƒแƒœแƒ”แƒ‘แƒ, แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒ˜แƒ“แƒ แƒ“แƒ แƒ˜แƒแƒ แƒ”.

แƒกแƒฎแƒ•แƒ แƒ™แƒแƒ›แƒžแƒแƒœแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ˜แƒœแƒŸแƒ˜แƒœแƒ แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ’แƒœแƒ”แƒ‘แƒฃแƒšแƒแƒ“ แƒ›แƒ˜แƒ˜แƒ แƒ—แƒ›แƒ”แƒ•แƒ”แƒœ แƒžแƒ˜แƒชแƒแƒก แƒšแƒฃแƒ“แƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“ (แƒแƒฐ, แƒžแƒ”แƒขแƒ”แƒ แƒ‘แƒฃแƒ แƒ’แƒ˜แƒก แƒ“แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ“แƒ แƒ 90-แƒ˜แƒแƒœ แƒฌแƒšแƒ”แƒ‘แƒจแƒ˜). แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜แƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ“แƒแƒ›แƒ–แƒแƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ, แƒ’แƒแƒ›แƒแƒ แƒ—แƒฃแƒšแƒ˜แƒ แƒ“แƒ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก, แƒ“แƒ แƒ–แƒแƒ’แƒแƒ“แƒแƒ“ แƒ แƒแƒ› แƒ•แƒ—แƒฅแƒ•แƒแƒ—, แƒ›แƒแƒ— แƒ›แƒแƒแƒฅแƒ•แƒก แƒกแƒแƒ แƒ’แƒ”แƒ‘แƒ”แƒšแƒ˜ (แƒ™แƒแƒ แƒ’แƒแƒ“, แƒงแƒแƒ•แƒ”แƒš แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒ›แƒแƒ—แƒ˜ แƒจแƒ”แƒ›แƒฅแƒ›แƒœแƒ”แƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก).
Gingerbread แƒ“แƒ donuts, แƒกแƒ˜แƒกแƒฎแƒšแƒฉแƒแƒฅแƒชแƒ”แƒ•แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ›แƒฃแƒฌแƒฃแƒ™แƒ”แƒ‘แƒ˜Gingerbread แƒ“แƒ donuts:
1. แƒแƒ  แƒแƒ แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ แƒ“แƒ แƒแƒ˜แƒก แƒ“แƒแƒ™แƒแƒ แƒ’แƒ•แƒ แƒ˜แƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒช แƒฃแƒ™แƒ•แƒ” แƒ’แƒแƒ›แƒแƒ’แƒแƒœแƒ˜แƒšแƒ˜แƒ. แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ— แƒ“แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ—.
2. แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜แƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ”แƒ‘แƒก แƒกแƒฃแƒšแƒ”แƒšแƒ”แƒ‘แƒ˜ แƒแƒ  แƒฌแƒ”แƒ แƒ”แƒœ แƒ“แƒ แƒ แƒ แƒ—แƒฅแƒ›แƒ แƒฃแƒœแƒ“แƒ แƒกแƒแƒกแƒแƒ แƒ’แƒ”แƒ‘แƒšแƒแƒ.
3. แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜แƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ”แƒ‘แƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ”แƒกแƒ˜, แƒ’แƒ•แƒแƒฌแƒ•แƒ“แƒ˜แƒแƒœ แƒกแƒแƒกแƒแƒ แƒ’แƒ”แƒ‘แƒšแƒ แƒ’แƒแƒคแƒ˜แƒšแƒขแƒ แƒฃแƒš แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒแƒก.
แƒกแƒ˜แƒกแƒฎแƒšแƒฉแƒแƒฅแƒชแƒ”แƒ•แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ›แƒฃแƒฌแƒฃแƒ™แƒ”แƒ‘แƒ˜:
1. แƒ˜แƒœแƒŸแƒ˜แƒœแƒ”แƒ แƒ˜ แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ˜แƒœแƒŸแƒ˜แƒœแƒ”แƒ แƒ˜, แƒแƒ แƒแƒ›แƒ”แƒ“ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒกแƒฎแƒ•แƒ˜แƒกแƒ˜ แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ˜แƒก แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜.แƒแƒœ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜.
2. แƒ“แƒแƒ›แƒ™แƒ•แƒ”แƒ—แƒ˜ แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒ˜แƒกแƒ”แƒ—แƒ˜ แƒœแƒ˜แƒ•แƒ—แƒ˜แƒก แƒงแƒ˜แƒ“แƒ•แƒ˜แƒก แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒแƒจแƒ˜, แƒ แƒ˜แƒกแƒ˜ แƒ’แƒแƒ’แƒ”แƒ‘แƒแƒช แƒกแƒแƒ”แƒ แƒ—แƒแƒ“ แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ“แƒ แƒแƒ แƒช แƒฃแƒœแƒ“แƒ แƒ“แƒ แƒ–แƒแƒ’แƒแƒ“แƒแƒ“ แƒฌแƒšแƒ˜แƒก แƒ‘แƒ˜แƒฃแƒฏแƒ”แƒขแƒ˜ แƒ“แƒแƒ›แƒขแƒ™แƒ˜แƒชแƒ“แƒ แƒ“แƒ แƒแƒ  แƒจแƒ”แƒ˜แƒชแƒ•แƒšแƒ”แƒ‘แƒ. แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ›แƒแƒงแƒแƒ— แƒชแƒแƒšแƒ™แƒ” แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ˜, แƒ“แƒแƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒแƒ— แƒ˜แƒ’แƒ˜ แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ˜แƒ›แƒแƒ—. แƒฏแƒ”แƒ  แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ“แƒแƒ˜แƒฎแƒแƒ“แƒแƒ—, แƒ’แƒแƒ“แƒแƒ˜แƒฎแƒแƒ“แƒแƒ— แƒ“แƒ แƒ˜แƒกแƒ”แƒ• แƒ’แƒแƒ“แƒแƒ˜แƒฎแƒแƒ“แƒแƒ—. แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜ แƒ™แƒ˜ แƒซแƒฃแƒœแƒฌแƒ˜แƒ. แƒ”แƒก แƒแƒ แƒ˜แƒก แƒแƒ› แƒชแƒฎแƒแƒ•แƒ แƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒ แƒ›แƒ.

แƒ แƒ แƒ•แƒฅแƒœแƒ, แƒฉแƒ”แƒ แƒœแƒ˜แƒจแƒ”แƒ•แƒกแƒ™แƒ˜? แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ แƒซแƒแƒšแƒ˜แƒแƒœ แƒแƒฅแƒขแƒฃแƒแƒšแƒฃแƒ แƒ˜แƒ. (แƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“)

แƒแƒ› แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒš แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒ“แƒ แƒแƒ›แƒŸแƒแƒ›แƒ˜แƒœแƒ“แƒ”แƒš แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒแƒจแƒ˜, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒชแƒแƒขแƒ แƒกแƒฎแƒ•แƒแƒ’แƒ•แƒแƒ แƒแƒ“ แƒ’แƒแƒแƒ™แƒ”แƒ—แƒแƒ— - แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜แƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ.
PostgreSQL แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜. แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 1 - แƒ›แƒแƒฎแƒกแƒ”แƒœแƒ”แƒ‘แƒ
แƒ แƒ แƒ—แƒฅแƒ›แƒ แƒฃแƒœแƒ“แƒ, แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ แƒแƒ  แƒแƒ แƒ˜แƒก, แƒกแƒ˜แƒขแƒงแƒ•แƒ˜แƒก แƒกแƒ แƒฃแƒšแƒ˜ แƒ’แƒแƒ’แƒ”แƒ‘แƒ˜แƒ—, แƒ”แƒก แƒซแƒแƒšแƒ˜แƒแƒœ แƒฎแƒ›แƒแƒ›แƒแƒฆแƒแƒšแƒ˜ แƒ“แƒ แƒ—แƒแƒ•แƒฎแƒ”แƒ“แƒฃแƒ แƒ˜แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒแƒ˜แƒœแƒช แƒ แƒแƒ’แƒแƒ แƒ›แƒ” แƒ’แƒแƒฃแƒแƒ“แƒ•แƒ˜แƒšแƒ”แƒ— แƒกแƒแƒ™แƒฃแƒ—แƒแƒ  แƒ—แƒแƒ•แƒก แƒ“แƒ แƒจแƒ”แƒแƒ’แƒ แƒแƒ•แƒ”แƒ— แƒ›แƒ”แƒขแƒ˜ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ˜แƒœแƒชแƒ˜แƒ“แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒกแƒแƒ’แƒ•แƒแƒ แƒ”แƒ‘แƒšแƒแƒ“. แƒ˜แƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒแƒ  แƒแƒฆแƒ›แƒแƒฉแƒœแƒ“แƒ”แƒ— แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒแƒจแƒ˜ - "แƒฌแƒแƒ“แƒ˜ แƒ˜แƒฅ, แƒแƒ  แƒ•แƒ˜แƒชแƒ˜ แƒกแƒแƒ“, แƒ˜แƒžแƒแƒ•แƒ”, แƒแƒ  แƒ•แƒ˜แƒชแƒ˜ แƒ แƒ".

แƒ แƒ แƒแƒ แƒ˜แƒก แƒแƒ› แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜แƒก แƒ“แƒแƒ“แƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒ“แƒ แƒฃแƒแƒ แƒงแƒแƒคแƒ˜แƒ—แƒ˜ แƒ›แƒฎแƒแƒ แƒ”แƒ”แƒ‘แƒ˜:

แƒ“แƒแƒ“แƒ”แƒ‘แƒ˜แƒ—แƒ˜:
1. แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒแƒ. แƒ˜แƒกแƒ”, แƒ›แƒแƒ˜แƒœแƒช แƒฃแƒคแƒ แƒ แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒแƒ, แƒ•แƒ˜แƒ“แƒ แƒ” แƒ›แƒฃแƒ“แƒ›แƒ˜แƒ•แƒ˜ "datafile shrink, alter tablespace แƒ“แƒ แƒ.แƒจ."
2. แƒ”แƒก แƒแƒ แƒ˜แƒก แƒแƒฎแƒแƒšแƒ˜ แƒฃแƒœแƒแƒ แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒแƒฎแƒแƒšแƒ˜ แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ. แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒจแƒ˜ แƒแƒ“แƒ แƒ” แƒ—แƒฃ แƒ’แƒ•แƒ˜แƒแƒœ แƒ›แƒ˜แƒกแƒชแƒ”แƒ›แƒก แƒ“แƒแƒ›แƒกแƒแƒฎแƒฃแƒ แƒ”แƒ‘แƒฃแƒš แƒฏแƒแƒœแƒฏแƒแƒคแƒ˜แƒšแƒก แƒ“แƒ แƒ“แƒแƒœแƒแƒขแƒก.
Cons:
1. แƒฃแƒœแƒ“แƒ แƒ˜แƒ›แƒฃแƒจแƒแƒ. แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”.
2. แƒ แƒ”แƒ’แƒฃแƒšแƒแƒ แƒฃแƒšแƒแƒ“ แƒ›แƒแƒ’แƒ˜แƒฌแƒ”แƒ•แƒ— แƒแƒฎแƒกแƒœแƒแƒ— แƒงแƒ•แƒ”แƒšแƒ แƒแƒฅแƒขแƒ˜แƒ•แƒแƒ‘แƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ แƒ“แƒ แƒžแƒ”แƒ แƒกแƒžแƒ”แƒฅแƒขแƒ˜แƒ•แƒ”แƒ‘แƒ˜.
3. แƒ แƒแƒฆแƒแƒชแƒ˜แƒก แƒ’แƒแƒฆแƒ”แƒ‘แƒ แƒ›แƒแƒฃแƒฌแƒ”แƒ•แƒก, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ˜แƒœแƒŸแƒ˜แƒœแƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜ แƒ”แƒ แƒ—แƒแƒ“แƒ”แƒ แƒ—แƒ˜ แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ˜ - แƒ“แƒ แƒ - แƒกแƒแƒ›แƒงแƒแƒ แƒแƒก แƒ›แƒ˜แƒ”แƒ  แƒแƒ แƒ˜แƒก แƒจแƒ”แƒ–แƒฆแƒฃแƒ“แƒฃแƒšแƒ˜.
4. แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒชแƒฃแƒ“แƒ˜ แƒ“แƒ แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒฃแƒกแƒ˜แƒแƒ›แƒแƒ•แƒœแƒ - แƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ“, แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒแƒฆแƒ›แƒแƒฉแƒœแƒ“แƒ”แƒก แƒœแƒแƒ’แƒแƒ•แƒ˜, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ "แƒแƒ แƒ แƒ—แƒแƒ’แƒ•แƒ˜, แƒแƒ แƒ แƒ‘แƒแƒงแƒแƒงแƒ˜, แƒแƒ แƒแƒ›แƒ”แƒ“ แƒฃแƒชแƒœแƒแƒ‘แƒ˜ แƒžแƒแƒขแƒแƒ แƒ แƒชแƒฎแƒแƒ•แƒ”แƒšแƒ˜".

แƒ•แƒ˜แƒœแƒช แƒแƒ  แƒ แƒ˜แƒกแƒ™แƒแƒ•แƒก แƒ แƒแƒ›แƒ”แƒก, แƒแƒ  แƒกแƒ•แƒแƒ›แƒก แƒจแƒแƒ›แƒžแƒแƒœแƒฃแƒ แƒก.
แƒแƒกแƒ” แƒ แƒแƒ›, แƒ’แƒแƒ แƒ—แƒแƒ‘แƒ แƒ˜แƒฌแƒงแƒ”แƒ‘แƒ.

แƒ–แƒแƒ’แƒแƒ“แƒ˜ แƒ˜แƒ“แƒ”แƒ - แƒกแƒฅแƒ”แƒ›แƒแƒขแƒฃแƒ แƒ˜

PostgreSQL แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜. แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 1 - แƒ›แƒแƒฎแƒกแƒ”แƒœแƒ”แƒ‘แƒ
(แƒ˜แƒšแƒฃแƒกแƒขแƒ แƒแƒชแƒ˜แƒ แƒแƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒ“แƒแƒœ ยซแƒกแƒ˜แƒœแƒ—แƒ”แƒ–แƒ˜, แƒ แƒแƒ’แƒแƒ แƒช PostgreSQL แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒ’แƒแƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒ”แƒ‘แƒ˜แƒก แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒ›แƒ”แƒ—แƒแƒ“แƒ˜")

แƒ’แƒแƒœแƒ›แƒแƒ แƒขแƒ”แƒ‘แƒ:

  • แƒกแƒแƒ›แƒ˜แƒ–แƒœแƒ” แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ แƒ“แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒšแƒ˜ PostgreSQL แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒ˜แƒ— โ€žpg_stat_statementsโ€œ.
  • แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— แƒ›แƒแƒ›แƒกแƒแƒฎแƒฃแƒ แƒ”แƒ‘แƒ˜แƒก แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒ›แƒžแƒšแƒ”แƒฅแƒขแƒก pg_stat_statements แƒ˜แƒกแƒขแƒแƒ แƒ˜แƒ˜แƒก แƒกแƒแƒฌแƒงแƒ˜แƒก แƒ”แƒขแƒแƒžแƒ–แƒ” แƒจแƒ”แƒกแƒแƒœแƒแƒฎแƒแƒ“ แƒ“แƒ แƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒจแƒ˜ แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ˜แƒกแƒ แƒ“แƒ แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.
  • แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜แƒก แƒ›แƒแƒกแƒžแƒ˜แƒœแƒซแƒ”แƒšแƒ–แƒ” แƒฉแƒ•แƒ”แƒœ แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— bash แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ”แƒ‘แƒ˜แƒก แƒ”แƒ แƒ—แƒแƒ‘แƒšแƒ˜แƒแƒ‘แƒแƒก, แƒ›แƒแƒ— แƒจแƒแƒ แƒ˜แƒก แƒ‘แƒ˜แƒšแƒ”แƒ—แƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒแƒจแƒ˜ แƒ˜แƒœแƒชแƒ˜แƒ“แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒ›แƒแƒ’แƒ˜แƒ“แƒ”แƒ‘แƒ˜

แƒ“แƒแƒกแƒแƒฌแƒงแƒ˜แƒกแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒกแƒฅแƒ”แƒ›แƒแƒขแƒฃแƒ แƒแƒ“ แƒ’แƒแƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ ERD, แƒ แƒ แƒ›แƒแƒฎแƒ“แƒ แƒ‘แƒแƒšแƒแƒก:
PostgreSQL แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜. แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 1 - แƒ›แƒแƒฎแƒกแƒ”แƒœแƒ”แƒ‘แƒ
แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ™แƒšแƒ” แƒแƒฆแƒฌแƒ”แƒ แƒแƒกแƒแƒ‘แƒแƒšแƒแƒ - แƒ›แƒแƒกแƒžแƒ˜แƒœแƒซแƒ”แƒšแƒ˜, แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜แƒก แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ˜ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ—แƒแƒœ
แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ - แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜
pg_stat_history - แƒ˜แƒกแƒขแƒแƒ แƒ˜แƒฃแƒšแƒ˜ แƒชแƒฎแƒ แƒ˜แƒšแƒ˜ แƒกแƒแƒ›แƒ˜แƒ–แƒœแƒ” แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก pg_stat_statements แƒฎแƒ”แƒ“แƒ˜แƒก แƒ“แƒ แƒแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒ™แƒแƒ“แƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒœแƒแƒฎแƒแƒ“
แƒ›แƒ”แƒขแƒ แƒฃแƒš_แƒ’แƒšแƒแƒกแƒแƒ แƒ˜แƒ - แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ˜แƒก แƒšแƒ”แƒฅแƒกแƒ˜แƒ™แƒแƒœแƒ˜
metric_config - แƒ˜แƒœแƒ“แƒ˜แƒ•แƒ˜แƒ“แƒฃแƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ
แƒ›แƒ”แƒขแƒ แƒฃแƒš - แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒšแƒ˜ แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ แƒ˜แƒ› แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ›แƒšแƒ˜แƒก แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜แƒช แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ”แƒแƒ‘แƒก
แƒ›แƒ”แƒขแƒ แƒฃแƒšแƒ˜_แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก_แƒ˜แƒกแƒขแƒแƒ แƒ˜แƒ - แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ˜แƒกแƒขแƒแƒ แƒ˜แƒ
log_query - แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒชแƒฎแƒ แƒ˜แƒšแƒ˜ AWS-แƒ“แƒแƒœ แƒฉแƒแƒ›แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒฃแƒšแƒ˜ PostgreSQL แƒŸแƒฃแƒ แƒœแƒแƒšแƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ˜แƒ“แƒแƒœ แƒ’แƒแƒแƒœแƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒœแƒแƒฎแƒแƒ“
แƒกแƒแƒ‘แƒแƒ–แƒ˜แƒกแƒ - แƒกแƒแƒคแƒฃแƒซแƒ•แƒšแƒแƒ“ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ“แƒ แƒแƒ˜แƒก แƒžแƒ”แƒ แƒ˜แƒแƒ“แƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜
แƒกแƒแƒ’แƒฃแƒจแƒแƒ’แƒ - แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒกแƒขแƒแƒขแƒฃแƒกแƒ˜แƒก แƒจแƒ”แƒกแƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒšแƒแƒ“
แƒกแƒแƒ’แƒฃแƒจแƒแƒ’แƒ_แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก_แƒ˜แƒกแƒขแƒแƒ แƒ˜แƒ - แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒกแƒขแƒแƒขแƒฃแƒกแƒ˜แƒก แƒจแƒ”แƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ˜แƒก แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ˜แƒกแƒขแƒแƒ แƒ˜แƒ
pg_stat_db_queries โ€” แƒแƒฅแƒขแƒ˜แƒฃแƒ แƒ˜ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ›แƒกแƒแƒฎแƒฃแƒ แƒ”แƒ‘แƒ˜แƒก แƒชแƒฎแƒ แƒ˜แƒšแƒ˜
แƒกแƒแƒฅแƒ›แƒ˜แƒแƒœแƒแƒ‘แƒ˜แƒก_แƒšแƒแƒ’แƒ˜ โ€” แƒกแƒแƒฅแƒ›แƒ˜แƒแƒœแƒแƒ‘แƒ˜แƒก แƒŸแƒฃแƒ แƒœแƒแƒšแƒ˜แƒก แƒ›แƒแƒ›แƒกแƒแƒฎแƒฃแƒ แƒ”แƒ‘แƒ˜แƒก แƒชแƒฎแƒ แƒ˜แƒšแƒ˜
แƒฎแƒแƒคแƒแƒœแƒ’แƒ˜_แƒแƒ˜แƒ“แƒ˜ - แƒฎแƒแƒคแƒแƒœแƒ’แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒชแƒฎแƒ แƒ˜แƒšแƒ˜

แƒ”แƒขแƒแƒžแƒ˜ 1 - แƒจแƒ”แƒแƒ’แƒ แƒแƒ•แƒ”แƒ— แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒขแƒแƒขแƒ˜แƒกแƒขแƒ˜แƒ™แƒ แƒ“แƒ แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ— แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ”แƒ‘แƒ˜

แƒชแƒฎแƒ แƒ˜แƒšแƒ˜ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒกแƒขแƒแƒขแƒ˜แƒกแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒกแƒแƒœแƒแƒฎแƒแƒ“. pg_stat_history
pg_stat_history แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒก แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ

                                          แƒชแƒฎแƒ แƒ˜แƒšแƒ˜ "public.pg_stat_history" แƒกแƒ•แƒ”แƒขแƒ˜ | แƒขแƒ˜แƒžแƒ˜ | แƒ›แƒแƒ“แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒแƒ แƒ”แƒ‘แƒ˜ ------------------------------------------------------ -------------------------------- ID | แƒ›แƒ—แƒ”แƒšแƒ˜ แƒ แƒ˜แƒชแƒฎแƒ•แƒ˜ | แƒแƒ  แƒแƒ แƒ˜แƒก null แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜ nextval('pg_stat_history_id_seq'::regclass) snapshot_timestamp | แƒ“แƒ แƒแƒ˜แƒก แƒจแƒขแƒแƒ›แƒžแƒ˜ แƒ“แƒ แƒแƒ˜แƒก แƒกแƒแƒ แƒขแƒงแƒšแƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ” | แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก_id | แƒ›แƒ—แƒ”แƒšแƒ˜ แƒ แƒ˜แƒชแƒฎแƒ•แƒ˜ | dbid | oid | userid | oid | queryid | bigint | แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ | แƒขแƒ”แƒฅแƒกแƒขแƒ˜ | แƒ–แƒแƒ แƒ”แƒ‘แƒ˜ | bigint | แƒกแƒฃแƒš_แƒ“แƒ แƒ | แƒแƒ แƒ›แƒแƒ’แƒ˜ แƒกแƒ˜แƒ–แƒฃแƒกแƒขแƒ˜แƒ— | แƒ›แƒ˜แƒœ_แƒ“แƒ แƒ | แƒแƒ แƒ›แƒแƒ’แƒ˜ แƒกแƒ˜แƒ–แƒฃแƒกแƒขแƒ˜แƒ— | max_time | แƒแƒ แƒ›แƒแƒ’แƒ˜ แƒกแƒ˜แƒ–แƒฃแƒกแƒขแƒ˜แƒ— | แƒกแƒแƒจแƒฃแƒแƒšแƒ_แƒ“แƒ แƒ | แƒแƒ แƒ›แƒแƒ’แƒ˜ แƒกแƒ˜แƒ–แƒฃแƒกแƒขแƒ˜แƒ— | stddev_time | แƒแƒ แƒ›แƒแƒ’แƒ˜ แƒกแƒ˜แƒ–แƒฃแƒกแƒขแƒ˜แƒ— | แƒ แƒ˜แƒ’แƒ”แƒ‘แƒ˜ | bigint | shared_blks_hit | bigint | shared_blks_read | bigint | shared_blks_dirtied | bigint | shared_blks_written | bigint | local_blks_hit | bigint | local_blks_read | bigint | local_blks_dirtied | bigint | local_blks_written | bigint | temp_blks_read | bigint | temp_blks_written | bigint | แƒ‘แƒšแƒ™_แƒฌแƒแƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก_แƒ“แƒ แƒ | แƒแƒ แƒ›แƒแƒ’แƒ˜ แƒกแƒ˜แƒ–แƒฃแƒกแƒขแƒ˜แƒ— | blk_แƒฉแƒแƒฌแƒ”แƒ แƒ˜แƒก_แƒ“แƒ แƒ | แƒแƒ แƒ›แƒแƒ’แƒ˜ แƒกแƒ˜แƒ–แƒฃแƒกแƒขแƒ˜แƒ— | แƒกแƒแƒ‘แƒแƒ–แƒ˜แƒกแƒ_ID | แƒ›แƒ—แƒ”แƒšแƒ˜ แƒ แƒ˜แƒชแƒฎแƒ•แƒ˜ | แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒ˜: "pg_stat_history_pkey" PRIMARY KEY, btree (id) "database_idx" btree (database_id) "queryid_idx" btree (queryid) "snapshot_timestamp_idx" btree (snapshot_timestamp) "Database_idx" btree (database_id) REFERENCES แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ (id ) แƒ™แƒแƒกแƒ™แƒแƒ“แƒ˜แƒก แƒฌแƒแƒจแƒšแƒแƒ–แƒ”

แƒ แƒแƒ’แƒแƒ แƒช แƒฎแƒ”แƒ“แƒแƒ•แƒ—, แƒชแƒฎแƒ แƒ˜แƒšแƒ˜ แƒแƒ แƒ˜แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ™แƒฃแƒ›แƒฃแƒšแƒแƒชแƒ˜แƒฃแƒ แƒ˜ แƒฎแƒ”แƒ“แƒ•แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ pg_stat_statements แƒกแƒแƒ›แƒ˜แƒ–แƒœแƒ” แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒจแƒ˜.

แƒแƒ› แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒซแƒแƒšแƒ˜แƒแƒœ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ.

pg_stat_history แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒกแƒแƒแƒ—แƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜ แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ’แƒ แƒแƒ•แƒ˜แƒšแƒ˜ แƒกแƒขแƒแƒขแƒ˜แƒกแƒขแƒ˜แƒ™แƒ. แƒงแƒแƒ•แƒ”แƒšแƒ˜ แƒกแƒแƒแƒ—แƒ˜แƒก แƒ“แƒแƒกแƒแƒฌแƒงแƒ˜แƒกแƒจแƒ˜, แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒก แƒจแƒ”แƒ•แƒกแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒกแƒขแƒแƒขแƒ˜แƒกแƒขแƒ˜แƒ™แƒ pg_stat_statements แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ”แƒ— แƒ”แƒ แƒ—แƒแƒ“ pg_stat_statements_reset().
แƒจแƒ”แƒœแƒ˜แƒจแƒ•แƒœแƒ: แƒกแƒขแƒแƒขแƒ˜แƒกแƒขแƒ˜แƒ™แƒ แƒ’แƒ แƒแƒ•แƒ“แƒ”แƒ‘แƒ 1 แƒฌแƒแƒ›แƒ–แƒ” แƒ›แƒ”แƒขแƒ˜ แƒฎแƒแƒœแƒ’แƒ แƒซแƒšแƒ˜แƒ•แƒแƒ‘แƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.
pg_stat_history แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒก แƒจแƒ”แƒ•แƒกแƒ”แƒ‘แƒ

--pg_stat_history.sql
CREATE OR REPLACE FUNCTION pg_stat_history( ) RETURNS boolean AS $$
DECLARE
  endpoint_rec record ;
  database_rec record ;
  pg_stat_snapshot record ;
  current_snapshot_timestamp timestamp without time zone;
BEGIN
  current_snapshot_timestamp = date_trunc('minute',now());  
  
  FOR endpoint_rec IN SELECT * FROM endpoint 
  LOOP
    FOR database_rec IN SELECT * FROM database WHERE endpoint_id = endpoint_rec.id 
	  LOOP
	    
		RAISE NOTICE 'NEW SHAPSHOT IS CREATING';
		
		--Connect to the target DB	  
	    EXECUTE 'SELECT dblink_connect(''LINK1'',''host='||endpoint_rec.host||' dbname='||database_rec.name||' user=USER password=PASSWORD '')';
 
        RAISE NOTICE 'host % and dbname % ',endpoint_rec.host,database_rec.name;
		RAISE NOTICE 'Creating snapshot of pg_stat_statements for database %',database_rec.name;
		
		SELECT 
	      *
		INTO 
		  pg_stat_snapshot
	    FROM dblink('LINK1',
	      'SELECT 
	       dbid , SUM(calls),SUM(total_time),SUM(rows) ,SUM(shared_blks_hit) ,SUM(shared_blks_read) ,SUM(shared_blks_dirtied) ,SUM(shared_blks_written) , 
           SUM(local_blks_hit) , SUM(local_blks_read) , SUM(local_blks_dirtied) , SUM(local_blks_written) , SUM(temp_blks_read) , SUM(temp_blks_written) , SUM(blk_read_time) , SUM(blk_write_time)
	       FROM pg_stat_statements WHERE dbid=(SELECT oid from pg_database where datname=current_database() ) 
		   GROUP BY dbid
  	      '
	               )
	      AS t
	       ( dbid oid , calls bigint , 
  	         total_time double precision , 
	         rows bigint , shared_blks_hit bigint , shared_blks_read bigint ,shared_blks_dirtied bigint ,shared_blks_written	 bigint ,
             local_blks_hit	 bigint ,local_blks_read bigint , local_blks_dirtied bigint ,local_blks_written bigint ,
             temp_blks_read	 bigint ,temp_blks_written bigint ,
             blk_read_time double precision , blk_write_time double precision	  
	       );
		 
		INSERT INTO pg_stat_history
          ( 
		    snapshot_timestamp  ,database_id  ,
			dbid , calls  ,total_time ,
            rows ,shared_blks_hit  ,shared_blks_read  ,shared_blks_dirtied  ,shared_blks_written ,local_blks_hit , 	 	
            local_blks_read,local_blks_dirtied,local_blks_written,temp_blks_read,temp_blks_written, 	
            blk_read_time, blk_write_time 
		  )		  
	    VALUES
	      (
	       current_snapshot_timestamp ,
		   database_rec.id ,
	       pg_stat_snapshot.dbid ,pg_stat_snapshot.calls,
	       pg_stat_snapshot.total_time,
	       pg_stat_snapshot.rows ,pg_stat_snapshot.shared_blks_hit ,pg_stat_snapshot.shared_blks_read ,pg_stat_snapshot.shared_blks_dirtied ,pg_stat_snapshot.shared_blks_written , 
           pg_stat_snapshot.local_blks_hit , pg_stat_snapshot.local_blks_read , pg_stat_snapshot.local_blks_dirtied , pg_stat_snapshot.local_blks_written , 
	       pg_stat_snapshot.temp_blks_read , pg_stat_snapshot.temp_blks_written , pg_stat_snapshot.blk_read_time , pg_stat_snapshot.blk_write_time 	   
	      );		   
		  
        RAISE NOTICE 'Creating snapshot of pg_stat_statements for queries with min_time more than 1000ms';
	
        FOR pg_stat_snapshot IN
          --All queries with max_time greater than 1000 ms
	      SELECT 
	        *
	      FROM dblink('LINK1',
	        'SELECT 
	         dbid , userid ,queryid,query,calls,total_time,min_time ,max_time,mean_time, stddev_time ,rows ,shared_blks_hit ,
			 shared_blks_read ,shared_blks_dirtied ,shared_blks_written , 
             local_blks_hit , local_blks_read , local_blks_dirtied , 
			 local_blks_written , temp_blks_read , temp_blks_written , blk_read_time , 
			 blk_write_time
	         FROM pg_stat_statements 
			 WHERE dbid=(SELECT oid from pg_database where datname=current_database() AND min_time >= 1000 ) 
  	        '

	                  )
	        AS t
	         ( dbid oid , userid oid , queryid bigint ,query text , calls bigint , 
  	           total_time double precision ,min_time double precision	 ,max_time double precision	 , mean_time double precision	 ,  stddev_time double precision	 , 
	           rows bigint , shared_blks_hit bigint , shared_blks_read bigint ,shared_blks_dirtied bigint ,shared_blks_written	 bigint ,
               local_blks_hit	 bigint ,local_blks_read bigint , local_blks_dirtied bigint ,local_blks_written bigint ,
               temp_blks_read	 bigint ,temp_blks_written bigint ,
               blk_read_time double precision , blk_write_time double precision	  
	         )
	    LOOP
		  INSERT INTO pg_stat_history
          ( 
		    snapshot_timestamp  ,database_id  ,
			dbid ,userid  , queryid  , query  , calls  ,total_time ,min_time ,max_time ,mean_time ,stddev_time ,
            rows ,shared_blks_hit  ,shared_blks_read  ,shared_blks_dirtied  ,shared_blks_written ,local_blks_hit , 	 	
            local_blks_read,local_blks_dirtied,local_blks_written,temp_blks_read,temp_blks_written, 	
            blk_read_time, blk_write_time 
		  )		  
	      VALUES
	      (
	       current_snapshot_timestamp ,
		   database_rec.id ,
	       pg_stat_snapshot.dbid ,pg_stat_snapshot.userid ,pg_stat_snapshot.queryid,pg_stat_snapshot.query,pg_stat_snapshot.calls,
	       pg_stat_snapshot.total_time,pg_stat_snapshot.min_time ,pg_stat_snapshot.max_time,pg_stat_snapshot.mean_time, pg_stat_snapshot.stddev_time ,
	       pg_stat_snapshot.rows ,pg_stat_snapshot.shared_blks_hit ,pg_stat_snapshot.shared_blks_read ,pg_stat_snapshot.shared_blks_dirtied ,pg_stat_snapshot.shared_blks_written , 
           pg_stat_snapshot.local_blks_hit , pg_stat_snapshot.local_blks_read , pg_stat_snapshot.local_blks_dirtied , pg_stat_snapshot.local_blks_written , 
	       pg_stat_snapshot.temp_blks_read , pg_stat_snapshot.temp_blks_written , pg_stat_snapshot.blk_read_time , pg_stat_snapshot.blk_write_time 	   
	      );
		  
        END LOOP;

        PERFORM dblink_disconnect('LINK1');  
				
	  END LOOP ;--FOR database_rec IN SELECT * FROM database WHERE endpoint_id = endpoint_rec.id 
    
  END LOOP;

RETURN TRUE;  
END
$$ LANGUAGE plpgsql;

แƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ“, แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒžแƒ”แƒ แƒ˜แƒแƒ“แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒชแƒฎแƒ แƒ˜แƒšแƒจแƒ˜ pg_stat_history แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒ”แƒฅแƒœแƒ”แƒ‘แƒ แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒก แƒจแƒ˜แƒ’แƒ—แƒแƒ•แƒกแƒ˜แƒก แƒ™แƒแƒ“แƒ แƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜ pg_stat_statements แƒกแƒแƒ›แƒ˜แƒ–แƒœแƒ” แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ.

แƒ แƒ”แƒแƒšแƒฃแƒ แƒแƒ“ แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒก

แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ›แƒ˜แƒ˜แƒฆแƒแƒ— แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒกแƒแƒกแƒแƒ แƒ’แƒ”แƒ‘แƒšแƒ แƒ“แƒ แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ”แƒ‘แƒ˜.

แƒแƒ’แƒ แƒ”แƒ’แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒแƒ˜แƒก แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜ แƒžแƒ”แƒ แƒ˜แƒแƒ“แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก

แƒกแƒแƒ แƒฉแƒ”แƒšแƒ˜

SELECT 
  database_id , 
  SUM(calls) AS calls ,SUM(total_time)  AS total_time ,
  SUM(rows) AS rows , SUM(shared_blks_hit)  AS shared_blks_hit,
  SUM(shared_blks_read) AS shared_blks_read ,
  SUM(shared_blks_dirtied) AS shared_blks_dirtied,
  SUM(shared_blks_written) AS shared_blks_written , 
  SUM(local_blks_hit) AS local_blks_hit , 
  SUM(local_blks_read) AS local_blks_read , 
  SUM(local_blks_dirtied) AS local_blks_dirtied , 
  SUM(local_blks_written)  AS local_blks_written,
  SUM(temp_blks_read) AS temp_blks_read, 
  SUM(temp_blks_written) temp_blks_written , 
  SUM(blk_read_time) AS blk_read_time , 
  SUM(blk_write_time) AS blk_write_time
FROM 
  pg_stat_history
WHERE 
  queryid IS NULL AND
  database_id = DATABASE_ID  AND
  snapshot_timestamp BETWEEN BEGIN_TIMEPOINT AND END_TIMEPOINT
GROUP BY database_id ;

D.B. แƒ“แƒ แƒ

to_char(แƒ˜แƒœแƒขแƒ”แƒ แƒ•แƒแƒšแƒ˜ '1 แƒ›แƒ˜แƒšแƒ˜แƒฌแƒแƒ›แƒ˜' * pg_total_stat_history_rec.total_time, 'HH24:MI:SS.MS')

I/O แƒ“แƒ แƒ

to_char (แƒ˜แƒœแƒขแƒ”แƒ แƒ•แƒแƒšแƒ˜ '1 แƒ›แƒ˜แƒšแƒ˜แƒฌแƒแƒ›แƒ˜' * ( pg_total_stat_history_rec.blk_read_time + pg_total_stat_history_rec.blk_write_time ), 'HH24:MI:SS.MS')

TOP10 SQL total_time-แƒ˜แƒ—

แƒกแƒแƒ แƒฉแƒ”แƒšแƒ˜

SELECT 
  queryid , 
  SUM(calls) AS calls ,
  SUM(total_time)  AS total_time  	
FROM 
  pg_stat_history
WHERE 
  queryid IS NOT NULL AND 
  database_id = DATABASE_ID AND
  snapshot_timestamp BETWEEN BEGIN_TIMEPOINT AND END_TIMEPOINT 
GROUP BY queryid 
ORDER BY 3 DESC 
LIMIT 10
------------------------------------------------ ------------------------------------ | TOP10 SQL แƒ›แƒ—แƒšแƒ˜แƒแƒœแƒ˜ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒ˜แƒ— | #| queryid| แƒ–แƒแƒ แƒ”แƒ‘แƒ˜| แƒ แƒ”แƒ™แƒแƒ•แƒก %| แƒกแƒฃแƒš_แƒ“แƒ แƒ (แƒ›แƒ›) | dbtime % +----+------------------------------------------ ------------------------------- | 1| 821760255| 2| .00001|00:03:23.141( 203141.681 ms.)| 5.42 | 2| 4152624390| 2| .00001|00:03:13.929( 193929.215 ms.)| 5.17 | 3| 1484454471| 4| .00001|00:02:09.129( 129129.057 ms.)| 3.44 | 4| 655729273| 1| .00000|00:02:01.869( 121869.981 ms.)| 3.25 | 5| 2460318461| 1| .00000|00:01:33.113( 93113.835 ms.)| 2.48 | 6| 2194493487| 4| .00001|00:00:17.377( 17377.868 ms.)| .46 | 7| 1053044345| 1| .00000|00:00:06.156( 6156.352 ms.)| .16 | 8| 3644780286| 1| .00000|00:00:01.063( 1063.830 ms.)| .03

TOP10 SQL แƒ›แƒ—แƒšแƒ˜แƒแƒœแƒ˜ I/O แƒ“แƒ แƒแƒ˜แƒ—

แƒกแƒแƒ แƒฉแƒ”แƒšแƒ˜

SELECT 
  queryid , 
  SUM(calls) AS calls ,
  SUM(blk_read_time + blk_write_time)  AS io_time
FROM 
  pg_stat_history
WHERE 
  queryid IS NOT NULL AND 
  database_id = DATABASE_ID  AND
  snapshot_timestamp BETWEEN BEGIN_TIMEPOINT AND END_TIMEPOINT
GROUP BY  queryid 
ORDER BY 3 DESC 
LIMIT 10
------------------------------------------------ -------------------------------------- | TOP10 SQL แƒกแƒฃแƒš I/O แƒ“แƒ แƒแƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ— | #| queryid| แƒ–แƒแƒ แƒ”แƒ‘แƒ˜| แƒ แƒ”แƒ™แƒแƒ•แƒก %| I/O แƒ“แƒ แƒ (ms)|db I/O แƒ“แƒ แƒ % +----+------------------------------- ------------------------------------+----------- -- | 1| 4152624390| 2| .00001|00:08:31.616( 511616.592 ms.)| 31.06 แƒ˜แƒ•แƒœแƒ˜แƒกแƒ˜ | 2| 821760255| 2| .00001|00:08:27.099( 507099.036 ms.)| 30.78 | 3| 655729273| 1| .00000|00:05:02.209( 302209.137 ms.)| 18.35 | 4| 2460318461| 1| .00000|00:04:05.981( 245981.117 ms.)| 14.93 | 5| 1484454471| 4| .00001|00:00:39.144( 39144.221 ms.)| 2.38 | 6| 2194493487| 4| .00001|00:00:18.182( 18182.816 ms.)| 1.10 | 7| 1053044345| 1| .00000|00:00:16.611( 16611.722 ms.)| 1.01 | 8| 3644780286| 1| .00000|00:00:00.436( 436.205 ms.)| .03

TOP10 SQL แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒฅแƒกแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒ“แƒ แƒแƒ˜แƒ—

แƒกแƒแƒ แƒฉแƒ”แƒšแƒ˜

SELECT 
  id AS snapshotid , 
  queryid , 
  snapshot_timestamp ,  
  max_time 
FROM 
  pg_stat_history 
WHERE 
  queryid IS NOT NULL AND 
  database_id = DATABASE_ID  AND
  snapshot_timestamp BETWEEN BEGIN_TIMEPOINT AND END_TIMEPOINT
ORDER BY 4 DESC 
LIMIT 10

------------------------------------------------ ------------------------------------ | TOP10 SQL แƒ›แƒแƒฅแƒกแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒ˜แƒ— | #| แƒคแƒแƒขแƒแƒกแƒฃแƒ แƒแƒ—แƒ˜| snapshotID| queryid| max_time (ms) +----+---------------------------------------- --+--------------------------------------- | 1| 05.04.2019/01/03 4169:655729273| 00| 02| 01.869:121869.981:2( 04.04.2019 ms.) | 17| 00/4153/821760255 00:01| 41.570| 101570.841| 3:04.04.2019:16( 00 ms.) | 4146| 821760255/00/01 41.570:101570.841| 4| 04.04.2019| 16:00:4144( 4152624390 ms.) | 00| 01/36.964/96964.607 5:04.04.2019| 17| 00| 4151:4152624390:00( 01 ms.) | 36.964| 96964.607/6/05.04.2019 10:00| 4188| 1484454471| 00:01:33.452( 93452.150 ms.) | 7| 04.04.2019/17/00 4150:2460318461 | 00| 01| 33.113:93113.835:8( 04.04.2019 ms.) | 15| 00/4140/1484454471 00:00| 11.892| 11892.302| 9:04.04.2019:16( 00 ms.) | 4145| 1484454471/00/00 11.892:11892.302| 10| 04.04.2019| 17:00:4152( 1484454471 ms.) | 00| 00/11.892/11892.302 XNUMX:XNUMX| XNUMX| XNUMX| XNUMX:XNUMX:XNUMX( XNUMX ms.) | XNUMX| XNUMX/XNUMX/XNUMX XNUMX:XNUMX| XNUMX| XNUMX| XNUMX:XNUMX:XNUMX (XNUMX ms.)

TOP10 SQL แƒ›แƒ˜แƒ”แƒ  SHARED แƒ‘แƒฃแƒคแƒ”แƒ แƒฃแƒšแƒ˜ แƒฌแƒแƒ™แƒ˜แƒ—แƒฎแƒ•แƒ/แƒฉแƒแƒฌแƒ”แƒ แƒ

แƒกแƒแƒ แƒฉแƒ”แƒšแƒ˜

SELECT 
  id AS snapshotid , 
  queryid ,
  snapshot_timestamp , 
  shared_blks_read , 
  shared_blks_written 
FROM 
  pg_stat_history
WHERE 
  queryid IS NOT NULL AND 
  database_id = DATABASE_ID  AND
  snapshot_timestamp BETWEEN BEGIN_TIMEPOINT AND END_TIMEPOINT AND
  ( shared_blks_read > 0 OR shared_blks_written > 0 )
ORDER BY 4 DESC  , 5 DESC 
LIMIT 10
------------------------------------------------ ------------------------------------ | TOP10 SQL BY SHARED BUFFER READ/WRITE | #| แƒคแƒแƒขแƒแƒกแƒฃแƒ แƒแƒ—แƒ˜| snapshotID| queryid| แƒ’แƒแƒ–แƒ˜แƒแƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ‘แƒšแƒแƒ™แƒ”แƒ‘แƒ˜แƒก แƒฌแƒแƒ™แƒ˜แƒ—แƒฎแƒ•แƒ| แƒ’แƒแƒ–แƒ˜แƒแƒ แƒ”แƒ‘แƒฃแƒš แƒ‘แƒšแƒแƒ™แƒ”แƒ‘แƒจแƒ˜ แƒฉแƒแƒฌแƒ”แƒ แƒ”แƒ— +----+-----------------+---------------------- -+------------------------------------------ | 1| 04.04.2019/17/00 4153:821760255| 797308| 0| 2| 04.04.2019 | 16| 00/4146/821760255 797308:0| 3| 05.04.2019| 01| 03 | 4169| 655729273/797158/0 4:04.04.2019| 16| 00| 4144| 4152624390 | 756514| 0/5/04.04.2019 17:00| 4151| 4152624390| 756514| 0 | 6| 04.04.2019/17/00 4150:2460318461| 734117| 0| 7| 04.04.2019 | 17| 00/4155/3644780286 52973:0| 8| 05.04.2019| 01| 03 | 4168| 1053044345/52818/0 9:04.04.2019| 15| 00| 4141| 2194493487 | 52813| 0/10/04.04.2019 16:00| 4147| 2194493487| 52813| 0 | XNUMX| XNUMX/XNUMX/XNUMX XNUMX:XNUMX| XNUMX| XNUMX| XNUMX| XNUMX | XNUMX| XNUMX/XNUMX/XNUMX XNUMX:XNUMX| XNUMX| XNUMX| XNUMX| XNUMX ------------------------------------------------ -----------------------------------------------

แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒฐแƒ˜แƒกแƒขแƒแƒ’แƒ แƒแƒ›แƒ แƒ›แƒแƒฅแƒกแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒ˜แƒ—

แƒ˜แƒ—แƒฎแƒแƒ•แƒก

SELECT  
  MIN(max_time) AS hist_min  , 
  MAX(max_time) AS hist_max , 
  (( MAX(max_time) - MIN(min_time) ) / hist_columns ) as hist_width
FROM 
  pg_stat_history 
WHERE 
  queryid IS NOT NULL AND
  database_id = DATABASE_ID  AND
  snapshot_timestamp BETWEEN BEGIN_TIMEPOINT AND END_TIMEPOINT ;

SELECT 
  SUM(calls) AS calls
FROM 
  pg_stat_history 
WHERE 
  queryid IS NOT NULL AND
  database_id =DATABASE_ID  AND
  snapshot_timestamp BETWEEN BEGIN_TIMEPOINT AND END_TIMEPOINT AND 
  ( max_time >= hist_current_min AND  max_time < hist_current_max ) ;
|----------------------------------------------- --------------------------------------- | MAX_TIME แƒฐแƒ˜แƒกแƒขแƒแƒ’แƒ แƒแƒ›แƒ | แƒกแƒฃแƒš แƒ–แƒแƒ แƒ”แƒ‘แƒ˜ : 33851920 | MIN TIME : 00:00:01.063 | แƒ›แƒแƒฅแƒกแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒ“แƒ แƒ: 00:02:01.869 ----------------------------------------- ---------------------------- | แƒฌแƒ— แƒฎแƒแƒœแƒ’แƒ แƒซแƒšแƒ˜แƒ•แƒแƒ‘แƒ| แƒ›แƒแƒฅแƒกแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒฎแƒแƒœแƒ’แƒ แƒซแƒšแƒ˜แƒ•แƒแƒ‘แƒ| แƒ แƒ”แƒ™แƒแƒ•แƒก +--------------------------------+------------- ---------------------+---------- | 00:00:01.063( 1063.830 ms.) | 00:00:13.144( 13144.445 ms.) | 9 | 00:00:13.144( 13144.445 ms.) | 00:00:25.225( 25225.060 ms.) | 0 | 00:00:25.225( 25225.060 ms.) | 00:00:37.305( 37305.675 ms.) | 0 | 00:00:37.305( 37305.675 ms.) | 00:00:49.386( 49386.290 ms.) | 0 | 00:00:49.386( 49386.290 ms.) | 00:01:01.466( 61466.906 ms.) | 0 | 00:01:01.466( 61466.906 ms.) | 00:01:13.547( 73547.521 ms.) | 0 | 00:01:13.547( 73547.521 ms.) | 00:01:25.628( 85628.136 ms.) | 0 | 00:01:25.628( 85628.136 ms.) | 00:01:37.708( 97708.751 ms.) | 4 | 00:01:37.708( 97708.751 ms.) | 00:01:49.789( 109789.366 ms.) | 2 | 00:01:49.789( 109789.366 ms.) | 00:02:01.869( 121869.981 ms.) | 0

TOP10 แƒกแƒœแƒ”แƒžแƒจแƒแƒขแƒ˜ แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ— แƒฌแƒแƒ›แƒจแƒ˜

แƒ˜แƒ—แƒฎแƒแƒ•แƒก

--pg_qps.sql
--Calculate Query Per Second 
CREATE OR REPLACE FUNCTION pg_qps( pg_stat_history_id integer ) RETURNS double precision AS $$
DECLARE
 pg_stat_history_rec record ;
 prev_pg_stat_history_id integer ;
 prev_pg_stat_history_rec record;
 total_seconds double precision ;
 result double precision;
BEGIN 
  result = 0 ;
  
  SELECT *
  INTO pg_stat_history_rec
  FROM 
    pg_stat_history
  WHERE id = pg_stat_history_id ;

  IF pg_stat_history_rec.snapshot_timestamp IS NULL 
  THEN
    RAISE EXCEPTION 'ERROR - Not found pg_stat_history for id = %',pg_stat_history_id;
  END IF ;  
  
 --RAISE NOTICE 'pg_stat_history_id = % , snapshot_timestamp = %', pg_stat_history_id , 
 pg_stat_history_rec.snapshot_timestamp ;
  
  SELECT 
    MAX(id)   
  INTO
    prev_pg_stat_history_id
  FROM
    pg_stat_history
  WHERE 
    database_id = pg_stat_history_rec.database_id AND
	queryid IS NULL AND
	id < pg_stat_history_rec.id ;

  IF prev_pg_stat_history_id IS NULL 
  THEN
    RAISE NOTICE 'Not found previous pg_stat_history shapshot for id = %',pg_stat_history_id;
	RETURN NULL ;
  END IF;
  
  SELECT *
  INTO prev_pg_stat_history_rec
  FROM 
    pg_stat_history
  WHERE id = prev_pg_stat_history_id ;
  
  --RAISE NOTICE 'prev_pg_stat_history_id = % , prev_snapshot_timestamp = %', prev_pg_stat_history_id , prev_pg_stat_history_rec.snapshot_timestamp ;    

  total_seconds = extract(epoch from ( pg_stat_history_rec.snapshot_timestamp - prev_pg_stat_history_rec.snapshot_timestamp ));
  
  --RAISE NOTICE 'total_seconds = % ', total_seconds ;    
  
  --RAISE NOTICE 'calls = % ', pg_stat_history_rec.calls ;      
  
  IF total_seconds > 0 
  THEN
    result = pg_stat_history_rec.calls / total_seconds ;
  ELSE
   result = 0 ; 
  END IF;
   
 RETURN result ;
END
$$ LANGUAGE plpgsql;


SELECT 
  id , 
  snapshot_timestamp ,
  calls , 	
  total_time , 
  ( select pg_qps( id )) AS QPS ,
  blk_read_time ,
  blk_write_time
FROM 
  pg_stat_history
WHERE 
  queryid IS NULL AND 
  database_id = DATABASE_ID  AND
  snapshot_timestamp BETWEEN BEGIN_TIMEPOINT AND END_TIMEPOINT AND
  ( select pg_qps( id )) IS NOT NULL 
ORDER BY 5 DESC 
LIMIT 10
|----------------------------------------------- --------------------------------------- | TOP10 Snapshots แƒ“แƒแƒ™แƒ•แƒ”แƒ—แƒ˜แƒšแƒ˜ QueryPerSeconds แƒœแƒแƒ›แƒ แƒ”แƒ‘แƒ˜แƒ— ------------------------------------- ------ ----------------------------------------------- ------------------------------------------ | #| แƒคแƒแƒขแƒแƒกแƒฃแƒ แƒแƒ—แƒ˜| snapshotID| แƒ–แƒแƒ แƒ”แƒ‘แƒ˜| แƒกแƒฃแƒš dbtime| QPS | I/O แƒ“แƒ แƒ | I/O แƒ“แƒ แƒ % +-----+-------------------------------------- ----+--------------------------------+---------- -+---------------------------------+----------- | 1| 04.04.2019/20/04 4161:5758631| 00| 06| 30.513:390513.926:1573.396( 00 ms.)| 00| 01.470:1470.110:376( 2 ms.)| .04.04.2019 | 17| 00/4149/3529197 00:11| 48.830| 708830.618| 980.332:00:12( 47.834 ms.)| 767834.052| 108.324:3:04.04.2019( 16 ms.)| 00 | 4143| 3525360/00/10 13.492:613492.351| 979.267| 00| 08:41.396:521396.555( 84.988 ms.)| 4| 04.04.2019:21:03( 4163 ms.)| 2781536 | 00| 03/06.470/186470.979 785.745:00| 00| 00.249| 249.865:134:5( 04.04.2019 ms.)| 19| 03:4159:2890362( 00 ms.)| .03 | 16.784| 196784.755/776.979/00 00:01.441| 1441.386| 732| 6:04.04.2019:14( 00 ms.)| 4137| 2397326:00:04( 43.033 ms.)| .283033.854 | 665.924| 00/00/00.024 24.505:009| 7| 04.04.2019| 15:00:4139( 2394416 ms.)| 00| 04:51.435:291435.010( 665.116 ms.)| .00 | 00| 12.025/12025.895/4.126 8:04.04.2019| 13| 00| 4135:2373043:00( 04 ms.)| 26.791| 266791.988:659.179:00( 00 ms.)| 00.064 | 64.261| 024/9/05.04.2019 01:03 | 4167| 4387191| 00:06:51.380( 411380.293 ms.)| 609.332| 00:05:18.847( 318847.407 ms.)| .77.507 | 10| 04.04.2019/18/01 4157:1145596| 00| 01| 19.217:79217.372:313.004( 00 ms.)| 00| 01.319:1319.676:1.666( XNUMX ms.)| XNUMX | XNUMX| XNUMX/XNUMX/XNUMX XNUMX:XNUMX| XNUMX| XNUMX| XNUMX:XNUMX:XNUMX( XNUMX ms.)| XNUMX| XNUMX:XNUMX:XNUMX( XNUMX ms.)| XNUMX

แƒกแƒแƒแƒ—แƒแƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ˜แƒกแƒขแƒแƒ แƒ˜แƒ QueryPerSeconds แƒ“แƒ I/O แƒ“แƒ แƒแƒ˜แƒ—

แƒกแƒแƒ แƒฉแƒ”แƒšแƒ˜

SELECT 
  id , 
  snapshot_timestamp ,
  calls , 	
  total_time , 
  ( select pg_qps( id )) AS QPS ,
  blk_read_time ,
  blk_write_time
FROM 
  pg_stat_history
WHERE 
  queryid IS NULL AND 
  database_id = DATABASE_ID  AND
  snapshot_timestamp BETWEEN BEGIN_TIMEPOINT AND END_TIMEPOINT
ORDER BY 2
|-----------------------------------------------------------------------------------------------
| HOURLY EXECUTION HISTORY  WITH QueryPerSeconds and I/O Time
-----------------------------------------------------------------------------------------------------------------------------------------------
| QUERY PER SECOND HISTORY
|    #|          snapshot| snapshotID|      calls|                      total dbtime|        QPS|                          I/O time| I/O time %
+-----+------------------+-----------+-----------+----------------------------------+-----------+----------------------------------+-----------
|    1|  04.04.2019 11:00|       4131|       3747|  00:00:00.835(       835.374 ms.)|      1.041|  00:00:00.000(          .000 ms.)|       .000
|    2|  04.04.2019 12:00|       4133|    1002722|  00:01:52.419(    112419.376 ms.)|    278.534|  00:00:00.149(       149.105 ms.)|       .133
|    3|  04.04.2019 13:00|       4135|    2373043|  00:04:26.791(    266791.988 ms.)|    659.179|  00:00:00.064(        64.261 ms.)|       .024
|    4|  04.04.2019 14:00|       4137|    2397326|  00:04:43.033(    283033.854 ms.)|    665.924|  00:00:00.024(        24.505 ms.)|       .009
|    5|  04.04.2019 15:00|       4139|    2394416|  00:04:51.435(    291435.010 ms.)|    665.116|  00:00:12.025(     12025.895 ms.)|      4.126
|    6|  04.04.2019 16:00|       4143|    3525360|  00:10:13.492(    613492.351 ms.)|    979.267|  00:08:41.396(    521396.555 ms.)|     84.988
|    7|  04.04.2019 17:00|       4149|    3529197|  00:11:48.830(    708830.618 ms.)|    980.332|  00:12:47.834(    767834.052 ms.)|    108.324
|    8|  04.04.2019 18:01|       4157|    1145596|  00:01:19.217(     79217.372 ms.)|    313.004|  00:00:01.319(      1319.676 ms.)|      1.666
|    9|  04.04.2019 19:03|       4159|    2890362|  00:03:16.784(    196784.755 ms.)|    776.979|  00:00:01.441(      1441.386 ms.)|       .732
|   10|  04.04.2019 20:04|       4161|    5758631|  00:06:30.513(    390513.926 ms.)|   1573.396|  00:00:01.470(      1470.110 ms.)|       .376
|   11|  04.04.2019 21:03|       4163|    2781536|  00:03:06.470(    186470.979 ms.)|    785.745|  00:00:00.249(       249.865 ms.)|       .134
|   12|  04.04.2019 23:03|       4165|    1443155|  00:01:34.467(     94467.539 ms.)|    200.438|  00:00:00.015(        15.287 ms.)|       .016
|   13|  05.04.2019 01:03|       4167|    4387191|  00:06:51.380(    411380.293 ms.)|    609.332|  00:05:18.847(    318847.407 ms.)|     77.507
|   14|  05.04.2019 02:03|       4171|     189852|  00:00:10.989(     10989.899 ms.)|     52.737|  00:00:00.539(       539.110 ms.)|      4.906
|   15|  05.04.2019 03:01|       4173|       3627|  00:00:00.103(       103.000 ms.)|      1.042|  00:00:00.004(         4.131 ms.)|      4.010
|   16|  05.04.2019 04:00|       4175|       3627|  00:00:00.085(        85.235 ms.)|      1.025|  00:00:00.003(         3.811 ms.)|      4.471
|   17|  05.04.2019 05:00|       4177|       3747|  00:00:00.849(       849.454 ms.)|      1.041|  00:00:00.006(         6.124 ms.)|       .721
|   18|  05.04.2019 06:00|       4179|       3747|  00:00:00.849(       849.561 ms.)|      1.041|  00:00:00.000(          .051 ms.)|       .006
|   19|  05.04.2019 07:00|       4181|       3747|  00:00:00.839(       839.416 ms.)|      1.041|  00:00:00.000(          .062 ms.)|       .007
|   20|  05.04.2019 08:00|       4183|       3747|  00:00:00.846(       846.382 ms.)|      1.041|  00:00:00.000(          .007 ms.)|       .001
|   21|  05.04.2019 09:00|       4185|       3747|  00:00:00.855(       855.426 ms.)|      1.041|  00:00:00.000(          .065 ms.)|       .008
|   22|  05.04.2019 10:00|       4187|       3797|  00:01:40.150(    100150.165 ms.)|      1.055|  00:00:21.845(     21845.217 ms.)|     21.812

แƒงแƒ•แƒ”แƒšแƒ SQL แƒจแƒ”แƒ แƒฉแƒ”แƒฃแƒšแƒ˜ แƒขแƒ”แƒฅแƒกแƒขแƒ˜

แƒกแƒแƒ แƒฉแƒ”แƒšแƒ˜

SELECT 
  queryid , 
  query 
FROM 
  pg_stat_history
WHERE 
  queryid IS NOT NULL AND 
  database_id = DATABASE_ID  AND
  snapshot_timestamp BETWEEN BEGIN_TIMEPOINT AND END_TIMEPOINT
GROUP BY queryid , query

แƒกแƒฃแƒš

แƒ แƒแƒ’แƒแƒ แƒช แƒฎแƒ”แƒ“แƒแƒ•แƒ—, แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒ—, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ›แƒ˜แƒ˜แƒฆแƒแƒ— แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒกแƒแƒกแƒแƒ แƒ’แƒ”แƒ‘แƒšแƒ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒกแƒ แƒ“แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒ›แƒ“แƒ’แƒแƒ›แƒแƒ แƒ”แƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘.

แฒจแƒ”แƒœแƒ˜แƒจแƒ•แƒœแƒ:แƒ—แƒฃ แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ”แƒ‘แƒจแƒ˜ แƒ“แƒแƒแƒคแƒ˜แƒฅแƒกแƒ˜แƒ แƒ”แƒ— แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ, แƒ›แƒแƒจแƒ˜แƒœ แƒฉแƒ•แƒ”แƒœ แƒ›แƒ˜แƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒ˜แƒกแƒขแƒแƒ แƒ˜แƒแƒก แƒชแƒแƒšแƒ™แƒ” แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก (แƒกแƒ˜แƒ•แƒ แƒชแƒ˜แƒก แƒ“แƒแƒ–แƒแƒ’แƒ•แƒ˜แƒก แƒ›แƒ˜แƒ–แƒœแƒ˜แƒ—, แƒชแƒแƒšแƒ™แƒ” แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ”แƒ‘แƒ˜ แƒ’แƒแƒ›แƒแƒขแƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ).

แƒแƒกแƒ” แƒ แƒแƒ›, แƒกแƒขแƒแƒขแƒ˜แƒกแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜ แƒ“แƒ แƒจแƒ”แƒ’แƒ แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ.
แƒ“แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ”แƒขแƒแƒžแƒ˜ โ€žแƒกแƒขแƒแƒขแƒ˜แƒกแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ’แƒ แƒแƒ•แƒ”แƒ‘แƒโ€œ.

แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ“แƒแƒฎแƒ•แƒ˜แƒ“แƒ”แƒ— แƒ›แƒ”แƒแƒ แƒ” แƒ”แƒขแƒแƒžแƒ–แƒ” - "แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ".
PostgreSQL แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜. แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 1 - แƒ›แƒแƒฎแƒกแƒ”แƒœแƒ”แƒ‘แƒ

แƒ›แƒแƒ’แƒ แƒแƒ› แƒ”แƒก แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ”แƒ แƒ—แƒ˜ แƒแƒ›แƒ‘แƒแƒ•แƒ˜แƒ.

แƒ’แƒแƒ’แƒ แƒซแƒ”แƒšแƒ”แƒ‘แƒ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ ...

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ