PostgreSQL เช•เซเชตเซ‡เชฐเซ€เชเชจเซเช‚ เชชเซเชฐเชฆเชฐเซเชถเชจ เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช—. เชญเชพเช— 1 - เชฐเชฟเชชเซ‹เชฐเซเชŸเชฟเช‚เช—

เชเชจเซเชœเชฟเชจเชฟเชฏเชฐ - เชฒเซ‡เชŸเชฟเชจเชฎเชพเช‚เชฅเซ€ เช…เชจเซเชตเชพเชฆเชฟเชค - เชชเซเชฐเซ‡เชฐเชฟเชค.
เชเชจเซเชœเชฟเชจเชฟเชฏเชฐ เช•เช‚เชˆเชชเชฃ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. (c) เช†เชฐ. เชกเซ€เชเชฒ.
เชเชชเชฟเช—เซเชฐเชพเชซเซเชธ.
PostgreSQL เช•เซเชตเซ‡เชฐเซ€เชเชจเซเช‚ เชชเซเชฐเชฆเชฐเซเชถเชจ เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช—. เชญเชพเช— 1 - เชฐเชฟเชชเซ‹เชฐเซเชŸเชฟเช‚เช—
เช…เชฅเชตเชพ เชกเซ‡เชŸเชพเชฌเซ‡เช เชเชกเชฎเชฟเชจเชฟเชธเซเชŸเซเชฐเซ‡เชŸเชฐเชจเซ‡ เชคเซ‡เชจเชพ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชญเซ‚เชคเช•เชพเชณเชจเซ‡ เชถเชพ เชฎเชพเชŸเซ‡ เชฏเชพเชฆ เชฐเชพเช–เชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เชคเซ‡ เชตเชฟเชถเซ‡เชจเซ€ เชตเชพเชฐเซเชคเชพ.

เชซเซ‹เชฐเชตเชฐเซเชก

เชคเชฎเชพเชฎ เชจเชพเชฎเซ‹ เชฌเชฆเชฒเชพเชˆ เช—เชฏเชพ เช›เซ‡. เชฎเซ‡เชšเซ‹ เชฐเซ‡เชจเซเชกเชฎ เช›เซ‡. เชธเชพเชฎเช—เซเชฐเซ€ เชซเช•เซเชค เชฒเซ‡เช–เช•เชจเซ‹ เชตเซเชฏเช•เซเชคเชฟเช—เชค เช…เชญเชฟเชชเซเชฐเชพเชฏ เช›เซ‡.

เชตเซ‹เชฐเช‚เชŸเซ€เชจเซ‹ เช…เชธเซเชตเซ€เช•เชฐเชฃ: เชฒเซ‡เช–เซ‹เชจเซ€ เช†เชฏเซ‹เชœเชฟเชค เชถเซเชฐเซ‡เชฃเซ€เชฎเชพเช‚ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเชพ เช•เซ‹เชทเซเชŸเช•เซ‹ เช…เชจเซ‡ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซ‹เชจเซเช‚ เช•เซ‹เชˆ เชตเชฟเช—เชคเชตเชพเชฐ เช…เชจเซ‡ เชธเชšเซ‹เชŸ เชตเชฐเซเชฃเชจ เชนเชถเซ‡ เชจเชนเซ€เช‚. เชธเชพเชฎเช—เซเชฐเซ€เชจเซ‹ เชคเชพเชคเซเช•เชพเชฒเชฟเช• เช‰เชชเชฏเซ‹เช— "AS IS" เช•เชฐเซ€ เชถเช•เชพเชคเซ‹ เชจเชฅเซ€.
เชชเซเชฐเชฅเชฎ, เชฎเซ‹เชŸเซ€ เชฎเชพเชคเซเชฐเชพเชฎเชพเช‚ เชธเชพเชฎเช—เซเชฐเซ€เชจเซ‡ เช•เชพเชฐเชฃเซ‡,
เชฌเซ€เชœเซเช‚, เชตเชพเชธเซเชคเชตเชฟเช• เช—เซเชฐเชพเชนเช•เชจเชพ เช‰เชคเซเชชเชพเชฆเชจ เช†เชงเชพเชฐ เชธเชพเชฅเซ‡เชจเซ€ เชคเซ€เช•เซเชทเซเชฃเชคเชพเชจเซ‡ เช•เชพเชฐเชฃเซ‡.
เชคเซ‡เชฅเซ€, เชฒเซ‡เช–เซ‹เชฎเชพเช‚ เชซเช•เซเชค เชธเซŒเชฅเซ€ เชธเชพเชฎเชพเชจเซเชฏ เชธเซเชตเชฐเซ‚เชชเชฎเชพเช‚ เชตเชฟเชšเชพเชฐเซ‹ เช…เชจเซ‡ เชตเชฐเซเชฃเชจเซ‹ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.
เช•เชฆเชพเชš เชญเชตเชฟเชทเซเชฏเชฎเชพเช‚ เชธเชฟเชธเซเชŸเชฎ GitHub เชชเชฐ เชชเซ‹เชธเซเชŸเชฟเช‚เช—เชจเชพ เชธเซเชคเชฐ เชธเซเชงเซ€ เชตเชงเชถเซ‡, เช…เชฅเชตเชพ เช•เชฆเชพเชš เชจเชนเซ€เช‚. เชธเชฎเชฏ เชฌเชคเชพเชตเชถเซ‡.

เชตเชพเชฐเซเชคเชพเชจเซ€ เชถเชฐเซ‚เช†เชค-เชคเชฎเชจเซ‡ เชฏเชพเชฆ เช›เซ‡ เช•เซ‡ เช† เชฌเชงเซเช‚ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชถเชฐเซ‚ เชฅเชฏเซเช‚ยป.
เชชเชฐเชฟเชฃเชพเชฎเซ‡ เชถเซเช‚ เชฅเชฏเซเช‚, เชธเซŒเชฅเซ€ เชธเชพเชฎเชพเชจเซเชฏ เชถเชฌเซเชฆเซ‹เชฎเชพเช‚ - "PostgreSQL เชชเซเชฐเชฆเชฐเซเชถเชจเชจเซ‡ เชธเซเชงเชพเชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เชชเชฆเซเชงเชคเชฟเช“เชฎเชพเช‚เชจเซ€ เชเช• เชคเชฐเซ€เช•เซ‡ เชธเชฟเชจเซเชฅเซ‡เชธเชฟเชธยป

เชฎเชพเชฐเซ‡ เช† เชฌเชงเชพเชจเซ€ เชถเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐ เช›เซ‡?

เชธเชพเชฐเซเช‚, เชธเซŒ เชชเซเชฐเชฅเชฎ, เชจเชฟเชตเซƒเชคเซเชคเชฟเชจเชพ เชญเชตเซเชฏ เชฆเชฟเชตเชธเซ‹เชจเซ‡ เชฏเชพเชฆ เช•เชฐเซ€เชจเซ‡, เชคเชฎเชพเชฐเซ€ เชœเชพเชคเชจเซ‡ เชญเซ‚เชฒเชถเซ‹ เชจเชนเซ€เช‚.
เชฌเซ€เชœเซเช‚, เชœเซ‡ เชฒเช–เซเชฏเซเช‚ เชนเชคเซเช‚ เชคเซ‡ เชตเซเชฏเชตเชธเซเชฅเชฟเชค เช•เชฐเชตเซเช‚. เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡, เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ เชนเซเช‚ เชฎเซ‚เช‚เชเชตเชฃเชฎเชพเช‚ เช†เชตเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซเช‚ เช›เซเช‚ เช…เชจเซ‡ เช…เชฒเช— เชญเชพเช—เซ‹ เชญเซ‚เชฒเซ€ เชœเชพเช‰เช‚ เช›เซเช‚.

เชธเชพเชฐเซเช‚, เช…เชจเซ‡ เชธเซŒเชฅเซ€ เช…เช—เชคเซเชฏเชจเซเช‚ - เช…เชšเชพเชจเช• เชคเซ‡ เช•เซ‹เชˆเชจเชพ เชฎเชพเชŸเซ‡ เช•เชพเชฎเชฎเชพเช‚ เช†เชตเซ€ เชถเช•เซ‡ เช›เซ‡ เช…เชจเซ‡ เชตเซเชนเซ€เชฒเชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชถเซ‹เชงเชตเชพเชฎเชพเช‚ เช…เชจเซ‡ เชฐเซ‡เช• เชเช•เชคเซเชฐเชฟเชค เชจ เช•เชฐเชตเชพเชฎเชพเช‚ เชฎเชฆเชฆ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เชฌเซ€เชœเชพ เชถเชฌเซเชฆเซ‹เชฎเชพเช‚ เช•เชนเซ€เช เชคเซ‹, เชคเชฎเชพเชฐเชพ เช•เชฐเซเชฎเชฎเชพเช‚ เชธเซเชงเชพเชฐเซ‹ เช•เชฐเซ‹ (เช–เชพเชฌเซเชฐเซ‹เชตเซเชธเซเช•เซ€ เชจเชนเซ€เช‚). เช† เชตเชฟเชถเซเชตเชฎเชพเช‚ เชธเซŒเชฅเซ€ เชฎเซ‚เชฒเซเชฏเชตเชพเชจ เชตเชธเซเชคเซ เชฎเชพเชŸเซ‡ เชตเชฟเชšเชพเชฐเซ‹ เช›เซ‡. เชฎเซเช–เซเชฏ เชตเชธเซเชคเซ เชเช• เชตเชฟเชšเชพเชฐ เชถเซ‹เชงเชตเชพเชจเซเช‚ เช›เซ‡. เช…เชจเซ‡ เชตเชฟเชšเชพเชฐเชจเซ‡ เชตเชพเชธเซเชคเชตเชฟเช•เชคเชพเชฎเชพเช‚ เช…เชจเซเชตเชพเชฆเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชเช• เชธเช‚เชชเซ‚เชฐเซเชฃ เชคเช•เชจเซ€เช•เซ€ เชธเชฎเชธเซเชฏเชพ เช›เซ‡.

เชคเซ‹ เชšเชพเชฒเซ‹ เชงเซ€เชฎเซ‡ เชงเซ€เชฎเซ‡ เชถเชฐเซ เช•เชฐเซ€เช...

เชธเชฎเชธเซเชฏเชพเชจเซ€ เชฐเชšเชจเชพ.

เช‰เชชเชฒเชฌเซเชง:

PostgreSQL(10.5), เชฎเชฟเชถเซเชฐ เชฒเซ‹เชก (OLTP+DSS), เชฎเชงเซเชฏเชฎเชฅเซ€ เชนเชณเชตเชพ เชฒเซ‹เชก, AWS เช•เซเชฒเชพเช‰เชกเชฎเชพเช‚ เชนเซ‹เชธเซเชŸ.
เชคเซเชฏเชพเช‚ เช•เซ‹เชˆ เชกเซ‡เชŸเชพเชฌเซ‡เช เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช— เชจเชฅเซ€, เช‡เชจเซเชซเซเชฐเชพเชธเซเชŸเซเชฐเช•เซเชšเชฐ เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช—เชจเซ‡ เชจเซเชฏเซ‚เชจเชคเชฎ เช—เซ‹เช เชตเชฃเซ€เชฎเชพเช‚ เชฎเชพเชจเช• AWS เชŸเซ‚เชฒเซเชธ เชคเชฐเซ€เช•เซ‡ เชฐเชœเซ‚ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

เชคเซ‡ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡:

เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเซ€ เช•เชพเชฎเช—เซ€เชฐเซ€ เช…เชจเซ‡ เชธเซเชฅเชฟเชคเชฟเชจเซเช‚ เชจเชฟเชฐเซ€เช•เซเชทเชฃ เช•เชฐเซ‹, เชญเชพเชฐเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เช เช•เซเชตเซ‡เชฐเซ€เชเชจเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชฎเชพเชนเชฟเชคเซ€ เชถเซ‹เชงเซ‹ เช…เชจเซ‡ เชฐเชพเช–เซ‹.

เชธเช‚เช•เซเชทเชฟเชชเซเชค เชชเชฐเชฟเชšเชฏ เช…เชฅเชตเชพ เช‰เช•เซ‡เชฒเซ‹เชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ

เชถเชฐเซ‚ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชšเชพเชฒเซ‹ เช‡เชœเชจเซ‡เชฐ เชฎเชพเชŸเซ‡ เชซเชพเชฏเชฆเชพ เช…เชจเซ‡ เชฎเซเชถเซเช•เซ‡เชฒเซ€เช“เชจเชพ เชคเซเชฒเชจเชพเชคเซเชฎเช• เชตเชฟเชถเซเชฒเซ‡เชทเชฃเชจเชพ เชฆเซƒเชทเซเชŸเชฟเช•เซ‹เชฃเชฅเซ€ เชธเชฎเชธเซเชฏเชพ เชนเชฒ เช•เชฐเชตเชพเชจเชพ เชตเชฟเช•เชฒเซเชชเซ‹เชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€เช, เช…เชจเซ‡ เชœเซ‡เช“ เช•เชฐเซเชฎเชšเชพเชฐเซ€เช“เชจเซ€ เชธเซ‚เชšเชฟเชฎเชพเช‚ เชนเซ‹เชตเชพเชจเซเช‚ เชฎเชพเชจเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชคเซ‡เช“เชจเซ‡ เชซเชพเชฏเชฆเชพ เช…เชจเซ‡ เชจเซเช•เชธเชพเชจ เชธเชพเชฅเซ‡ เชตเซเชฏเชตเชนเชพเชฐ เช•เชฐเชตเชพ เชฆเซ‹. เชฎเซ‡เชจเซ‡เชœเชฎเซ‡เชจเซเชŸเชจเซเช‚.

เชตเชฟเช•เชฒเซเชช 1 - "เชฎเชพเช— เชชเชฐ เช•เชพเชฎ เช•เชฐเชตเซเช‚"

เช…เชฎเซ‡ เชฌเชงเซเช‚ เชœเซ‡เชฎ เช›เซ‡ เชคเซ‡เชฎ เช›เซ‹เชกเซ€เช เช›เซ€เช. เชœเซ‹ เช—เซเชฐเชพเชนเช• เช†เชฐเซ‹เช—เซเชฏ, เชกเซ‡เชŸเชพเชฌเซ‡เช เช…เชฅเชตเชพ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ€ เช•เชพเชฎเช—เซ€เชฐเซ€เชฎเชพเช‚ เช•เซ‹เชˆ เชฌเชพเชฌเชคเชฅเซ€ เชธเช‚เชคเซเชทเซเชŸ เชจ เชนเซ‹เชฏ, เชคเซ‹ เชคเซ‡ เชกเซ€เชฌเซ€เช เชเชจเซเชœเชฟเชจเชฟเชฏเชฐเซเชธเชจเซ‡ เชˆ-เชฎเซ‡เชฒ เชฆเซเชตเชพเชฐเชพ เช…เชฅเชตเชพ เชŸเชฟเช•เชฟเชŸ เชฌเซ‹เช•เซเชธเชฎเชพเช‚ เช•เซ‹เชˆ เช˜เชŸเชจเชพ เชฌเชจเชพเชตเซ€เชจเซ‡ เชธเซ‚เชšเชฟเชค เช•เชฐเชถเซ‡.
เชเช• เช‡เชœเชจเซ‡เชฐ, เชธเซ‚เชšเชจเชพ เชชเซเชฐเชพเชชเซเชค เช•เชฐเซเชฏเชพ เชชเช›เซ€, เชธเชฎเชธเซเชฏเชพเชจเซ‡ เชธเชฎเชœเชถเซ‡, เช‰เช•เซ‡เชฒ เช†เชชเชถเซ‡ เช…เชฅเชตเชพ เชธเชฎเชธเซเชฏเชพเชจเซ‡ เช›เชพเชตเชฐเชถเซ‡, เช†เชถเชพ เชฐเชพเช–เชถเซ‡ เช•เซ‡ เชฌเชงเซเช‚ เชœ เชœเชพเชคเซ‡ เชœ เช‰เช•เซ‡เชฒเชพเชˆ เชœเชถเซ‡, เช…เชจเซ‡ เช•เซ‹เชˆเชชเชฃ เชฐเซ€เชคเซ‡, เชŸเซ‚เช‚เช• เชธเชฎเชฏเชฎเชพเช‚ เชฌเชงเซเช‚ เชญเซ‚เชฒเซ€ เชœเชถเซ‡.
เชเช• เชœเชพเชคเชจเซ€ เชธเซ‚เช‚เช เชตเชพเชณเซ€ เช•เซ‡เช• เช…เชจเซ‡ เชกเซ‹เชจเชŸเซเชธ, เช‰เชเชฐเชกเชพ เช…เชจเซ‡ เชฎเซเชถเซเช•เซ‡เชฒเซ€เช“เชเช• เชœเชพเชคเชจเซ€ เชธเซ‚เช‚เช เชตเชพเชณเซ€ เช•เซ‡เช• เช…เชจเซ‡ เชกเซ‹เชจเชŸเซเชธ:
1. เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชตเชงเชพเชฐเชพเชจเซเช‚ เช•เช‚เชˆ เชจเชฅเซ€
2. เชนเช‚เชฎเซ‡เชถเชพ เชฌเชนเชพเชฐ เชจเซ€เช•เชณเชตเชพเชจเซ€ เช…เชจเซ‡ เช—เช‚เชฆเชพ เชฅเชตเชพเชจเซ€ เชคเช• เชนเซ‹เชฏ เช›เซ‡.
3. เช˜เชฃเซ‹ เชธเชฎเชฏ เช•เซ‡ เชœเซ‡ เชคเชฎเซ‡ เชคเชฎเชพเชฐเชพ เชชเซ‹เชคเชพเชจเชพ เชชเชฐ เชตเชฟเชคเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹.
เช‰เชเชฐเชกเชพ เช…เชจเซ‡ เชฌเชฎเซเชชเซเชธ:
1. เชตเชนเซ‡เชฒเชพ เช•เซ‡ เชฎเซ‹เชกเชพ, เช—เซเชฐเชพเชนเช• เช† เชตเชฟเชถเซเชตเชฎเชพเช‚ เช…เชธเซเชคเชฟเชคเซเชต เช…เชจเซ‡ เชธเชพเชฐเซเชตเชคเซเชฐเชฟเช• เชจเซเชฏเชพเชฏเชจเชพ เชธเชพเชฐ เชตเชฟเชถเซ‡ เชตเชฟเชšเชพเชฐเชถเซ‡ เช…เชจเซ‡ เชซเชฐเซ€ เชเช•เชตเชพเชฐ เชชเซ‹เชคเชพเชจเซ‡ เชชเซเชฐเชถเซเชจ เชชเซ‚เช›เชถเซ‡ - เชนเซเช‚ เชคเซ‡เชฎเชจเซ‡ เชฎเชพเชฐเชพ เชชเซˆเชธเชพ เช•เซ‡เชฎ เชšเซ‚เช•เชตเซ€ เชฐเชนเซเชฏเซ‹ เช›เซเช‚? เชชเชฐเชฟเชฃเชพเชฎ เชนเช‚เชฎเซ‡เชถเชพ เชเช•เชธเชฐเช–เซเช‚ เชœ เชนเซ‹เชฏ โ€‹โ€‹เช›เซ‡ - เช—เซเชฐเชพเชนเช• เช•เช‚เชŸเชพเชณเซ€ เชœเชพเชฏ เช…เชจเซ‡ เชตเชฟเชฆเชพเชฏ เชฒเชนเซ‡เชฐเชพเชตเซ‡ เชคเซเชฏเชพเชฐเซ‡ เชเช•เชฎเชพเชคเซเชฐ เชชเซเชฐเชถเซเชจ เชนเซ‹เชฏ เช›เซ‡. เช…เชจเซ‡ เชซเซ€เชกเชฐ เช–เชพเชฒเซ€ เช›เซ‡. เชฆเซเชƒเช–เชฆเชพเชฏเช• เช›เซ‡.
2. เชเชจเซเชœเชฟเชจเชฟเชฏเชฐเชจเซ‹ เชตเชฟเช•เชพเชธ เชถเซ‚เชจเซเชฏ เช›เซ‡.
3. เช•เชพเชฎ เช…เชจเซ‡ เชฒเซ‹เชกเชฟเช‚เช—เชจเซ‡ เชธเซเชจเชฟเชถเซเชšเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เชฎเซเชถเซเช•เซ‡เชฒเซ€เช“

เชตเชฟเช•เชฒเซเชช 2 - "เช–เช‚เชœเชฐเซ€ เชธเชพเชฅเซ‡ เชจเซƒเชคเซเชฏ เช•เชฐเซ‹, เชชเชนเซ‡เชฐเซ‹ เช…เชจเซ‡ เชœเซ‚เชคเชพ เชชเชนเซ‡เชฐเซ‹"

เชซเช•เชฐเซ‹ 1-เช…เชฎเชจเซ‡ เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎเชจเซ€ เช•เซ‡เชฎ เชœเชฐเซ‚เชฐ เช›เซ‡, เช…เชฎเซ‡ เชฌเชงเซ€ เชตเชฟเชจเช‚เชคเซ€เช“ เชชเซเชฐเชพเชชเซเชค เช•เชฐเซ€เชถเซเช‚. เช…เชฎเซ‡ เชกเซ‡เชŸเชพ เชกเชฟเช•เซเชถเชจเชฐเซ€ เช…เชจเซ‡ เชกเชพเชฏเชจเซ‡เชฎเชฟเช• เชตเซเชฏเซ‚ เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฎ เชชเซเชฐเช•เชพเชฐเชจเซ€ เช•เซเชตเซ‡เชฐเซ€เชเชจเซ‹ เชธเชฎเซ‚เชน เชฒเซ‰เชจเซเชš เช•เชฐเซ€เช เช›เซ€เช, เชคเชฎเชพเชฎ เชชเซเชฐเช•เชพเชฐเชจเชพ เช•เชพเช‰เชจเซเชŸเชฐเซเชธ เชšเชพเชฒเซ เช•เชฐเซ€เช เช›เซ€เช, เชฆเชฐเซ‡เช• เชตเชธเซเชคเซเชจเซ‡ เช•เซ‹เชทเซเชŸเช•เซ‹เชฎเชพเช‚ เชฒเชพเชตเซ€เช เช›เซ€เช, เชธเชฎเชฏเชพเช‚เชคเชฐเซ‡ เชธเซ‚เชšเชฟเช“ เช…เชจเซ‡ เช•เซ‹เชทเซเชŸเช•เซ‹เชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซ€เช เช›เซ€เช. เชชเชฐเชฟเชฃเชพเชฎเซ‡, เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชธเซเช‚เชฆเชฐ เช…เชฅเชตเชพ เช–เซ‚เชฌ เชœ เช†เชฒเซ‡เช–, เช•เซ‹เชทเซเชŸเช•เซ‹, เช…เชนเซ‡เชตเชพเชฒเซ‹ เช›เซ‡. เชฎเซเช–เซเชฏ เชตเชธเซเชคเซ - เชคเซ‡ เชตเชงเซ, เชตเชงเซ เชนเชถเซ‡.
เชซเช•เชฐเซ‹ 2- เชชเซเชฐเชตเซƒเชคเซเชคเชฟ เชฌเชจเชพเชตเซ‹ - เช† เชฌเชงเชพเชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซ‹.
เชซเช•เชฐเซ‹ 3-เช…เชฎเซ‡ เชšเซ‹เช•เซเช•เชธ เชฆเชธเซเชคเชพเชตเซ‡เชœ เชคเซˆเชฏเชพเชฐ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช, เช…เชฎเซ‡ เช† เชฆเชธเซเชคเชพเชตเซ‡เชœ เช•เชนเซ€เช เช›เซ€เช, เชธเชฐเชณ เชฐเซ€เชคเซ‡ - "เช†เชชเชฃเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชธเชœเซเชœ เช•เชฐเซ€เช."
เชซเช•เชฐเซ‹ 4- เช—เซเชฐเชพเชนเช•, เช†เชฒเซ‡เช– เช…เชจเซ‡ เช†เช‚เช•เชกเชพเช“เชจเซ€ เช† เชฌเชงเซ€ เชญเชตเซเชฏเชคเชพ เชœเซ‹เชˆเชจเซ‡, เชฌเชพเชฒเชฟเชถ เชจเชฟเชทเซเช•เชชเชŸ เช†เชคเซเชฎเชตเชฟเชถเซเชตเชพเชธเชฎเชพเช‚ เช›เซ‡ - เชนเชตเซ‡ เชฌเชงเซเช‚ เชœ เช…เชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เชŸเซ‚เช‚เช• เชธเชฎเชฏเชฎเชพเช‚ เช•เชพเชฎ เช•เชฐเชถเซ‡. เช…เชจเซ‡, เชธเชฐเชณเชคเชพเชฅเซ€ เช…เชจเซ‡ เชชเซ€เชกเชพเชฐเชนเชฟเชค เชฐเซ€เชคเซ‡ เชคเซ‡เชฎเชจเชพ เชจเชพเชฃเชพเช•เซ€เชฏ เชธเช‚เชธเชพเชงเชจเซ‹ เชธเชพเชฅเซ‡ เชญเชพเช— เชฒเซ‡ เช›เซ‡. เชฎเซ‡เชจเซ‡เชœเชฎเซ‡เชจเซเชŸเชจเซ‡ เชชเชฃ เช–เชพเชคเชฐเซ€ เช›เซ‡ เช•เซ‡ เช…เชฎเชพเชฐเชพ เชเชจเซเชœเชฟเชจเชฟเชฏเชฐเซ‹ เชธเช–เชค เชฎเชนเซ‡เชจเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ‡. เชฎเชนเชคเซเชคเชฎ เชฒเซ‹เชกเชฟเช‚เช—.
เชซเช•เชฐเซ‹ 5- เชธเซเชŸเซ‡เชช 1เชจเซเช‚ เชจเชฟเชฏเชฎเชฟเชค เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจ เช•เชฐเซ‹.
เชเช• เชœเชพเชคเชจเซ€ เชธเซ‚เช‚เช เชตเชพเชณเซ€ เช•เซ‡เช• เช…เชจเซ‡ เชกเซ‹เชจเชŸเซเชธ, เช‰เชเชฐเชกเชพ เช…เชจเซ‡ เชฎเซเชถเซเช•เซ‡เชฒเซ€เช“เชเช• เชœเชพเชคเชจเซ€ เชธเซ‚เช‚เช เชตเชพเชณเซ€ เช•เซ‡เช• เช…เชจเซ‡ เชกเซ‹เชจเชŸเซเชธ:
1. เชฎเซ‡เชจเซ‡เชœเชฐเซ‹ เช…เชจเซ‡ เชเชจเซเชœเชฟเชจเชฟเชฏเชฐเซ‹เชจเซเช‚ เชœเซ€เชตเชจ เชธเชฐเชณ, เช…เชจเซเชฎเชพเชจเชฟเชค เช…เชจเซ‡ เชชเซเชฐเชตเซƒเชคเซเชคเชฟเชฅเซ€ เชญเชฐเซ‡เชฒเซเช‚ เชนเซ‹เชฏ เช›เซ‡. เชฌเชงเซเช‚ เช—เซเช‚เชœเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡, เชฆเชฐเซ‡เช• เชตเซเชฏเชธเซเชค เช›เซ‡.
2. เช—เซเชฐเชพเชนเช•เชจเซเช‚ เชœเซ€เชตเชจ เชชเชฃ เช–เชฐเชพเชฌ เชจเชฅเซ€ - เชคเซ‡เชจเซ‡ เชนเช‚เชฎเซ‡เชถเชพ เช–เชพเชคเชฐเซ€ เช›เซ‡ เช•เซ‡ เชคเชฎเชพเชฐเซ‡ เชฅเซ‹เชกเซ€ เชงเซ€เชฐเชœ เชฐเชพเช–เชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช…เชจเซ‡ เชฌเชงเซเช‚ เช•เชพเชฎ เช•เชฐเชถเซ‡. เชคเซ‡ เชธเชพเชฐเซเช‚ เชฅเชˆ เชฐเชนเซเชฏเซเช‚ เชจเชฅเซ€, เชธเชพเชฐเซเช‚, เชธเชพเชฐเซเช‚ - เช† เชตเชฟเชถเซเชต เช…เชฏเซ‹เช—เซเชฏ เช›เซ‡, เช†เช—เชพเชฎเซ€ เชœเซ€เชตเชจเชฎเชพเช‚ - เชคเชฎเซ‡ เชจเชธเซ€เชฌเชฆเชพเชฐ เชนเชถเซ‹.
เช‰เชเชฐเชกเชพ เช…เชจเซ‡ เชฌเชฎเซเชชเซเชธ:
1. เชตเชนเซ‡เชฒเชพ เช•เซ‡ เชชเช›เซ€, เชเช• เชธเชฎเชพเชจ เชธเซ‡เชตเชพเชจเซ‹ เชตเชงเซ เชธเซเชฎเชพเชฐเซเชŸ เชชเซเชฐเชฆเชพเชคเชพ เชนเชถเซ‡ เชœเซ‡ เชธเชฎเชพเชจ เช•เชพเชฐเซเชฏ เช•เชฐเชถเซ‡, เชชเชฐเช‚เชคเซ เชฅเซ‹เชกเซ€ เชธเชธเซเชคเซ€ เชนเชถเซ‡. เช…เชจเซ‡ เชœเซ‹ เชชเชฐเชฟเชฃเชพเชฎ เชธเชฎเชพเชจ เช›เซ‡, เชคเซ‹ เชถเชพ เชฎเชพเชŸเซ‡ เชตเชงเซ เชšเซ‚เช•เชตเชฃเซ€ เช•เชฐเชตเซ€. เชœเซ‡ เชซเชฐเซ€เชฅเซ€ เชซเซ€เชกเชฐ เช—เชพเชฏเชฌ เชฅเชตเชพ เชคเชฐเชซ เชฆเซ‹เชฐเซ€ เชœเชถเซ‡.
2. เชคเซ‡ เช•เช‚เชŸเชพเชณเชพเชœเชจเช• เช›เซ‡. เช•เซ‹เชˆเชชเชฃ เชจเชพเชจเซ€ เช…เชฐเซเชฅเชชเซ‚เชฐเซเชฃ เชชเซเชฐเชตเซƒเชคเซเชคเชฟ เช•เซ‡เชŸเชฒเซ€ เช•เช‚เชŸเชพเชณเชพเชœเชจเช• เช›เซ‡.
3. เชชเชพเช›เชฒเชพ เชธเช‚เชธเซเช•เชฐเชฃเชจเซ€ เชœเซ‡เชฎ - เช•เซ‹เชˆ เชตเชฟเช•เชพเชธ เชจเชฅเซ€. เชชเชฐเช‚เชคเซ เชเชจเซเชœเชฟเชจเชฟเชฏเชฐ เชฎเชพเชŸเซ‡, เชฎเชพเช‡เชจเชธ เช เช›เซ‡ เช•เซ‡, เชชเซเชฐเชฅเชฎ เชตเชฟเช•เชฒเซเชชเชฅเซ€ เชตเชฟเชชเชฐเซ€เชค, เช…เชนเซ€เช‚ เชคเชฎเชพเชฐเซ‡ เชธเชคเชค IDB เชœเชจเชฐเซ‡เชŸ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เช…เชจเซ‡ เชคเซ‡ เชธเชฎเชฏ เชฒเซ‡ เช›เซ‡. เชœเซ‡ เชคเชฎเชพเชฐเชพ เชชเซเชฐเชฟเชฏเชœเชจเชจเชพ เชซเชพเชฏเชฆเชพ เชฎเชพเชŸเซ‡ เช–เชฐเซเชšเซ€ เชถเช•เชพเชฏ เช›เซ‡. เช•เชพเชฐเชฃ เช•เซ‡ เชคเชฎเซ‡ เชคเชฎเชพเชฐเซ€ เชธเช‚เชญเชพเชณ เชฐเชพเช–เซ€ เชถเช•เชคเชพ เชจเชฅเซ€, เชฆเชฐเซ‡เช• เชตเซเชฏเช•เซเชคเชฟ เชคเชฎเชพเชฐเซ€ เช•เชพเชณเชœเซ€ เชฒเซ‡ เช›เซ‡.

เชตเชฟเช•เชฒเซเชช 3-เชธเชพเชฏเช•เชฒเชจเซ€ เชถเซ‹เชง เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€, เชคเชฎเชพเชฐเซ‡ เชคเซ‡เชจเซ‡ เช–เชฐเซ€เชฆเซ€เชจเซ‡ เชšเชฒเชพเชตเชตเซ€ เชชเชกเชถเซ‡.

เช…เชจเซเชฏ เช•เช‚เชชเชจเซ€เช“เชจเชพ เชเชจเซเชœเชฟเชจเชฟเชฏเชฐเซ‹ เชœเชพเชฃเซ€ เชœเซ‹เชˆเชจเซ‡ เชฌเชฟเชฏเชฐ เชธเชพเชฅเซ‡ เชชเชฟเชเชพ เช–เชพเชฏ เช›เซ‡ (เช“เชน, 90เชจเชพ เชฆเชพเชฏเช•เชพเชฎเชพเช‚ เชธเซ‡เชจเซเชŸ เชชเซ€เชŸเชฐเซเชธเชฌเชฐเซเช—เชจเซ‹ เชญเชตเซเชฏ เชธเชฎเชฏ). เชšเชพเชฒเซ‹ เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช เชœเซ‡ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชกเซ€เชฌเช— เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เช•เชนเซ€เช เชคเซ‹, เชคเซ‡เช“ เชฒเชพเชญ เชฒเชพเชตเซ‡ เช›เซ‡ (เชธเชพเชฐเซ€ เชฐเซ€เชคเซ‡, เช“เช›เชพเชฎเชพเช‚ เช“เช›เชพ เชคเซ‡เชฎเชจเชพ เชธเชฐเซเชœเช•เซ‹เชจเซ‡).
เชเช• เชœเชพเชคเชจเซ€ เชธเซ‚เช‚เช เชตเชพเชณเซ€ เช•เซ‡เช• เช…เชจเซ‡ เชกเซ‹เชจเชŸเซเชธ, เช‰เชเชฐเชกเชพ เช…เชจเซ‡ เชฎเซเชถเซเช•เซ‡เชฒเซ€เช“เชเช• เชœเชพเชคเชจเซ€ เชธเซ‚เช‚เช เชตเชพเชณเซ€ เช•เซ‡เช• เช…เชจเซ‡ เชกเซ‹เชจเชŸเซเชธ:
1. เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชถเซ‹เชงเชพเชฏเซ‡เชฒ เช›เซ‡ เชคเซ‡เชจเซ€ เชถเซ‹เชง เช•เชฐเชตเชพเชฎเชพเช‚ เชธเชฎเชฏ เชฌเช—เชพเชกเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€. เชฒเซ‹ เช…เชจเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹.
2. เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎเซเชธ เชฎเซ‚เชฐเซเช– เชฒเซ‹เช•เซ‹ เชฆเซเชตเชพเชฐเชพ เชฒเช–เชตเชพเชฎเชพเช‚ เช†เชตเชคเซ€ เชจเชฅเซ€, เช…เชจเซ‡ เช…เชฒเชฌเชคเซเชค เชคเซ‡ เช‰เชชเชฏเซ‹เช—เซ€ เช›เซ‡.
3. เชตเชฐเซเช•เชฟเช‚เช— เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎเซเชธ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เช‰เชชเชฏเซ‹เช—เซ€ เชซเชฟเชฒเซเชŸเชฐ เช•เชฐเซ‡เชฒเซ€ เชฎเชพเชนเชฟเชคเซ€ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡.
เช‰เชเชฐเชกเชพ เช…เชจเซ‡ เชฌเชฎเซเชชเซเชธ:
1. เช† เช•เซ‡เชธเชฎเชพเช‚ เชเชจเซเชœเชฟเชจเชฟเชฏเชฐ เชเชจเซเชœเชฟเชจเชฟเชฏเชฐ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชฎเชพเชคเซเชฐ เช•เซ‹เชˆ เชฌเซ€เชœเชพเชจเชพ เช‰เชคเซเชชเชพเชฆเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช—เช•เชฐเซเชคเชพ เช›เซ‡. เช…เชฅเชตเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ.
2. เช—เซเชฐเชพเชนเช•เชจเซ‡ เช•เช‚เชˆเช• เช–เชฐเซ€เชฆเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชค เชตเชฟเชถเซ‡ เช–เชพเชคเชฐเซ€ เชนเซ‹เชตเซ€ เชœเซ‹เชˆเช เชœเซ‡ เชคเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชธเชฎเชœเชตเชพ เชฎเชพเช‚เช—เชคเซ‹ เชจเชฅเซ€, เช…เชจเซ‡ เชคเซ‡เชฃเซ‡ เชจ เช•เชฐเชตเซ‹ เชœเซ‹เชˆเช, เช…เชจเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชตเชฐเซเชท เชฎเชพเชŸเซ‡เชจเซเช‚ เชฌเชœเซ‡เชŸ เชฎเช‚เชœเซ‚เชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชฎเชพเช‚ เช•เซ‹เชˆ เชซเซ‡เชฐเชซเชพเชฐ เชฅเชถเซ‡ เชจเชนเซ€เช‚. เชชเช›เซ€ เชคเชฎเชพเชฐเซ‡ เชเช• เช…เชฒเช— เชธเช‚เชธเชพเชงเชจ เชซเชพเชณเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เชคเซ‡เชจเซ‡ เชšเซ‹เช•เซเช•เชธ เชธเชฟเชธเซเชŸเชฎ เชฎเชพเชŸเซ‡ เช—เซ‹เช เชตเซ‹. เชคเซ‡. เชชเซเชฐเชฅเชฎ เชคเชฎเชพเชฐเซ‡ เชšเซ‚เช•เชตเชฃเซ€ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เชšเซ‚เช•เชตเชฃเซ€ เช•เชฐเซ‹ เช…เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชšเซ‚เช•เชตเชฃเซ€ เช•เชฐเซ‹. เช…เชจเซ‡ เช—เซเชฐเชพเชนเช• เช•เช‚เชœเซ‚เชธ เช›เซ‡. เช† เชœเซ€เชตเชจเชจเซ‹ เช† เชงเซ‹เชฐเชฃ เช›เซ‡.

เชถเซเช‚ เช•เชฐเชตเซเช‚, เชšเซ‡เชฐเซเชจเซ€เชถเซ‡เชตเชธเซเช•เซ€? เชคเชฎเชพเชฐเซ‹ เชชเซเชฐเชถเซเชจ เช–เซ‚เชฌ เชœ เชธเซเชธเช‚เช—เชค เช›เซ‡. (เชธเชพเชฅเซ‡)

เช† เชšเซ‹เช•เซเช•เชธ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เช…เชจเซ‡ เชตเชฐเซเชคเชฎเชพเชจ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเชฎเชพเช‚, เชคเชฎเซ‡ เชฅเซ‹เชกเซ€ เช…เชฒเช— เชฐเซ€เชคเซ‡ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ - เชšเชพเชฒเซ‹ เช†เชชเชฃเซ€ เชชเซ‹เชคเชพเชจเซ€ เชฆเซ‡เช–เชฐเซ‡เช– เชธเชฟเชธเซเชŸเชฎ เชฌเชจเชพเชตเซ€เช.
PostgreSQL เช•เซเชตเซ‡เชฐเซ€เชเชจเซเช‚ เชชเซเชฐเชฆเชฐเซเชถเชจ เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช—. เชญเชพเช— 1 - เชฐเชฟเชชเซ‹เชฐเซเชŸเชฟเช‚เช—
เช เซ€เช• เช›เซ‡, เชธเชฟเชธเซเชŸเชฎ เชจเชฅเซ€, เช…เชฒเชฌเชคเซเชค, เชถเชฌเซเชฆเชจเชพ เชธเช‚เชชเซ‚เชฐเซเชฃ เช…เชฐเซเชฅเชฎเชพเช‚, เช† เช–เซ‚เชฌ เชฎเซ‹เชŸเซ‡เชฅเซ€ เช…เชจเซ‡ เช˜เชฎเช‚เชกเซ€ เช›เซ‡, เชชเชฐเช‚เชคเซ เช“เช›เชพเชฎเชพเช‚ เช“เช›เซเช‚ เช•เซ‹เชˆเช• เชฐเซ€เชคเซ‡ เชคเชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เชธเชฐเชณ เชฌเชจเชพเชตเซ‹ เช…เชจเซ‡ เชชเซเชฐเชฆเชฐเซเชถเชจเชจเซ€ เช˜เชŸเชจเชพเช“เชจเซ‡ เช‰เช•เซ‡เชฒเชตเชพ เชฎเชพเชŸเซ‡ เชตเชงเซ เชฎเชพเชนเชฟเชคเซ€ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ‹. เชคเชฎเชพเชฐเซ€ เชœเชพเชคเชจเซ‡ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเชฎเชพเช‚ เชจ เชถเซ‹เชงเชตเชพ เชฎเชพเชŸเซ‡ - "เชคเซเชฏเชพเช‚ เชœเชพเช“, เชฎเชจเซ‡ เช–เชฌเชฐ เชจเชฅเซ€ เช•เซ‡ เช•เซเชฏเชพเช‚, เชคเซ‡ เชถเซ‹เชงเซ‹, เชฎเชจเซ‡ เช–เชฌเชฐ เชจเชฅเซ€ เช•เซ‡ เชถเซเช‚."

เช† เชตเชฟเช•เชฒเซเชชเชจเชพ เชซเชพเชฏเชฆเชพ เช…เชจเซ‡ เช—เซ‡เชฐเชซเชพเชฏเชฆเชพ เชถเซเช‚ เช›เซ‡:

เช—เซเชฃ:
1. เชคเซ‡ เชฐเชธเชชเซเชฐเชฆ เช›เซ‡. เช เซ€เช• เช›เซ‡, เชธเชคเชค "เชธเช‚เช•เซ‹เชšเซ‹ เชกเซ‡เชŸเชพเชซเชพเช‡เชฒ, เชŸเซ‡เชฌเชฒเชธเซเชชเซ‡เชธ เชฌเชฆเชฒเซ‹, เชตเช—เซ‡เชฐเซ‡" เช•เชฐเชคเชพเช‚ เช“เช›เชพเชฎเชพเช‚ เช“เช›เซเช‚ เชตเชงเซ เชฐเชธเชชเซเชฐเชฆ.
2. เช† เชจเชตเซ€ เช•เซเชถเชณเชคเชพ เช…เชจเซ‡ เชจเชตเซ‹ เชตเชฟเช•เชพเชธ เช›เซ‡. เชœเซ‡ เชญเชตเชฟเชทเซเชฏเชฎเชพเช‚, เชตเชนเซ‡เชฒเชพ เช…เชฅเชตเชพ เชชเช›เซ€เชจเชพ เชธเชฎเชฏเชฎเชพเช‚, เชธเชพเชฐเซ€ เชฐเซ€เชคเซ‡ เชฒเชพเชฏเช• เชเช• เชœเชพเชคเชจเซ€ เชธเซ‚เช‚เช เชตเชพเชณเซ€ เช•เซ‡เช• เช…เชจเซ‡ เชกเซ‹เชจเชŸเซเชธ เช†เชชเชถเซ‡.
เชตเชฟเชชเช•เซเชท:
1. เช•เชพเชฎ เช•เชฐเชตเซเช‚ เชชเชกเชถเซ‡. เช˜เชฃเซเช‚ เช•เชพเชฎ เช•เชฐเซ‹.
2. เชคเชฎเชพเชฐเซ‡ เชจเชฟเชฏเชฎเชฟเชคเชชเชฃเซ‡ เชคเชฎเชพเชฎ เชชเซเชฐเชตเซƒเชคเซเชคเชฟเชจเซ‹ เช…เชฐเซเชฅ เช…เชจเซ‡ เชฆเซเชฐเชทเซเชŸเชฟเช•เซ‹เชฃ เชธเชฎเชœเชพเชตเชตเซเช‚ เชชเชกเชถเซ‡.
3. เช•เช‚เชˆเช• เชฌเชฒเชฟเชฆเชพเชจ เช†เชชเชตเซเช‚ เชชเชกเชถเซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เชเชจเซเชœเชฟเชจเชฟเชฏเชฐ เชฎเชพเชŸเซ‡ เช‰เชชเชฒเชฌเซเชง เชเช•เชฎเชพเชคเซเชฐ เชธเช‚เชธเชพเชงเชจ - เชธเชฎเชฏ - เชฌเซเชฐเชนเซเชฎเชพเช‚เชก เชฆเซเชตเชพเชฐเชพ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เช›เซ‡.
4. เชธเซŒเชฅเซ€ เช–เชฐเชพเชฌ เช…เชจเซ‡ เชธเซŒเชฅเซ€ เช…เชชเซเชฐเชฟเชฏ - เชชเชฐเชฟเชฃเชพเชฎเซ‡, "เช‰เช‚เชฆเชฐ เชจเชนเซ€เช‚, เชฆเซ‡เชกเช•เชพ เชจเชนเซ€เช‚, เชชเชฐเช‚เชคเซ เช…เชœเชพเชฃเซเชฏเซเช‚ เชจเชพเชจเซเช‚ เชชเซเชฐเชพเชฃเซ€" เชœเซ‡เชตเซ‹ เช•เชšเชฐเซ‹ เชฌเชนเชพเชฐ เช†เชตเซ€ เชถเช•เซ‡ เช›เซ‡.

เชœเซ‡ เช•เซ‹เชˆ เชตเชธเซเชคเซเชจเซเช‚ เชœเซ‹เช–เชฎ เชฒเซ‡เชคเซเช‚ เชจเชฅเซ€ เชคเซ‡ เชถเซ‡เชฎเซเชชเซ‡เชˆเชจ เชชเซ€เชคเซ‹ เชจเชฅเซ€.
เชคเซ‡เชฅเซ€, เชฎเชœเชพ เชถเชฐเซ‚ เชฅเชพเชฏ เช›เซ‡.

เชธเชพเชฎเชพเชจเซเชฏ เชตเชฟเชšเชพเชฐ - เชฏเซ‹เชœเชจเชพเช•เซ€เชฏ

PostgreSQL เช•เซเชตเซ‡เชฐเซ€เชเชจเซเช‚ เชชเซเชฐเชฆเชฐเซเชถเชจ เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช—. เชญเชพเช— 1 - เชฐเชฟเชชเซ‹เชฐเซเชŸเชฟเช‚เช—
(เชฒเซ‡เช–เชฎเชพเช‚เชฅเซ€ เชฒเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒ เชšเชฟเชคเซเชฐ ยซPostgreSQL เชชเซเชฐเชฆเชฐเซเชถเชจเชจเซ‡ เชธเซเชงเชพเชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เชชเชฆเซเชงเชคเชฟเช“เชฎเชพเช‚เชจเซ€ เชเช• เชคเชฐเซ€เช•เซ‡ เชธเชฟเชจเซเชฅเซ‡เชธเชฟเชธยป)

เชธเชฎเชœเซ‚เชคเซ€:

  • เชฒเช•เซเชทเซเชฏ เชกเซ‡เชŸเชพเชฌเซ‡เช เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค PostgreSQL เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจ "pg_stat_statements" เชธเชพเชฅเซ‡ เชธเซเชฅเชพเชชเชฟเชค เชฅเชฏเซ‡เชฒ เช›เซ‡.
  • เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช— เชกเซ‡เชŸเชพเชฌเซ‡เชเชฎเชพเช‚, เช…เชฎเซ‡ เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชคเชฌเช•เซเช•เซ‡ pg_stat_statements เช‡เชคเชฟเชนเชพเชธ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเชตเชพ เช…เชจเซ‡ เชญเชตเชฟเชทเซเชฏเชฎเชพเช‚ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เช…เชจเซ‡ เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช—เชจเซ‡ เช—เซ‹เช เชตเชตเชพ เชฎเชพเชŸเซ‡ เชธเซ‡เชตเชพ เช•เซ‹เชทเซเชŸเช•เซ‹เชจเซ‹ เชธเชฎเซ‚เชน เชฌเชจเชพเชตเซ€เช เช›เซ€เช.
  • เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช— เชนเซ‹เชธเซเชŸ เชชเชฐ, เช…เชฎเซ‡ เชฌเซ‡เชถ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซ‹ เชธเชฎเซ‚เชน เชฌเชจเชพเชตเซ€เช เช›เซ€เช, เชœเซ‡เชฎเชพเช‚ เชŸเชฟเช•เชฟเชŸ เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เช˜เชŸเชจเชพเช“ เชชเซ‡เชฆเชพ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡.

เชธเซ‡เชตเชพ เช•เซ‹เชทเซเชŸเช•เซ‹

เชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชเช• เชฏเซ‹เชœเชจเชพเช•เซ€เชฏ เชฐเซ€เชคเซ‡ เชธเชฐเชณ ERD, เช…เช‚เชคเซ‡ เชถเซเช‚ เชฅเชฏเซเช‚:
PostgreSQL เช•เซเชตเซ‡เชฐเซ€เชเชจเซเช‚ เชชเซเชฐเชฆเชฐเซเชถเชจ เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช—. เชญเชพเช— 1 - เชฐเชฟเชชเซ‹เชฐเซเชŸเชฟเช‚เช—
เช•เซ‹เชทเซเชŸเช•เซ‹เชจเซเช‚ เชธเช‚เช•เซเชทเชฟเชชเซเชค เชตเชฐเซเชฃเชจเชเชจเซเชกเชชเซ‹เช‡เชจเซเชŸ - เชนเซ‹เชธเซเชŸ, เช‰เชฆเชพเชนเชฐเชฃ เชฎเชพเชŸเซ‡ เชœเซ‹เชกเชพเชฃ เชฌเชฟเช‚เชฆเซ
เชกเซ‡เชŸเชพเชฌเซ‡เช - เชกเซ‡เชŸเชพเชฌเซ‡เช เชตเชฟเช•เชฒเซเชชเซ‹
pg_stat_history - เชฒเช•เซเชทเซเชฏ เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเชพ pg_stat_statements เชตเซเชฏเซเชจเชพ เช…เชธเซเชฅเชพเชฏเซ€ เชธเซเชจเซ‡เชชเชถเซ‹เชŸ เชธเซเชŸเซ‹เชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซเช‚ เชเชคเชฟเชนเชพเชธเชฟเช• เช•เซ‹เชทเซเชŸเช•
metric_glossary - เชชเซเชฐเชฆเชฐเซเชถเชจ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธเชจเซ‹ เชถเชฌเซเชฆเช•เซ‹เชถ
metric_config - เชตเซเชฏเช•เซเชคเชฟเช—เชค เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธเชจเซเช‚ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ
เชฎเซ‡เชŸเซเชฐเชฟเช• - เชตเชฟเชจเช‚เชคเซ€ เชฎเชพเชŸเซ‡ เชšเซ‹เช•เซเช•เชธ เชฎเซ‡เชŸเซเชฐเชฟเช• เช•เซ‡ เชœเซ‡เชจเซเช‚ เชจเชฟเชฐเซ€เช•เซเชทเชฃ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡
เชฎเซ‡เชŸเซเชฐเชฟเช•_เชšเซ‡เชคเชตเชฃเซ€_เช‡เชคเชฟเชนเชพเชธ - เชชเซเชฐเชฆเชฐเซเชถเชจ เชšเซ‡เชคเชตเชฃเซ€เช“เชจเซ‹ เช‡เชคเชฟเชนเชพเชธ
log_query - AWS เชฎเชพเช‚เชฅเซ€ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ‡เชฒ PostgreSQL เชฒเซ‹เช— เชซเชพเช‡เชฒเชฎเชพเช‚เชฅเซ€ เชตเชฟเชถเซเชฒเซ‡เชทเชฟเชค เชฐเซ‡เช•เซ‹เชฐเซเชกเซเชธ เชธเซเชŸเซ‹เชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเซ‡เชตเชพ เช•เซ‹เชทเซเชŸเช•
เช†เชงเชพเชฐเชฐเซ‡เช–เชพ - เช†เชงเชพเชฐ เชคเชฐเซ€เช•เซ‡ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเชพ เชธเชฎเชฏเช—เชพเชณเชพเชจเชพ เชชเชฐเชฟเชฎเชพเชฃเซ‹
เชšเซ‡เช•เชชเซ‹เช‡เชจเซเชŸ - เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเซ€ เชธเซเชฅเชฟเชคเชฟ เชคเชชเชพเชธเชตเชพ เชฎเชพเชŸเซ‡ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธเชจเซเช‚ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ
เชšเซ‡เช•เชชเซ‹เช‡เชจเซเชŸ_เช…เชฒเชฐเซเชŸ_เช‡เชคเชฟเชนเชพเชธ - เชกเซ‡เชŸเชพเชฌเซ‡เช เชธเซเชŸเซ‡เชŸเชธ เชšเซ‡เช• เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธเชจเซ‹ เชšเซ‡เชคเชตเชฃเซ€ เช‡เชคเชฟเชนเชพเชธ
pg_stat_db_queries - เชธเช•เซเชฐเชฟเชฏ เชตเชฟเชจเช‚เชคเซ€เช“เชจเซเช‚ เชธเซ‡เชตเชพ เช•เซ‹เชทเซเชŸเช•
เชชเซเชฐเชตเซƒเชคเซเชคเชฟ_เชฒเซ‹เช— โ€” เชชเซเชฐเชตเซƒเชคเซเชคเชฟ เชฒเซ‹เช— เชธเชฐเซเชตเชฟเชธ เชŸเซ‡เชฌเชฒ
เชŸเซเชฐเซ‡เชช_เช“เช‡เชก - เชŸเซเชฐเซ‡เชช เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชธเซ‡เชตเชพ เชŸเซ‡เชฌเชฒ

เชธเซเชŸเซ‡เชœ 1 - เช•เชพเชฎเช—เซ€เชฐเซ€เชจเชพ เช†เช‚เช•เชกเชพ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ‹ เช…เชจเซ‡ เช…เชนเซ‡เชตเชพเชฒเซ‹ เชฎเซ‡เชณเชตเซ‹

เช†เช‚เช•เชกเชพเช•เซ€เชฏ เชฎเชพเชนเชฟเชคเซ€ เชธเช‚เช—เซเชฐเชนเชตเชพ เชฎเชพเชŸเซ‡ เช•เซ‹เชทเซเชŸเช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฅเชพเชฏ เช›เซ‡. pg_stat_history
pg_stat_history เช•เซ‹เชทเซเชŸเช• เชฎเชพเชณเช–เซเช‚

                                          เช•เซ‹เชทเซเชŸเช• "public.pg_stat_history" เช•เซ‰เชฒเชฎ | เชชเซเชฐเช•เชพเชฐ | เชธเช‚เชถเซ‹เชงเช•เซ‹----------------------------------------------- -------------------------------- เช†เชˆเชกเซ€ | เชชเซ‚เชฐเซเชฃเชพเช‚เช• | null default nextval('pg_stat_history_id_seq'::regclass) snapshot_timestamp | เชŸเชพเช‡เชฎเชเซ‹เชจ เชตเชฟเชจเชพ เชŸเชพเช‡เชฎเชธเซเชŸเซ‡เชฎเซเชช | database_id | เชชเซ‚เชฐเซเชฃเชพเช‚เช• | dbid | oid | userid | oid | queryid | bigint | เชชเซเชฐเชถเซเชจ | เชŸเซ‡เช•เซเชธเซเชŸ | เช•เซ‰เชฒเซเชธ | bigint | เช•เซเชฒ_เชธเชฎเชฏ | เชกเชฌเชฒ เชšเซ‹เช•เชธเชพเช‡ | เชฎเชฟเชจเชฟเชŸ_เชธเชฎเชฏ | เชกเชฌเชฒ เชšเซ‹เช•เชธเชพเช‡ | เชฎเชนเชคเซเชคเชฎ_เชธเชฎเชฏ | เชกเชฌเชฒ เชšเซ‹เช•เชธเชพเช‡ | เชธเชฐเซ‡เชฐเชพเชถ_เชธเชฎเชฏ | เชกเชฌเชฒ เชšเซ‹เช•เชธเชพเช‡ | 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_read_time | เชกเชฌเชฒ เชšเซ‹เช•เชธเชพเช‡ | blk_write_time | เชกเชฌเชฒ เชšเซ‹เช•เชธเชพเช‡ | เชฌเซ‡เชเชฒเชพเช‡เชจ_เช†เช‡เชกเซ€ | เชชเซ‚เชฐเซเชฃเชพเช‚เช• | เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพเช“: "pg_stat_history_pkey" PRIMARY KEY, btree (id) "database_idx" btree (database_id) "queryid_idx" btree (queryid) "snapshot_timestamp_idx" btree (snapshot_timestamp) "Foreign_keys: IG_fdaaseke" (Foreign_key) id) เชธเช‚เชฆเชฐเซเชญ เชกเซ‡เชŸเชพเชฌเซ‡เช(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')

Total_time เชฆเซเชตเชพเชฐเชพ TOP10 SQL

เชคเชชเชพเชธ

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 SQL | #| queryid| เช•เซ‰เชฒเซเชธ| เช•เซ‰เชฒเซเชธ %| เช•เซเชฒ_เชธเชฎเชฏ (ms) | 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

เช•เซเชฒ I/O เชธเชฎเชฏ เชฆเซเชตเชพเชฐเชพ 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
-------------------------------------------------- -------------------------------------------------- | เช•เซเชฒ I/O เชธเชฎเชฏ เชฆเซเชตเชพเชฐเชพ เชŸเซ‹เชช10 SQL | #| 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

-------------------------------------------------- -------------------------------------------------- | เชฎเชนเชคเซเชคเชฎ เชเช•เซเชเซ‡เช•เซเชฏเซเชถเชจ เชธเชฎเชฏ เชฆเซเชตเชพเชฐเชพ เชŸเซ‹เชšเชจเชพ 10 SQL | #| เชธเซเชจเซ‡เชชเชถเซ‹เชŸ| snapshotID| queryid| เชฎเชนเชคเซเชคเชฎ_เชธเชฎเชฏ (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.)

SHARED เชฌเชซเชฐ เชฆเซเชตเชพเชฐเชพ 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 SQL เชตเชพเช‚เชšเซ‹/เชฒเช–เซ‹ | #| เชธเซเชจเซ‡เชชเชถเซ‹เชŸ| 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

เชชเซเชฐเชคเชฟ เชธเซ‡เช•เชจเซเชก เช•เซเชตเซ‡เชฐเซ€ เชฆเซเชตเชพเชฐเชพ เชŸเซ‹เชช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
|------------------------------------------------ ------------------------------------------- | QueryPerSeconds เชจเช‚เชฌเชฐเซ‹ เชฆเซเชตเชพเชฐเชพ เช•เซเชฐเชฎเชพเช‚เช•เชฟเชค เชŸเซ‹เชช 10 เชธเซเชจเซ‡เชชเชถเซ‹เชŸ --------------------------------------------------------- ---------------------------------------------------------------------------- ----------------------------------------------------------- | #| เชธเซเชจเซ‡เชชเชถเซ‹เชŸ| snapshotID| เช•เซ‰เชฒเซเชธ| เช•เซเชฒ เชกเซ€เชฌเซ€เชŸเชพเช‡เชฎ| QPS | I/O เชธเชฎเชฏ | I/O เชธเชฎเชฏ % +------+-------------------+------------+------ ------------------------------------------- --------------------------- +------------ | 1| 04.04.2019/20/04 4161:5758631| 00| 06| 30.513:390513.926:1573.396( 00 ms.)| 00| 01.470:1470.110:376(2 ms.)| .04.04.2019 | 17| 00/4149/3529197 00:11| 48.830| 708830.618| 980.332:00:12(47.834 ms.)| 767834.052| 108.324:3:04.04.2019( 16 ms.)| 00 | 4143| 3525360/00/10 13.492:613492.351| 979.267| 00| 08:41.396:521396.555( 84.988 ms.)| 4| 04.04.2019:21:03(4163 ms.)| 2781536 | 00| 03/06.470/186470.979 785.745:00 | 00| 00.249| 249.865:134:5(04.04.2019 ms.)| 19| 03:4159:2890362(00 ms.)| .03 | 16.784| 196784.755/776.979/00 00:01.441 | 1441.386| 732| 6:04.04.2019:14(00 ms.)| 4137| 2397326:00:04(43.033 ms.)| .283033.854 | 665.924| 00/00/00.024 24.505:009 | 7| 04.04.2019| 15:00:4139(2394416 ms.)| 00| 04:51.435:291435.010(665.116 ms.)| .00 | 00| 12.025/12025.895/4.126 8:04.04.2019| 13| 00| 4135:2373043:00( 04 ms.)| 26.791| 266791.988:659.179:00(00 ms.)| 00.064 | 64.261| 024/9/05.04.2019 01:03 | 4167| 4387191| 00:06:51.380( 411380.293 ms.)| 609.332| 00:05:18.847(318847.407 ms.)| .77.507 | 10| 04.04.2019/18/01 4157:1145596 | 00| 01| 19.217:79217.372:313.004(00 ms.)| 00| 01.319:1319.676:1.666( XNUMX ms.)| XNUMX | XNUMX| XNUMX/XNUMX/XNUMX XNUMX:XNUMX| XNUMX| XNUMX| XNUMX:XNUMX:XNUMX( XNUMX ms.)| XNUMX| XNUMX:XNUMX:XNUMX( XNUMX ms.)| XNUMX

QueryPerSeconds เช…เชจเซ‡ I/O เชธเชฎเชฏ เชธเชพเชฅเซ‡ เช•เชฒเชพเช•เชฆเซ€เช  เชเช•เซเชเซ‡เช•เซเชฏเซเชถเชจ เช‡เชคเชฟเชนเชพเชธ

เชคเชชเชพเชธ

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

เชฌเชงเชพ SQL เชชเชธเช‚เชฆ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡ เชŸเซ‡เช•เซเชธเซเชŸ

เชคเชชเชพเชธ

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

เชชเชฐเชฟเชฃเชพเชฎ

เชœเซ‡เชฎ เชคเชฎเซ‡ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹, เชเช•เชฆเชฎ เชธเชฐเชณ เชฎเชพเชงเซเชฏเชฎเชฅเซ€, เชคเชฎเซ‡ เชตเชฐเซเช•เชฒเซ‹เชก เช…เชจเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเซ€ เชธเซเชฅเชฟเชคเชฟ เชตเชฟเชถเซ‡ เช˜เชฃเซ€ เช‰เชชเชฏเซ‹เช—เซ€ เชฎเชพเชนเชฟเชคเซ€ เชฎเซ‡เชณเชตเซ€ เชถเช•เซ‹ เช›เซ‹.

เชจเซ‰เซ…เชง:เชœเซ‹ เชคเชฎเซ‡ เช•เซเชตเซ‡เชฐเซ€เช“เชฎเชพเช‚ เช•เซเชตเซ‡เชฐเซ€เช†เชˆเชกเซ€เชจเซ‡ เช เซ€เช• เช•เชฐเซ‹ เช›เซ‹, เชคเซ‹ เช…เชฎเชจเซ‡ เชเช• เช…เชฒเช— เชตเชฟเชจเช‚เชคเซ€ เชฎเชพเชŸเซ‡เชจเซ‹ เช‡เชคเชฟเชนเชพเชธ เชฎเชณเชถเซ‡ (เชœเช—เซเชฏเชพ เชฌเชšเชพเชตเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฒเช— เชตเชฟเชจเช‚เชคเซ€ เชฎเชพเชŸเซ‡เชจเชพ เช…เชนเซ‡เชตเชพเชฒเซ‹ เช…เชตเช—เชฃเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡).

เชคเซ‡เชฅเซ€, เช•เซเชตเซ‡เชฐเซ€ เช•เชพเชฎเช—เซ€เชฐเซ€ เชชเชฐ เช†เช‚เช•เชกเชพเช•เซ€เชฏ เชฎเชพเชนเชฟเชคเซ€ เช‰เชชเชฒเชฌเซเชง เช›เซ‡ เช…เชจเซ‡ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.
เชชเซเชฐเชฅเชฎ เชคเชฌเช•เซเช•เซ‹ "เช†เช‚เช•เชกเชพเช•เซ€เชฏ เชฎเชพเชนเชฟเชคเซ€เชจเซ‹ เชธเช‚เช—เซเชฐเชน" เชชเซ‚เชฐเซเชฃ เชฅเชฏเซ‹ เช›เซ‡.

เชคเชฎเซ‡ เชฌเซ€เชœเชพ เชคเชฌเช•เซเช•เชพเชฎเชพเช‚ เช†เช—เชณ เชตเชงเซ€ เชถเช•เซ‹ เช›เซ‹ - "เชชเซเชฐเชฆเชฐเซเชถเชจ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธเชจเซ‡ เช—เซ‹เช เชตเชตเซเช‚".
PostgreSQL เช•เซเชตเซ‡เชฐเซ€เชเชจเซเช‚ เชชเซเชฐเชฆเชฐเซเชถเชจ เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช—. เชญเชพเช— 1 - เชฐเชฟเชชเซ‹เชฐเซเชŸเชฟเช‚เช—

เชชเชฐเช‚เชคเซ เชคเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เช…เชฒเช— เชตเชพเชฐเซเชคเชพ เช›เซ‡.

เชšเชพเชฒเซ เชฐเชนเซ€ เชถเช•เชพเชฏโ€ฆ

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹