แแแแแแแ แ - แแแแแแฃแ แแแแ แแแ แแแแแแ - แจแแแแแแแแฃแแ.
แแแแแแแ แก แงแแแแแคแ แแก แแแแแแแแ แจแแฃแซแแแ. (แ) แ . แแแแแแ.
แแแแแ แแคแแแ.

แแ แแกแขแแ แแ แแแแก แจแแกแแฎแแ, แแฃ แ แแขแแ แฃแแแ แแฎแกแแแแแก แแแแแชแแแแ แแแแแก แแแแแแแกแขแ แแขแแ แก แแแแแกแ แฌแแ แกแฃแแ, แ แแแแ แช แแ แแแ แแแแกแขแ.
แฌแแแแกแแขแงแแแแแ
แงแแแแ แกแแฎแแแ แจแแชแแแแแแ. แแแแแฎแแแแแแ แจแแแแฎแแแแแแแ. แแแกแแแ แฌแแ แแแแแแแแก แแฎแแแแ แแแขแแ แแก แแแ แแ แแแ แก.
แแแ แแแขแแแแแก แฃแแ แงแแคแ: แแแแแแแแแ แกแขแแขแแแแแก แกแแ แแ แแ แจแแแชแแแก แแแแแงแแแแแฃแแ แชแฎแ แแแแแแกแ แแ แกแแ แแแขแแแแก แแแขแแแฃแ แแ แแฃแกแข แแฆแฌแแ แแก. แแแกแแแแแ แแแฃแงแแแแแแแแ แแแแแกแแงแแแแแแแ แแ แแฅแแแแ โแ แแแแ แช แแ แแกโ.
แแแ แแแ แ แแแจแ, แแแกแแแแก แแแแ แแแชแฃแแแแแก แแแแ,
แแแแ แแช, แ แแแแฃแ แ แแแแฎแแแ แแแแแก แกแแฌแแ แแแ แแแแแแ แคแแแฃแกแแ แแแแก แแแแ.
แแแแขแแ, แกแขแแขแแแแ แแฎแแแแ แงแแแแแแ แแแแแแ แคแแ แแแ แแแแแแกแ แแ แแฆแฌแแ แแแแแแแก แจแแแชแแแก.
แจแแกแแซแแแ, แแแแแแแแจแ แกแแกแขแแแ GitHub-แแ แแแกแขแแแแก แแแแแฅแแแงแแแแแก แแแแแแแ แแแแแแ แแแก, แแ แแฅแแแ แแ แ. แแ แ แแแแฉแแแแแแก.
แแแแฎแ แแแแก แแแกแแฌแงแแกแ - "".
แ แแช แจแแแแแแ แแแฎแแ, แงแแแแแแ แแแแแแ แแแแแกแแแ แแกแแ - "ยป
แ แแขแแ แแญแแ แแแแ แแก แงแแแแแคแแ แ?
แแแ แแแ แ แแแจแ, แ แแ แแ แแแแแแแฌแงแแแก, แแแแกแแแแ แแแกแแแแก แแแแแแฃแแ แแฆแแแแแก แแแฎแกแแแแแ.
แแแแ แแช, แแแฌแแ แแแแก แกแแกแขแแแแขแแแแชแแ. แ แแแแแ แแแแฏแแ แแ แแแแแแ แแแฌแงแแ แแแแแแฃแแแแแก แแ แชแแแแแฃแแ แแแฌแแแแแแก แแแแแฌแงแแแแก.
แแแ แแ, แแ แ แแช แแแแแแ แแ - แจแแกแแซแแแ, แแก แแแแแแกแแแแก แกแแกแแ แแแแแ แแงแแก แแ แแ แแแแฎแแแ แแก แแแ แแแแก แฎแแแแฎแแ แแแแแแแแแแแกแ แแ แแแแแแกแขแแก แจแแแ แแแแแแจแ. แกแฎแแ แกแแขแงแแแแแ แ แแ แแแฅแแแ, แแฅแแแแ แแแ แแแก แแแฃแแฏแแแแกแแแแจแ (แแ แแ แ แฐแแแ แแก). แ แแแแแ แแแฅแแแงแแแ แงแแแแแแ แฆแแ แแแฃแแ แแแแแแแ. แแแแแแ แแ แแแแแก แแแแแ. แฎแแแ แแแแแก แ แแแแแแแ แฅแชแแแ แฃแแแ แฌแแแแแ แขแแฅแแแแฃแ แ แกแแแแแฎแแ.
แแแจ แแกแ, แแแแแฌแงแแ แแแ-แแแแ...
แแ แแแแแแแก แแแแชแฎแแแแแ.
แฎแแแแแกแแฌแแแแแแ:
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. แแแแฎแแแ แแแแแ แฃแแแ แแแ แฌแแฃแแแแก, แ แแ แกแแญแแ แแ แจแแแซแแแแก แแกแแแ แ แแ, แ แแกแ แแแแแแแช แแแก แแแแแแแ แแ แกแฃแ แก แแ แแ แช แฃแแแ, แแ แแแแแแแ, แฌแแแก แแแฃแฏแแขแ แแแแขแแแชแแแฃแแแ แแ แแ แจแแแชแแแแแ. แจแแแแแ แกแแญแแ แแ แชแแแแ แ แแกแฃแ แกแแก แแแแแงแแคแ, แแแกแ แแแแคแแแฃแ แแชแแ แแแแแ แแขแฃแแ แกแแกแขแแแแกแแแแก. แแแฃ, แฏแแ แฃแแแ แแแแแแฎแแแแ, แแแแแแฎแแแแ แแ แแกแแ แแแแแแฎแแแแ. แแแแฎแแแ แแแแแ แแ แซแฃแแฌแแ. แแก แแ แชแฎแแแ แแแแก แแแ แแแ.
แ แ แแฅแแแ - แฉแแ แแแจแแแกแแ? แแฅแแแแ แแแแฎแแ แซแแแแแ แแแแแแแขแฃแ แแ. (แ)
แแ แแแแแ แแขแฃแ แจแแแแฎแแแแแจแ แแ แแแแแแแแแแ แกแแขแฃแแชแแแจแ, แจแแแแซแแแแ แชแแขแ แแแแกแฎแแแแแแฃแแแ แแแแฅแแแแแ - แแแแแ, แกแแแฃแแแ แ แแแแแแแแแแก แกแแกแขแแแ แจแแแฅแแแแ.

แแแ แแ, แกแแกแขแแแ แแ แแ แแก, แ แ แแฅแแ แฃแแแ, แกแแขแงแแแก แกแ แฃแแ แแแแแแแ, แแก แซแแแแแ แฎแแแแแฆแแ แแแแฅแแแแ แแ แแแแฎแแแฃแ แแ, แแแแ แแ แงแแแแ แจแแแแฎแแแแแจแ, แ แแแแ แแ แแแแแแ แขแแแแ แแฅแแแแ แแแแชแแแ แแ แจแแแแ แแแแ แแแขแ แแแคแแ แแแชแแ แจแแกแ แฃแแแแแก แแแชแแแแแขแแแแก แแแแแกแแญแ แแแแ. แ แแแ แแ แแฆแแแฉแแแแ แกแแขแฃแแชแแแจแ - โแฌแแแ แแฅ, แแ แแแชแ แกแแ, แแแแแ แแก, แแ แแแชแ แ แโ.
แ แ แแ แแก แแ แแแ แแแแขแแก แแแแแแแแ แแ แฃแแ แงแแคแแแ แแฎแแ แแแแ:
แแแแแแแแ:
1. แกแแแแขแแ แแกแแ. แงแแแแ แจแแแแฎแแแแแจแ, แฃแคแ แ แกแแแแขแแ แแกแแ, แแแแ แ แแฃแแแแแ แคแ แแแ โแจแแแแชแแ แ แแแแแชแแแแ แคแแแแ, แจแแชแแแแ แชแฎแ แแแแก แกแแแ แชแ แแ แ.แจ.โ.
2. แแก แแ แแก แแฎแแแ แฃแแแ แแแ แแ แแฎแแแ แแแแแแแแ แแแ. แ แแช แแ แซแแแแแแแแ แแแ แกแแแฅแขแแแแจแ แแแ แ แแฃ แแแแแ แแแแแชแแแก แแแแกแแฎแฃแ แแแฃแ แฏแแแฏแแคแแแแกแ แแ แแแแแขแแแก.
Cons:
1. แแแแแฌแแแ แแฃแจแแแแ. แแแแ แ แแแฃแจแแแแ.
2. แแฅแแแ แ แแแฃแแแ แฃแแแ แแแแแฌแแแ แงแแแแ แกแแฅแแแแแแแแก แแแแจแแแแแแแแกแ แแ แแแ แกแแแฅแขแแแแแแก แแฎแกแแ.
3. แ แแฆแแชแแก แแแฌแแ แแ แแฅแแแแ แกแแญแแ แ, แ แแแแแ แแแแแแ แแกแแแแก แฎแแแแแกแแฌแแแแแ แแ แแแแแ แแ แ แแกแฃแ แกแ - แแ แ - แกแแแงแแ แแแ แจแแแแแคแแ แแแแแ.
4. แงแแแแแแ แกแแจแแแแแ แแ แงแแแแแแ แฃแกแแแแแแแ โ แจแแแแแแ, แจแแแซแแแแ แแแแฆแแ แ แแฆแแช แแกแแแแกแ: โแแ แช แแแแแ, แแ แช แแแงแแงแ, แแ แแแแ แฃแชแแแแ แชแฎแแแแแโ.
แแก, แแแแช แแ แ แแกแแแแก, แจแแแแแแฃแ แก แแ แกแแแแก.
แแกแ แ แแ, แงแแแแแแ แกแแแแขแแ แแกแ แแแฌแแแ แแฌแงแแแ.
แแแแแแ แแแแ - แกแฅแแแแขแฃแ แแ

(แแแฃแกแขแ แแชแแ แแฆแแแฃแแแ แกแขแแขแแแแแ ยซ")
แแแแแแ แขแแแ:
- แกแแแแแแ แแแแแชแแแแ แแแแแจแ แแแแแกแขแแแแ แแแฃแแแ PostgreSQL-แแก แกแขแแแแแ แขแฃแแ แแแคแแ แแแแแ โpg_stat_statementsโ.
- แแแแแขแแ แแแแแก แแแแแชแแแแ แแแแแจแ, แฉแแแ แแฅแแแแ แกแแ แแแกแแแแก แชแฎแ แแแแแแก แแ แแแแแแแแแก, แ แแแ แกแแฌแงแแก แแขแแแแ แจแแแแแแฎแแ pg_stat_statements-แแก แแกแขแแ แแ แแ แแแแแแแแจแ แแแแคแแแฃแ แแชแแ แแแแฃแแแแแ แแแขแ แแแแกแ แแ แแแแแขแแ แแแแก.
- แแแแแขแแ แแแแแก แฐแแกแขแแ แฉแแแ แแฅแแแแ bash แกแแ แแแขแแแแก แแ แแแแแแแแแก, แแแ แจแแ แแก แแแแแแแแแก แกแแกแขแแแแจแ แแแชแแแแแขแแแแก แแแแแ แแ แแแแกแแแแก.
แแแแกแแฎแฃแ แแแแก แแแแแแแแ
แแแกแแฌแงแแกแแกแแแแก, แกแฅแแแแขแฃแ แ แแแแแ แขแแแแแฃแแ ERD, แ แแช แกแแแแแแแ แแแแแฆแแ:

แชแฎแ แแแแแแก แแแแแ แแฆแฌแแ แแกแแแแแแ โ แฐแแกแขแ, แแแกแขแแแชแแแกแแแ แแแแแแจแแ แแแแก แฌแแ แขแแแ
แแแแแชแแแแ แแแแ โ แแแแแชแแแแ แแแแแก แแแ แแแแขแ แแแ
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-แก แฉแแฌแแ แ, แชแแแแแฃแแ แแแแฎแแแแแก แแกแขแแ แแแก แแแแฆแแแ (แแแแแแแก แแแแแแแแก แแแแแแ, แชแแแแแฃแแ แแแแฎแแแแแก แแแแแ แแจแแแ แแแแแขแแแแแฃแแแ).
แแกแ แ แแ, แจแแแแแฎแแแก แจแแกแ แฃแแแแแก แจแแกแแฎแแ แกแขแแขแแกแขแแแฃแ แ แแแแแชแแแแแ แฎแแแแแกแแฌแแแแแแ แแ แแ แแแแแแ.
แแแ แแแแ แแขแแแ, โแกแขแแขแแกแขแแแฃแ แ แแแแแชแแแแแแก แจแแแ แแแแแโ, แแแกแ แฃแแแแฃแแแ.
แจแแแแซแแแแ แแแแแฎแแแแแ แแแแ แ แแขแแแแ - โแจแแกแ แฃแแแแแก แแแขแ แแแแก แแแงแแแแแโ.

แแแแ แแ แแก แแแแแ แแ แแ แแแแแแแ.
แแแแ แซแแแแแ แแฅแแแแ ...
แฌแงแแ แ: www.habr.com
