แแแแแแแ แ - แแแแแแฃแ แแแแ แแแ แแแแ - แจแแแแแแแแฃแแ.
แแแแแแแ แก แงแแแแแคแ แแก แแแแแแแแ แจแแฃแซแแแ. (แ) R. Diesel.
แแแแแ แแคแแแ.
แแ แแแแแแ แแแแก แจแแกแแฎแแ, แแฃ แ แแขแแ แฃแแแ แแฎแกแแแแแก แแแแแชแแแแ แแแแแก แแแแแแแกแขแ แแขแแ แก แแแแแกแ แแ แแแ แแแแ แแแแก แฌแแ แกแฃแแ.
แฌแแแแกแแขแงแแแแแ
แงแแแแ แกแแฎแแแ แจแแแชแแแแ. แแแขแฉแแแ แจแแแแฎแแแแแแแ. แแแกแแแ แแฎแแแแ แแแขแแ แแก แแแ แแแ แแแ แแ.
แแแ แแแขแแแแแก แฃแแ แงแแคแ: แกแขแแขแแแแแก แแแแแแแแ แกแแ แแแจแ แแ แแฅแแแแ แแแแแงแแแแแฃแแ แชแฎแ แแแแแแกแ แแ แกแแ แแแขแแแแก แแแขแแแฃแ แ แแ แแฃแกแขแ แแฆแฌแแ แ. แแแกแแแแแแก แแแฃแงแแแแแแแแ แแแแแงแแแแแ แจแแฃแซแแแแแแแ "แ แแแแ แช แแ แแก".
แแแ แแแ แ แแแจแ, แแแกแแแแก แแแแ แ แแแแแแแแแก แแแแ,
แแแแ แแช, แ แแแแฃแ แ แแแแฎแแแ แแแแแก แกแแฌแแ แแแ แแแแแกแแแ แกแแแแแแแ แแก แแแแ.
แแแแขแแ, แกแขแแขแแแแจแ แแแชแแแฃแแแ แแฎแแแแ แแแแแแ แแ แแฆแฌแแ แแแแแแแ แงแแแแแแ แแแแแแ แคแแ แแแ.
แจแแกแแซแแแ, แแแแแแแแจแ แกแแกแขแแแ แแแแแแ แแแก GitHub-แแ แแแแแฅแแแงแแแแแก แแแแแแแ, แแ แจแแแซแแแแ แแ แ. แฒแ แ แแแแฉแแแแแแก.
แแกแขแแ แแแก แแแกแแฌแงแแกแ -
แ แ แแแฎแแ แจแแแแแแ, แงแแแแแแ แแแแแแ แแแแแกแแแ แแกแแ - "
แ แแขแแ แแญแแ แแแแ แแก แงแแแแแคแแ แ?
แแแ แแแ, แแแ แแแ แ แแแจแ, แแกแ, แ แแ แแ แแแแแแฌแงแแ แกแแแฃแแแ แ แแแแ, แแแแฎแกแแแแ แแแแกแแแแ แแแกแแแแก แแแแแแฃแแ แแฆแแแแ.
แแแแ แแช, แแแฌแแ แแแแก แกแแกแขแแแแขแแแแชแแ. แฃแแแ แกแแแฃแแแ แ แแแแแกแแแแก, แฎแแแแแฎแแ แแแฌแงแแ แแแแแแฃแแแแแก แแ แชแแแแแฃแแ แแแฌแแแแแแก แแแแแฌแงแแแแก.
แแแ แแแ, แแ แ แแช แแแแแแ แแ - แแแฃแแแแแแแแ แแก แจแแแซแแแแ แแแแแแก แแแแแแแแแก แแ แแแแฎแแแ แแก แแ แแแแแแแแแแก แแแ แแแแ แแ แแ แจแแแแ แแแแก แกแแแแแแกแแ. แกแฎแแ แกแแขแงแแแแแ แ แแ แแแฅแแแ, แแแแฃแแฏแแแแกแ แจแแแ แแแ แแ (แแ แ แฎแแแ แแแกแแ). แ แแแแแ แแ แกแแแงแแ แแจแ แงแแแแแแ แฆแแ แแแฃแแ แแแแแแแ. แแแแแแ แแ แแแแแก แแแแแ. แแ แแแแแก แ แแแแแแแ แแแ แแแแ แฃแแแ แฌแแแแแ แขแแฅแแแแฃแ แ แกแแแแแฎแแ.
แแกแ แ แแ แแแ-แแแแ แแแแแฌแงแแ...
แแ แแแแแแแก แคแแ แแฃแแแ แแแ.
แฎแแแแแกแแฌแแแแแแ:
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. แแแแแแแแ แแแ แฌแแฃแแแแฃแแ แฃแแแ แแงแแก แแกแแแ แแแแแแก แงแแแแแก แแฃแชแแแแแแแแแจแ, แ แแกแ แแแแแแแช แกแแแ แแแ แแ แฃแแแ แแ แแ แช แฃแแแ แแ แแแแแแแ แฌแแแก แแแฃแฏแแขแ แแแแขแแแชแแ แแ แแ แจแแแชแแแแแ. แจแแแแแ แแฅแแแ แฃแแแ แแแแแงแแ แชแแแแ แ แแกแฃแ แกแ, แแแแแแแคแแแฃแ แแ แแ แแแ แแแแแ แแขแฃแแ แกแแกแขแแแแกแแแแก. แแแแ. แฏแแ แฃแแแ แแแแแแฎแแแแ, แแแแแแฎแแแแ แแ แแกแแ แแแแแแฎแแแแ. แแแแแแขแ แแ แซแฃแแฌแแ. แแก แแ แแก แแ แชแฎแแแ แแแแก แแแ แแ.
แ แ แแฅแแ, แฉแแ แแแจแแแกแแ? แแฅแแแแ แจแแแแแฎแแ แซแแแแแ แแฅแขแฃแแแฃแ แแ. (แแแ แแ แแแ)
แแ แแแแแ แแขแฃแ แจแแแแฎแแแแแจแ แแ แแแแแแแแแแ แกแแขแฃแแชแแแจแ, แจแแแแซแแแแ แชแแขแ แกแฎแแแแแแ แแ แแแแแแแแ - แแแแแ แจแแแฅแแแแ แกแแแฃแแแ แ แแแแแขแแ แแแแแก แกแแกแขแแแ.
แ แ แแฅแแ แฃแแแ, แกแแกแขแแแ แแ แแ แแก, แกแแขแงแแแก แกแ แฃแแ แแแแแแแ, แแก แซแแแแแ แฎแแแแแฆแแแ แแ แแแแฎแแแฃแ แแ, แแแแ แแ แแแแแช แ แแแแ แแ แแแฃแแแแแแแ แกแแแฃแแแ แแแแก แแ แจแแแแ แแแแ แแแขแ แแแคแแ แแแชแแ แจแแกแ แฃแแแแแก แแแชแแแแแขแแแแก แแแกแแแแแ แแแแแ. แแแแกแแแแแก, แ แแ แแ แแฆแแแฉแแแแ แกแแขแฃแแชแแแจแ - "แฌแแแ แแฅ, แแ แแแชแ แกแแ, แแแแแ, แแ แแแชแ แ แ".
แ แ แแ แแก แแ แแแ แแแแขแแก แแแแแแแแ แแ แฃแแ แงแแคแแแ แแฎแแ แแแแ:
แแแแแแแแ:
1. แกแแแแขแแ แแกแแ. แแกแ, แแแแแช แฃแคแ แ แกแแแแขแแ แแกแแ, แแแแ แ แแฃแแแแแ "datafile shrink, alter tablespace แแ แ.แจ."
2. แแก แแ แแก แแฎแแแ แฃแแแ แแแ แแ แแฎแแแ แแแแแแแแ แแแ. แ แแแแแแช แแแแแแแแจแ แแแ แ แแฃ แแแแแ แแแกแชแแแก แแแแกแแฎแฃแ แแแฃแ แฏแแแฏแแคแแแก แแ แแแแแขแก.
Cons:
1. แฃแแแ แแแฃแจแแ. แแแแ แ แแแฃแจแแแ.
2. แ แแแฃแแแ แฃแแแ แแแแแฌแแแ แแฎแกแแแ แงแแแแ แแฅแขแแแแแแก แแแแจแแแแแแแ แแ แแแ แกแแแฅแขแแแแแ.
3. แ แแฆแแชแแก แแแฆแแแ แแแฃแฌแแแก, แ แแแแแ แแแแแแ แแกแแแแก แฎแแแแแกแแฌแแแแแ แแ แแแแแ แแ แ แแกแฃแ แกแ - แแ แ - แกแแแงแแ แแก แแแแ แแ แแก แจแแแฆแฃแแฃแแ.
4. แงแแแแแแ แชแฃแแ แแ แงแแแแแแ แฃแกแแแแแแแ - แจแแแแแแ, แจแแแซแแแแ แแฆแแแฉแแแแก แแแแแแ, แ แแแแ แแชแแ "แแ แ แแแแแ, แแ แ แแแงแแงแ, แแ แแแแ แฃแชแแแแ แแแขแแ แ แชแฎแแแแแ".
แแแแช แแ แ แแกแแแแก แ แแแแก, แแ แกแแแแก แจแแแแแแฃแ แก.
แแกแ แ แแ, แแแ แแแแ แแฌแงแแแ.
แแแแแแ แแแแ - แกแฅแแแแขแฃแ แ
(แแแฃแกแขแ แแชแแ แแฆแแแฃแแแ แกแขแแขแแแแแ ยซ
แแแแแแ แขแแแ:
- แกแแแแแแ แแแแแชแแแแ แแแแ แแแแแกแขแแแแ แแแฃแแแ แกแขแแแแแ แขแฃแแ PostgreSQL แแแคแแ แแแแแแ โpg_stat_statementsโ.
- แแแแแขแแ แแแแแก แแแแแชแแแแ แแแแแจแ แฉแแแ แแฅแแแแ แแแแกแแฎแฃแ แแแแก แชแฎแ แแแแแแก แแแแแแแฅแขแก pg_stat_statements แแกแขแแ แแแก แกแแฌแงแแก แแขแแแแ แจแแกแแแแฎแแ แแ แแแแแแแแจแ แแแขแ แแแแกแ แแ แแแแแขแแ แแแแแก แแแแคแแแฃแ แแชแแแกแแแแก.
- แแแแแขแแ แแแแแก แแแกแแแแซแแแแ แฉแแแ แแฅแแแแ bash แกแแ แแแขแแแแก แแ แแแแแแแแแก, แแแ แจแแ แแก แแแแแแแแแก แกแแกแขแแแแจแ แแแชแแแแแขแแแแก แแแแแ แแ แแแแกแแแแก.
แกแแ แแแกแแก แแแแแแแแ
แแแกแแฌแงแแกแแกแแแแก, แกแฅแแแแขแฃแ แแ แแแแแ แขแแแแแฃแแ ERD, แ แ แแแฎแแ แแแแแก:
แชแฎแ แแแแแแก แแแแแ แแฆแฌแแ แแกแแแแแแ - แแแกแแแแซแแแ, แแแแจแแ แแก แฌแแ แขแแแ แแแแแแแแแแ
แแแแแชแแแแ แแแแ - แแแแแชแแแแ แแแแแก แแแ แแแแขแ แแแ
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
แกแฃแ
แ แแแแ แช แฎแแแแแ, แกแแแแแแ แแแ แขแแแ แกแแจแฃแแแแแแแแ, แจแแแแซแแแแ แแแแฆแแ แแแแ แ แกแแกแแ แแแแแ แแแคแแ แแแชแแ แกแแแฃแจแแ แแแขแแแ แแแแกแ แแ แแแแแชแแแแ แแแแแก แแแแแแแ แแแแแก แจแแกแแฎแแ.
แฒจแแแแจแแแ:แแฃ แจแแแแแฎแแแแจแ แแแแคแแฅแกแแ แแ แจแแแแแฎแแ, แแแจแแ แฉแแแ แแแแแฆแแแ แแกแขแแ แแแก แชแแแแ แแแแฎแแแแแกแแแแก (แกแแแ แชแแก แแแแแแแแก แแแแแแ, แชแแแแ แแแแฎแแแแแก แแแแแ แแจแแแ แแแแแขแแแแแฃแแแ).
แแกแ แ แแ, แกแขแแขแแกแขแแแฃแ แ แแแแแชแแแแแ แจแแแแแฎแแแก แจแแกแ แฃแแแแแก แจแแกแแฎแแ แฎแแแแแกแแฌแแแแแ แแ แจแแแ แแแแแฃแแแ.
แแแกแ แฃแแแแฃแแแ แแแ แแแแ แแขแแแ โแกแขแแขแแกแขแแแฃแ แ แแแแแชแแแแแแก แจแแแ แแแแแโ.
แจแแแแซแแแแ แแแแแฎแแแแแ แแแแ แ แแขแแแแ - "แจแแกแ แฃแแแแแก แแแขแ แแแแก แแแแคแแแฃแ แแชแแ".
แแแแ แแ แแก แแแแแ แแ แแ แแแแแแแ.
แแแแ แซแแแแแ แแฅแแแแ ...
แฌแงแแ แ: www.habr.com