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

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

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

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

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

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

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

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

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

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

แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ˜แƒก แƒ’แƒแƒœแƒชแƒฎแƒแƒ“แƒ”แƒ‘แƒ.

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

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

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

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

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

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

แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜ 1 - โ€žแƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒกแƒแƒ›แƒ”แƒ‘แƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒโ€œ

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

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

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

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

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

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

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

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

แƒ“แƒแƒ“แƒ”แƒ‘แƒ˜แƒ—แƒ˜:
1. แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒแƒ. แƒงแƒแƒ•แƒ”แƒš แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒฃแƒคแƒ แƒ แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒแƒ, แƒ•แƒ˜แƒ“แƒ แƒ” แƒ›แƒฃแƒ“แƒ›แƒ˜แƒ•แƒ˜ แƒคแƒ แƒแƒ–แƒ โ€žแƒจแƒ”แƒแƒ›แƒชแƒ˜แƒ แƒ” แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒคแƒแƒ˜แƒšแƒ˜, แƒจแƒ”แƒชแƒ•แƒแƒšแƒ” แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒก แƒกแƒ˜แƒ•แƒ แƒชแƒ” แƒ“แƒ แƒ.แƒจ.โ€œ.
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 แƒฎแƒ”แƒ“แƒ˜แƒก แƒ“แƒ แƒแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒกแƒœแƒ”แƒžแƒจแƒแƒขแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒœแƒแƒฎแƒแƒ“
metrics_glossary โ€” แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ˜แƒก แƒšแƒ”แƒฅแƒกแƒ˜แƒ™แƒแƒœแƒ˜
metrics_config โ€” แƒ˜แƒœแƒ“แƒ˜แƒ•แƒ˜แƒ“แƒฃแƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ
แƒ›แƒ”แƒขแƒ แƒฃแƒš โ€” แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜แƒก แƒฅแƒ•แƒ”แƒจ แƒ›แƒงแƒแƒคแƒ˜ แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒšแƒ˜ แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ
metrics_alert_history โ€” แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ˜แƒกแƒขแƒแƒ แƒ˜แƒ
log_query โ€” แƒกแƒแƒกแƒแƒ แƒ’แƒ”แƒ‘แƒšแƒ แƒชแƒฎแƒ แƒ˜แƒšแƒ˜ AWS-แƒ“แƒแƒœ แƒ’แƒแƒ“แƒ›แƒแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜ PostgreSQL แƒŸแƒฃแƒ แƒœแƒแƒšแƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ˜แƒ“แƒแƒœ แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒœแƒแƒฎแƒแƒ“.
แƒกแƒแƒ‘แƒแƒ–แƒ˜แƒกแƒ โ€” แƒ‘แƒแƒ–แƒแƒ“ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ“แƒ แƒแƒ˜แƒก แƒžแƒ”แƒ แƒ˜แƒแƒ“แƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜
แƒกแƒแƒ’แƒฃแƒจแƒแƒ’แƒ โ€” แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒฏแƒแƒœแƒ›แƒ แƒ—แƒ”แƒšแƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ
checkpoint_alerty_history โ€” แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒฏแƒแƒœแƒ›แƒ แƒ—แƒ”แƒšแƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ˜แƒก แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ˜แƒกแƒขแƒแƒ แƒ˜แƒ
pg_stat_db_queries โ€” แƒแƒฅแƒขแƒ˜แƒฃแƒ แƒ˜ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ›แƒกแƒแƒฎแƒฃแƒ แƒ”แƒ‘แƒ˜แƒก แƒชแƒฎแƒ แƒ˜แƒšแƒ˜
แƒแƒฅแƒขแƒ˜แƒ•แƒแƒ‘แƒ˜แƒก_แƒšแƒแƒ’แƒ˜ โ€” แƒแƒฅแƒขแƒ˜แƒ•แƒแƒ‘แƒ˜แƒก แƒŸแƒฃแƒ แƒœแƒแƒšแƒ˜แƒก แƒ›แƒแƒ›แƒกแƒแƒฎแƒฃแƒ แƒ”แƒ‘แƒ˜แƒก แƒชแƒฎแƒ แƒ˜แƒšแƒ˜
แƒขแƒ แƒแƒž_แƒแƒ˜แƒ“แƒ˜ โ€” แƒฎแƒแƒคแƒแƒœแƒ’แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒชแƒฎแƒ แƒ˜แƒšแƒ˜

แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜ 1 - แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒขแƒแƒขแƒ˜แƒกแƒขแƒ˜แƒ™แƒ˜แƒก แƒจแƒ”แƒ’แƒ แƒแƒ•แƒ”แƒ‘แƒ แƒ“แƒ แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ”แƒ‘แƒ˜แƒก แƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒ

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

                                          แƒชแƒฎแƒ แƒ˜แƒšแƒ˜ "public.pg_stat_history" แƒกแƒ•แƒ”แƒขแƒ˜ | แƒขแƒ˜แƒžแƒ˜ | แƒ›แƒแƒ“แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒแƒ แƒ”แƒ‘แƒ˜ ------------------------------------+ ... local_blks_written | bigint | temp_blks_read | bigint | temp_blks_written | bigint | blk_read_time | double precision | blk_write_time | double precision | baseline_id | แƒ›แƒ—แƒ”แƒšแƒ˜ แƒ แƒ˜แƒชแƒฎแƒ•แƒ˜ | แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒ˜: "pg_stat_history_pkey" แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒแƒ“แƒ˜ แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜, btree (id) "database_idx" btree (database_id) "queryid_idx" btree (queryid) "snapshot_timestamp_idx" btree (snapshot_timestamp) แƒฃแƒชแƒฎแƒ แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ–แƒฆแƒฃแƒ“แƒ•แƒ”แƒ‘แƒ˜: "database_id_fk" แƒฃแƒชแƒฎแƒ แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜ (database_id) แƒ‘แƒ›แƒฃแƒšแƒ”แƒ‘แƒ˜ database(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 ;

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒ“แƒ แƒ

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

แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒก/แƒ’แƒแƒ›แƒแƒงแƒ•แƒแƒœแƒ˜แƒก แƒ“แƒ แƒ

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
--- ... .10|1:821760255:2( 00001 แƒ›แƒฌแƒ›.)| 00 | 03| 23.141| 203141.681| .5.42|2:4152624390:2( 00001 แƒ›แƒฌแƒ›.)| 00 | 03| 13.929| 193929.215| .5.17|3:1484454471:4( 00001 แƒ›แƒฌแƒ›.)| 00 | 02| 09.129| 129129.057| .3.44|4:655729273:1( 00000 แƒ›แƒฌแƒ›.)| .00 | 02| 01.869| 121869.981| .3.25|5:2460318461:1(00000 แƒ›แƒฌแƒ›.)| .00 | 01| 33.113| 93113.835| .2.48|6:2194493487:4(00001 แƒ›แƒฌแƒ›.)| .00

TOP10 SQL แƒกแƒแƒ”แƒ แƒ—แƒ แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒก/แƒ’แƒแƒ›แƒแƒงแƒ•แƒแƒœแƒ˜แƒก แƒ“แƒ แƒแƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—

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

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
--- ... 10| 1| .4152624390|2:00001:00( 08 แƒ›แƒฌแƒ›.)| 31.616 | 511616.592| 31.06| 2| .821760255|2:00001:00( 08 แƒ›แƒฌแƒ›.)| 27.099 | 507099.036| 30.78| 3| .655729273|1:00000:00( 05 แƒ›แƒฌแƒ›.)| 02.209 | 302209.137| 18.35| 4| .2460318461|1:00000:00( 04 แƒ›แƒฌแƒ›.)| 05.981 | 245981.117| 14.93| 5| .1484454471|4:00001:00( 00 แƒ›แƒฌแƒ›.)| 39.144 | 39144.221| 2.38| 6| .2194493487|4:00001:00( 00 แƒ›แƒฌแƒ›.)| .18.182

แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒฅแƒกแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒ“แƒ แƒแƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ— 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 แƒ›แƒแƒฅแƒกแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ— | #| snapshot| 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 แƒ›แƒฌแƒ›.) | 00| 01/36.964/96964.607 5:04.04.2019| 17| 00| 4151:4152624390:00(01 แƒ›แƒฌแƒ›.) | 36.964| 96964.607/6/05.04.2019 10:00| 4188| 1484454471| 00:01:33.452(93452.150 แƒ›แƒฌแƒ›.) | 7| 04.04.2019/17/00 4150:2460318461| 00| 01| 33.113:93113.835:8( 04.04.2019 แƒ›แƒฌแƒ›.) | 15| 00/4140/1484454471 00:00| 11.892| 11892.302| 9:04.04.2019:16(00 แƒ›แƒฌแƒ›.) | 4145| 1484454471/00/00 11.892:11892.302| 10| 04.04.2019| 17:00:4152( 1484454471 แƒ›แƒฌแƒ›.) | 00| 00/11.892/11892.302 XNUMX:XNUMX| XNUMX| XNUMX| XNUMX:XNUMX:XNUMX( XNUMX แƒ›แƒฌแƒ›.) | XNUMX| XNUMX/XNUMX/XNUMX XNUMX:XNUMX| XNUMX| XNUMX| XNUMX:XNUMX:XNUMX( XNUMX แƒ›แƒ˜แƒšแƒ˜แƒฌแƒแƒ›แƒ˜)

TOP10 SQL แƒ’แƒแƒ–แƒ˜แƒแƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒก แƒฌแƒแƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก/แƒฉแƒแƒฌแƒ”แƒ แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ—

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

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
--- ... 10| 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 -------------------------------------------------------------------------------------------------------------------

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

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

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 ) ;
|- ... 33851920:00:00(01.063 แƒ›แƒฌแƒ›.) | 00:02:01.869(00 แƒ›แƒฌแƒ›.) | 00 | 01.063:1063.830:00(00 แƒ›แƒฌแƒ›.) | 13.144:13144.445:9(00 แƒ›แƒฌแƒ›.) | 00 | 13.144:13144.445:00(00 แƒ›แƒฌแƒ›.) | 25.225:25225.060:0(00 แƒ›แƒฌแƒ›.) | 00 | 25.225:25225.060:00(00 แƒ›แƒฌแƒ›.) | 37.305:37305.675:0(00 แƒ›แƒฌแƒ›.) | 00 | 37.305:37305.675:00( 00 แƒ›แƒฌแƒ›.) | 49.386:49386.290:0( 00 แƒ›แƒฌแƒ›.) | 00 | 49.386:49386.290:00( 01 แƒ›แƒฌแƒ›.) | 01.466:61466.906:0( 00 แƒ›แƒฌแƒ›.) | 01 | 01.466:61466.906:00( 01 แƒ›แƒฌแƒ›.) | 13.547:73547.521:0( 00 แƒ›แƒฌแƒ›.) | 01 | 13.547:73547.521:00( 01 แƒ›แƒฌแƒ›.) | 25.628:85628.136:0( 00 แƒ›แƒฌแƒ›.) | 01

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

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

--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
|- ... .10 | 1| 04.04.2019/20/04 4161:5758631| 00| 06| 30.513:390513.926:1573.396( 00 แƒ›แƒฌแƒ›.)| 00| 01.470:1470.110:376( 2 แƒ›แƒฌแƒ›.)| 04.04.2019 | 17| 00/4149/3529197 00:11| 48.830| 708830.618| 980.332:00:12( 47.834 แƒ›แƒฌแƒ›.)| 767834.052| 108.324:3:04.04.2019(16 แƒ›แƒฌแƒ›.)| 00 | 4143| 3525360/00/10 13.492:613492.351| 979.267| 00| 08:41.396:521396.555( 84.988 แƒ›แƒฌแƒ›.)| 4| 04.04.2019:21:03(4163 แƒ›แƒฌแƒ›.)| .2781536 | 00| 03 06.470:186470.979| 785.745| 00| 00:00.249:249.865( 134 แƒ›แƒฌแƒ›.)| 5| 04.04.2019:19:03( 4159 แƒ›แƒฌแƒ›.)| .2890362 | 00| 03/16.784/196784.755 776.979:00| 00| 01.441| 1441.386:732:6( 04.04.2019 แƒ›แƒฌแƒ›.)| 14| 00:4137:2397326(00 แƒ›แƒฌแƒ›.)| .04 | 43.033| 283033.854/665.924/00 00:00.024| 24.505| 009| 7:04.04.2019:15( 00 แƒ›แƒฌแƒ›.)| 4139| 2394416:00:04( 51.435 แƒ›แƒฌแƒ›.)| 291435.010 | 665.116| 00 00:12.025| 12025.895| 4.126| 8:04.04.2019:13( 00 แƒ›แƒฌแƒ›.)| 4135| 2373043:00:04( 26.791 แƒ›แƒฌแƒ›.)| .266791.988 | 659.179| 00/00/00.064 64.261:024| 9| 05.04.2019| 01:03:4167( 4387191 แƒ›แƒฌแƒ›.)| 00| 06:51.380:411380.293( 609.332 แƒ›แƒฌแƒ›.)| 00 | 05| 18.847/318847.407/77.507 10:04.04.2019| 18| 01| 4157:1145596:00( 01 แƒ›แƒฌแƒ›.)| 19.217| 79217.372:313.004:00( 00 แƒ›แƒฌแƒ›.)| 01.319

แƒกแƒแƒแƒ—แƒแƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ˜แƒกแƒขแƒแƒ แƒ˜แƒ 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

แƒกแƒฃแƒš

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

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

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

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

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

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

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

แƒจแƒ”แƒ˜แƒซแƒ˜แƒœแƒ”แƒ— แƒกแƒแƒ˜แƒ›แƒ”แƒ“แƒ แƒฐแƒแƒกแƒขแƒ˜แƒœแƒ’แƒ˜ DDoS แƒ“แƒแƒชแƒ•แƒ˜แƒก แƒ›แƒฅแƒแƒœแƒ” แƒกแƒแƒ˜แƒขแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, VPS VDS แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก ๐Ÿ”ฅ แƒจแƒ”แƒ˜แƒซแƒ˜แƒœแƒ”แƒ— แƒกแƒแƒ˜แƒ›แƒ”แƒ“แƒ แƒ•แƒ”แƒ‘แƒกแƒแƒ˜แƒขแƒ˜แƒก แƒฐแƒแƒกแƒขแƒ˜แƒœแƒ’แƒ˜ DDoS แƒ“แƒแƒชแƒ•แƒ˜แƒ—, VPS VDS แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ˜ | ProHoster