PostgreSQL เด…เดจเตเดตเต‡เดทเดฃ เดชเตเดฐเด•เดŸเดจเด‚ เดจเดฟเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต. เดญเดพเด—เด‚ 1 - เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเดฟเด‚เด—เต

เดŽเดžเตเดšเดฟเดจเต€เดฏเตผ - เดฒเดพเดฑเตเดฑเดฟเดจเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดคเดคเต - เดชเตเดฐเดšเต‹เดฆเดจเด‚.
เด’เดฐเต เดŽเดžเตเดšเดฟเดจเต€เดฏเตผเด•เตเด•เต เดŽเดจเตเดคเตเด‚ เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚. (เดธเดฟ) เด†เตผ. เดกเต€เดธเตฝ.
เดŽเดชเตเดชเดฟเด—เตเดฐเดพเดซเตเด•เตพ.
PostgreSQL เด…เดจเตเดตเต‡เดทเดฃ เดชเตเดฐเด•เดŸเดจเด‚ เดจเดฟเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต. เดญเดพเด—เด‚ 1 - เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเดฟเด‚เด—เต
เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด’เดฐเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เด…เดกเตเดฎเดฟเดจเดฟเดธเตเดŸเตเดฐเต‡เดฑเตเดฑเตผ เดคเดจเตเดฑเต† เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเด‚เด—เต เดญเต‚เดคเด•เดพเดฒเด‚ เด“เตผเดฎเตเดฎเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเต เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเดพเดฃเต†เดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เด’เดฐเต เด•เดฅ.

เดฎเตเตปเดตเดพเดšเด•เด‚

เดŽเดฒเตเดฒเดพ เดชเต‡เดฐเตเด•เดณเตเด‚ เดฎเดพเดฑเตเดฑเดฟ. เดฏเดพเดฆเตƒเดถเตเดšเดฟเด•เดคเด•เตพ เด•เตเดฐเดฎเดฐเดนเดฟเดคเดฎเดพเดฃเต. เดฎเต†เดฑเตเดฑเต€เดฐเดฟเดฏเตฝ เดฐเดšเดฏเดฟเดคเดพเดตเดฟเดจเตเดฑเต† เดตเตเดฏเด•เตเดคเดฟเดชเดฐเดฎเดพเดฏ เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดฎเดพเดคเตเดฐเด‚ เดชเตเดฐเดคเดฟเดจเดฟเดงเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เดตเดพเดฑเดจเตเดฑเดฟเด•เดณเตเดŸเต† เดจเดฟเดฐเดพเด•เดฐเดฃเด‚: เด†เดธเต‚เดคเตเดฐเดฃเด‚ เดšเต†เดฏเตเดค เดฒเต‡เด–เดจเด™เตเด™เดณเตเดŸเต† เดชเดฐเดฎเตเดชเดฐเดฏเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดš เดชเดŸเตเดŸเดฟเด•เด•เดณเตเดŸเต†เดฏเตเด‚ เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เดณเตเดŸเต†เดฏเตเด‚ เดตเดฟเดถเดฆเดตเตเด‚ เด•เตƒเดคเตเดฏเดตเตเดฎเดพเดฏ เดตเดฟเดตเดฐเดฃเด‚ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เดฟเดฒเตเดฒ. เดธเดพเดฎเด—เตเดฐเดฟเด•เตพ เด‰เดŸเดจเดŸเดฟ "เด†เดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเตเดชเต‹เดฒเต†" เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ.
เด’เดจเตเดจเดพเดฎเดคเดพเดฏเดฟ, เดฎเต†เดฑเตเดฑเต€เดฐเดฟเดฏเดฒเดฟเดจเตเดฑเต† เดตเดฒเดฟเดฏ เด…เดณเดตเต เด•เดพเดฐเดฃเด‚,
เดฐเดฃเตเดŸเดพเดฎเดคเดพเดฏเดฟ, เด’เดฐเต เดฏเดฅเดพเตผเดคเตเดฅ เด‰เดชเดญเต‹เด•เตเดคเดพเดตเดฟเดจเตเดฑเต† เด‰เตฝเดชเตเดชเดพเดฆเดจ เด…เดŸเดฟเดคเตเดคเดฑเดฏเตเดฎเดพเดฏเตเดณเตเดณ เด…เดŸเตเดคเตเดค เดฌเดจเตเดงเด‚ เด•เดพเดฐเดฃเด‚.
เด…เดคเดฟเดจเดพเตฝ, เดฒเต‡เด–เดจเด™เตเด™เดณเดฟเตฝ เดเดฑเตเดฑเดตเตเด‚ เดชเตŠเดคเตเดตเดพเดฏ เดฐเต‚เดชเดคเตเดคเดฟเตฝ เด†เดถเดฏเด™เตเด™เดณเตเด‚ เดตเดฟเดตเดฐเดฃเด™เตเด™เดณเตเด‚ เดฎเดพเดคเตเดฐเดฎเต‡ เด‰เดฃเตเดŸเดพเด•เต‚.
เด’เดฐเตเดชเด•เตเดทเต‡ เดญเดพเดตเดฟเดฏเดฟเตฝ เดธเดฟเดธเตเดฑเตเดฑเด‚ GitHub-เตฝ เดชเต‹เดธเตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเดจเตเดจ เดคเดฒเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดตเดณเตผเดจเตเดจเต‡เด•เตเด•เดพเด‚, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด…เดฒเตเดฒเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚. เดธเดฎเดฏเด‚ เด•เดพเดฃเดฟเด•เตเด•เตเด‚.

เด•เดฅเดฏเตเดŸเต† เดคเตเดŸเด•เตเด•เด‚ - "เด‡เดคเต†เดฒเตเดฒเดพเด‚ เดŽเด™เตเด™เดจเต† เด†เดฐเด‚เดญเดฟเดšเตเดšเตเดตเต†เดจเตเดจเต เดจเดฟเด™เตเด™เตพ เด“เตผเด•เตเด•เตเดจเตเดจเตเดฃเตเดŸเต‹?".
เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ เดŽเดจเตเดคเดพเดฃเต เดธเด‚เดญเดตเดฟเดšเตเดšเดคเต, เดเดฑเตเดฑเดตเตเด‚ เดชเตŠเดคเตเดตเดพเดฏเดฟ เดชเดฑเดžเตเดžเดพเตฝ - "PostgreSQL เดชเตเดฐเด•เดŸเดจเด‚ เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดฐเต€เดคเดฟเดฏเดพเดฏเดฟ เดธเดฟเดจเตเดคเดธเดฟเดธเตยป

เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเดพเดฃเต เดŽเดจเดฟเด•เตเด•เต เด‡เดคเต†เดฒเตเดฒเดพเด‚ เดตเต‡เดฃเตเดŸเดคเต?

เดถเดฐเดฟ, เด’เดจเตเดจเดพเดฎเดคเดพเดฏเดฟ, เดฎเดฑเด•เตเด•เดพเดคเดฟเดฐเดฟเด•เตเด•เดพเตป, เดตเดฟเดฐเดฎเดฟเด•เตเด•เดฒเดฟเดฒเต† เดฎเดนเดคเตเดคเดพเดฏ เดฆเดฟเดจเด™เตเด™เตพ เด“เตผเดฎเตเดฎเดฟเด•เตเด•เตเด•.
เดฐเดฃเตเดŸเดพเดฎเดคเดพเดฏเดฟ, เดŽเดดเตเดคเดฟเดฏเดคเต เดšเดฟเดŸเตเดŸเดชเตเดชเต†เดŸเตเดคเตเดคเดพเตป. เด•เดพเดฐเดฃเด‚ เดšเดฟเดฒเดชเตเดชเต‹เตพ เดžเดพเตป เด†เดถเดฏเด•เตเด•เตเดดเดชเตเดชเดคเตเดคเดฟเดฒเดพเด•เดพเดจเตเด‚ เดšเดฟเดฒ เดญเดพเด—เด™เตเด™เตพ เดฎเดฑเด•เตเด•เดพเดจเตเด‚ เดคเตเดŸเด™เตเด™เตเด‚.

เดถเดฐเดฟ, เดเดฑเตเดฑเดตเตเด‚ เดชเตเดฐเดงเดพเดจเดชเตเดชเต†เดŸเตเดŸ เด•เดพเดฐเตเดฏเด‚, เด…เดคเต เด†เตผเด•เตเด•เต†เด™เตเด•เดฟเดฒเตเด‚ เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเด•เตเด•เดฏเตเด‚ เดšเด•เตเดฐเด‚ เดชเตเดจเตผเดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เดพเดคเดฟเดฐเดฟเด•เตเด•เดพเดจเตเด‚ เด’เดฐเต เดฑเต‡เด•เตเด•เต เดถเต‡เด–เดฐเดฟเด•เตเด•เดพเดคเดฟเดฐเดฟเด•เตเด•เดพเดจเตเด‚ เด…เดตเดฐเต† เดธเดนเดพเดฏเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚. เดฎเดฑเตเดฑเตŠเดฐเต เดตเดฟเดงเดคเตเดคเดฟเตฝ เดชเดฑเดžเตเดžเดพเตฝ, เดจเดฟเด™เตเด™เดณเตเดŸเต† เด•เตผเดฎเตเดฎเด‚ เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเตเด• (เด–เดฌเตเดฐเต‹เดตเดฟเดจเตเดฑเต†เดคเดฒเตเดฒ). เด•เดพเดฐเดฃเด‚ เดˆ เดฒเต‹เด•เดคเตเดคเดฟเดฒเต† เดเดฑเตเดฑเดตเตเด‚ เดตเดฟเดฒเดชเตเดชเต†เดŸเตเดŸ เด•เดพเดฐเตเดฏเด‚ เด†เดถเดฏเด™เตเด™เดณเดพเดฃเต. เด’เดฐเต เด†เดถเดฏเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเตเด• เดŽเดจเตเดจเดคเดพเดฃเต เดชเตเดฐเดงเดพเดจ เด•เดพเดฐเตเดฏเด‚. เดŽเดจเตเดจเดพเตฝ เด’เดฐเต เด†เดถเดฏเด‚ เดฏเดพเดฅเดพเตผเดคเตเดฅเตเดฏเดฎเดพเด•เตเด•เตเดจเตเดจเดคเต เดคเดฟเด•เดšเตเดšเตเด‚ เดธเดพเด™เตเด•เต‡เดคเดฟเด•เดฎเดพเดฏ เด’เดฐเต เดšเต‹เดฆเตเดฏเดฎเดพเดฃเต.

เด…เดคเดฟเดจเดพเตฝ, เดจเดฎเตเด•เตเด•เต เด†เดฐเด‚เดญเดฟเด•เตเด•เดพเด‚, เดšเต†เดฑเตเดคเดพเดฏเดฟ ...

เดชเตเดฐเดถเตเดจเดคเตเดคเดฟเดจเตเดฑเต† เดฐเต‚เดชเต€เด•เดฐเดฃเด‚.

เดฒเดญเตเดฏเดฎเดพเดฃเต:

PostgreSQL(10.5) เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต, เดฎเดฟเด•เตเดธเดกเต เดฒเต‹เดกเต เดคเดฐเด‚ (OLTP+DSS), เดฎเต€เดกเดฟเดฏเด‚-เดฒเตˆเดฑเตเดฑเต เดฒเต‹เดกเต, AWS เด•เตเดฒเต—เดกเดฟเตฝ เดธเตเดฅเดฟเดคเดฟเดšเต†เดฏเตเดฏเตเดจเตเดจเต.
เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดฎเต‹เดฃเดฟเดฑเตเดฑเดฑเดฟเด‚เด—เต เด‡เดฒเตเดฒ; เด…เดŸเดฟเดธเตเดฅเดพเดจ เดธเต—เด•เดฐเตเดฏ เดจเดฟเดฐเต€เด•เตเดทเดฃเด‚ เด•เตเดฑเดžเตเดž เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเดฟเตฝ เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต AWS เดŸเต‚เดณเตเด•เดณเตเดŸเต† เดฐเต‚เดชเดคเตเดคเดฟเดฒเดพเดฃเต เดจเตฝเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต.

เด†เดตเดถเตเดฏเดฎเดพเดฃเต:

เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดจเตเดฑเต† เดชเตเดฐเด•เดŸเดจเดตเตเด‚ เดจเดฟเดฒเดฏเตเด‚ เดจเดฟเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเด•, เด•เดจเดคเตเดค เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เตพ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดชเตเดฐเดพเดฐเด‚เดญ เดตเดฟเดตเดฐเด™เตเด™เตพ เด•เดฃเตเดŸเต†เดคเตเดคเตเด•เดฏเตเด‚ เดจเต‡เดŸเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด•.

เดชเดฐเดฟเดนเดพเดฐ เด“เดชเตเดทเดจเตเด•เดณเตเดŸเต† เดนเตเดฐเดธเตเดตเดฎเดพเดฏ เด†เดฎเตเด–เด‚ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดตเดฟเดถเด•เดฒเดจเด‚

เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดŽเดžเตเดšเดฟเดจเต€เดฏเตผเด•เตเด•เตเดณเตเดณ เดจเต‡เดŸเตเดŸเด™เตเด™เดณเตเดŸเต†เดฏเตเด‚ เดฆเต‹เดทเด™เตเด™เดณเตเดŸเต†เดฏเตเด‚ เดคเดพเดฐเดคเดฎเตเดฏ เดตเดฟเดถเด•เดฒเดจเดคเตเดคเดฟเดจเตเดฑเต† เดตเต€เด•เตเดทเดฃเด•เต‹เดฃเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเตเดฐเดถเตเดจเด‚ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด“เดชเตเดทเดจเตเด•เตพ เดตเดฟเดถเด•เดฒเดจเด‚ เดšเต†เดฏเตเดฏเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เดพเด‚, เด•เต‚เดŸเดพเดคเต† เดธเตเดฑเตเดฑเดพเดซเดฟเด‚เด—เต เดทเต†เดกเตเดฏเต‚เตพ เด…เดจเตเดธเดฐเดฟเดšเตเดšเต เด…เดคเดฟเดจเต เด…เตผเดนเดคเดฏเตเดณเตเดณเดตเดฐเต† เด†เดจเตเด•เต‚เดฒเตเดฏเด™เตเด™เตพ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเดŸเตเดŸเต†. เดฎเดพเดจเต‡เดœเตเดฎเต†เดจเตเดฑเดฟเดจเตเดฑเต† เดจเดทเตเดŸเด™เตเด™เตพ.

เด“เดชเตเดทเตป 1 - "เด†เดตเดถเตเดฏเดคเตเดคเดฟเดจเดจเตเดธเดฐเดฟเดšเตเดšเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด•"

เดžเด™เตเด™เตพ เดŽเดฒเตเดฒเดพเด‚ เด…เดคเต‡เดชเดŸเดฟ เด‰เดชเต‡เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต. เด‰เดชเดญเต‹เด•เตเดคเดพเดตเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดจเตเดฑเต†เดฏเต‹ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเดฑเต†เดฏเต‹ เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดฒเต‹ เดชเตเดฐเด•เดŸเดจเดคเตเดคเดฟเดฒเต‹ เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดคเตƒเดชเตเดคเดฟเด•เดฐเดฎเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เด…เดตเตป เด‡-เดฎเต†เดฏเดฟเตฝ เดตเดดเดฟเดฏเต‹ เดŸเดฟเด•เตเด•เดฑเตเดฑเต เดŸเตเดฐเต‡เดฏเดฟเตฝ เด’เดฐเต เดธเด‚เดญเดตเด‚ เดธเตƒเดทเตเดŸเดฟเดšเตเดšเต‹ DBA เดŽเดžเตเดšเดฟเดจเต€เดฏเตผเดฎเดพเดฐเต† เด…เดฑเดฟเดฏเดฟเด•เตเด•เตเด‚.
เด…เดฑเดฟเดฏเดฟเดชเตเดชเต เดฒเดญเดฟเดšเตเดš เดŽเดžเตเดšเดฟเดจเต€เดฏเตผ, เดชเตเดฐเดถเตเดจเด‚ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เตเด‚, เด’เดฐเต เดชเดฐเดฟเดนเดพเดฐเด‚ เดตเดพเด—เตเดฆเดพเดจเด‚ เดšเต†เดฏเตเดฏเตเด‚ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดชเตเดฐเดถเตเดจเด‚ เดฌเดพเด•เตเด•เต เดฌเตผเดฃเดฑเดฟเตฝ เด‡เดŸเตเด‚, เดŽเดฒเตเดฒเดพเด‚ เดธเตเดตเดฏเด‚ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดฎเต†เดจเตเดจเต เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต, เดŽเดจเตเดคเดพเดฏเดพเดฒเตเด‚, เดŽเดฒเตเดฒเดพเด‚ เด‰เดŸเตป เดฎเดฑเด•เตเด•เตเด‚.
เดœเดฟเดžเตเดšเตผเดฌเตเดฐเต†เดกเตเด‚ เดกเต‹เดจเดŸเตเดŸเตเด‚, เดšเดคเดตเตเด•เดณเตเด‚ เดฎเตเดดเด•เดณเตเด‚เดœเดฟเดžเตเดšเตผเดฌเตเดฐเต†เดกเตเด‚ เดกเต‹เดจเดŸเตเดŸเตเด‚:
1. เด…เดงเดฟเด•เดฎเดพเดฏเดฟ เด’เดจเตเดจเตเด‚ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ.
2. เด’เดดเดฟเด•เดดเดฟเดตเตเด•เตพ เดชเดฑเดฏเดพเดจเตเด‚ เดคเดฟเดฐเดฟเดฎเดฑเดฟ เดจเดŸเดคเตเดคเดพเดจเตเด‚ เดŽเดชเตเดชเต‹เดดเตเด‚ เด…เดตเดธเดฐเดฎเตเดฃเตเดŸเต.
3. เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเตเดตเดจเตเดคเด‚ เดตเดฟเดตเต‡เดšเดจเดพเดงเดฟเด•เดพเดฐเดคเตเดคเดฟเตฝ เดšเต†เดฒเดตเดดเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดจเตเดจ เดงเดพเดฐเดพเดณเด‚ เดธเดฎเดฏเด‚.
เดšเดคเดตเตเด•เดณเตเด‚ เดฎเตเดดเด•เดณเตเด‚:
1. เดคเดพเดฎเดธเดฟเดฏเดพเดคเต† เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดชเดฟเดจเตเดจเต€เดŸเต, เด‰เดชเดญเต‹เด•เตเดคเดพเดตเต เดˆ เดฒเต‹เด•เดคเตเดคเดฟเดฒเต† เด…เดธเตเดคเดฟเดคเตเดตเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ เดธเดพเตผเดตเดคเตเดฐเดฟเด• เดจเต€เดคเดฟเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ เดšเดฟเดจเตเดคเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด’เดฐเดฟเด•เตเด•เตฝ เด•เต‚เดŸเดฟ เดธเตเดตเดฏเด‚ เดšเต‹เดฆเตเดฏเด‚ เดšเต‹เดฆเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚ - เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเดพเดฃเต เดžเดพเตป เด…เดตเตผเด•เตเด•เต เดŽเดจเตเดฑเต† เดชเดฃเด‚ เดจเตฝเด•เตเดจเตเดจเดคเต? เด…เดจเดจเตเดคเดฐเดซเดฒเด‚ เดŽเดชเตเดชเต‹เดดเตเด‚ เด’เดจเตเดจเตเดคเดจเตเดจเต†เดฏเดพเดฃเต - เด‰เดชเดญเต‹เด•เตเดคเดพเดตเต เดŽเดชเตเดชเต‹เตพ เดตเดฟเดฐเดธเดจเดพเด•เตเด•เดฏเตเด‚ เดตเดฟเดŸเดชเดฑเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚ เดŽเดจเตเดจเดคเต เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เดšเต‹เดฆเตเดฏเด‚. เด’เดชเตเดชเด‚ เดซเต€เดกเดฑเตเด‚ เด•เดพเดฒเดฟเดฏเดพเด•เตเด‚. เดธเด™เตเด•เดŸเด•เดฐเดฎเดพเดฃเต.
2. เดŽเดžเตเดšเดฟเดจเต€เดฏเตผ เดตเดฟเด•เดธเดจเด‚ - เดชเต‚เดœเตเดฏเด‚.
3. เดœเต‹เดฒเดฟ เด†เดธเต‚เดคเตเดฐเดฃเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดฒเตเด‚ เดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดฒเตเด‚ เดฌเตเดฆเตเดงเดฟเดฎเตเดŸเตเดŸเตเด•เตพ

เด“เดชเตเดทเตป 2- "เดคเด‚เดฌเต‹เดฑเดฟเดจเตŠเดชเตเดชเด‚ เดจเตƒเดคเตเดคเด‚ เดšเต†เดฏเตเดฏเตเด•, เด†เดตเดฟ เดชเดฑเด•เตเด•เตเด•, เดทเต‚เดธเต เดงเดฐเดฟเด•เตเด•เตเด•"

เด–เดฃเตเดกเดฟเด• 1-เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเต เดžเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดจเดฟเดฐเต€เด•เตเดทเดฃ เดธเด‚เดตเดฟเดงเดพเดจเด‚ เด†เดตเดถเตเดฏเดฎเดพเดฃเต, เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เดณเต‹เดŸเต† เดŽเดฒเตเดฒเดพเด‚ เดžเด™เตเด™เตพเด•เตเด•เต เดฒเดญเดฟเด•เตเด•เตเด‚. เดกเดพเดฑเตเดฑเดพ เดจเดฟเด˜เดฃเตเดŸเตเดตเดฟเดฒเต‡เด•เตเด•เตเด‚ เดกเตˆเดจเดพเดฎเดฟเด•เต เด•เดพเดดเตโ€Œเดšเด•เดณเดฟเดฒเต‡เด•เตเด•เตเด‚ เดžเด™เตเด™เตพ เดŽเดฒเตเดฒเดพเดคเตเดคเดฐเด‚ เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เดณเตเดŸเต†เดฏเตเด‚ เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต, เดŽเดฒเตเดฒเดพเดคเตเดคเดฐเด‚ เด•เต—เดฃเตเดŸเดฑเตเด•เดณเตเด‚ เด“เดฃเดพเด•เตเด•เตเดจเตเดจเต, เดŽเดฒเตเดฒเดพเด‚ เดชเดŸเตเดŸเดฟเด•เด•เดณเดพเด•เตเด•เดฟ, เดฒเดฟเดธเตเดฑเตเดฑเตเด•เดณเตเด‚ เดชเดŸเตเดŸเดฟเด•เด•เดณเตเด‚ เด†เดจเตเด•เดพเดฒเดฟเด•เดฎเดพเดฏเดฟ เดตเดฟเดถเด•เดฒเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดžเด™เตเด™เตพเด•เตเด•เต เดฎเดจเต‹เดนเดฐเดฎเต‹ เด…เดฒเตเดฒเดพเดคเตเดคเดคเต‹ เด†เดฏ เด—เตเดฐเดพเดซเตเด•เตพ, เดชเดŸเตเดŸเดฟเด•เด•เตพ, เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเตเด•เตพ เดŽเดจเตเดจเดฟเดตเดฏเตเดฃเตเดŸเต. เดชเตเดฐเดงเดพเดจ เด•เดพเดฐเตเดฏเด‚ เด•เต‚เดŸเตเดคเตฝ, เด•เต‚เดŸเตเดคเตฝ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต.
เด–เดฃเตเดกเดฟเด• 2- เดžเด™เตเด™เตพ เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด‡เดคเดฟเดจเตเดฑเต†เดฏเต†เดฒเตเดฒเดพเด‚ เดตเดฟเดถเด•เดฒเดจเด‚ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.
เด–เดฃเตเดกเดฟเด• 3-เดžเด™เตเด™เตพ เด’เดฐเต เดจเดฟเดถเตเดšเดฟเดค เดชเตเดฐเดฎเดพเดฃเด‚ เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เตเด•เดฏเดพเดฃเต, เดˆ เดชเตเดฐเดฎเดพเดฃเดคเตเดคเต† เดžเด™เตเด™เตพ เดฒเดณเดฟเดคเดฎเดพเดฏเดฟ เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจเต - "เดžเด™เตเด™เตพ เดŽเด™เตเด™เดจเต†เดฏเดพเดฃเต เด’เดฐเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเต."
เด–เดฃเตเดกเดฟเด• 4- เด‰เดชเดญเต‹เด•เตเดคเดพเดตเต, เด—เตเดฐเดพเดซเตเด•เดณเตเดŸเต†เดฏเตเด‚ เด…เด•เตเด•เด™เตเด™เดณเตเดŸเต†เดฏเตเด‚ เดˆ เดฎเดนเดคเตเดตเดฎเต†เดฒเตเดฒเดพเด‚ เด•เดพเดฃเตเดฎเตเดชเต‹เตพ, เดฌเดพเดฒเดฟเดถเดตเตเด‚ เดจเดฟเดทเตเด•เดณเด™เตเด•เดตเตเดฎเดพเดฏ เด†เดคเตเดฎเดตเดฟเดถเตเดตเดพเดธเดคเตเดคเดฟเดฒเดพเดฃเต - เด‡เดชเตเดชเต‹เตพ เดŽเดฒเตเดฒเดพเด‚ เดžเด™เตเด™เตพเด•เตเด•เดพเดฏเดฟ เด‰เดŸเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด‚. เด•เต‚เดŸเดพเดคเต†, เด…เดตเตป เดคเดจเตเดฑเต† เดธเดพเดฎเตเดชเดคเตเดคเดฟเด• เดธเตเดฐเต‹เดคเดธเตเดธเตเด•เดณเตเดฎเดพเดฏเดฟ เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเดฒเตเด‚ เดตเต‡เดฆเดจเดฏเดฟเดฒเตเดฒเดพเดคเต†เดฏเตเด‚ เดชเด™เตเด•เตเดšเต‡เดฐเตเดจเตเดจเต. เดžเด™เตเด™เดณเตเดŸเต† เดŽเดžเตเดšเดฟเดจเต€เดฏเตผเดฎเดพเตผ เดฎเดฟเด•เดšเตเดš เดฐเต€เดคเดฟเดฏเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเตเดฃเตเดŸเต†เดจเตเดจเต เดฎเดพเดจเต‡เดœเตโ€Œเดฎเต†เดจเตเดฑเดฟเดจเตเด‚ เด†เดคเตเดฎเดตเดฟเดถเตเดตเดพเดธเดฎเตเดฃเตเดŸเต. เดชเดฐเดฎเดพเดตเดงเดฟ เดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต.
เด–เดฃเตเดกเดฟเด• 5- เดชเดคเดฟเดตเดพเดฏเดฟ เด˜เดŸเตเดŸเด‚ 1 เด†เดตเตผเดคเตเดคเดฟเด•เตเด•เตเด•.
เดœเดฟเดžเตเดšเตผเดฌเตเดฐเต†เดกเตเด‚ เดกเต‹เดจเดŸเตเดŸเตเด‚, เดšเดคเดตเตเด•เดณเตเด‚ เดฎเตเดดเด•เดณเตเด‚เดœเดฟเดžเตเดšเตผเดฌเตเดฐเต†เดกเตเด‚ เดกเต‹เดจเดŸเตเดŸเตเด‚:
1. เดฎเดพเดจเต‡เดœเตผเดฎเดพเดฐเตเดŸเต†เดฏเตเด‚ เดŽเดžเตเดšเดฟเดจเต€เดฏเตผเดฎเดพเดฐเตเดŸเต†เดฏเตเด‚ เดœเต€เดตเดฟเดคเด‚ เดฒเดณเดฟเดคเดตเตเด‚ เดชเตเดฐเดตเดšเดฟเด•เตเด•เดพเดตเตเดจเตเดจเดคเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดพเตฝ เดจเดฟเดฑเดžเตเดžเดคเตเดฎเดพเดฃเต. เดŽเดฒเตเดฒเดพเด‚ เดคเดฟเดฐเด•เตเด•เดฟเดฒเดพเดฃเต, เดŽเดฒเตเดฒเดพเดตเดฐเตเด‚ เดคเดฟเดฐเด•เตเด•เดฟเดฒเดพเดฃเต.
2. เด‰เดชเดญเต‹เด•เตเดคเดพเดตเดฟเดจเตเดฑเต† เดœเต€เดตเดฟเดคเดตเตเด‚ เดฎเต‹เดถเดฎเดฒเตเดฒ - เด…เดตเตป เด…เตฝเดชเตเดชเด‚ เด•เตเดทเดฎเดฏเต‹เดŸเต† เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต†เดจเตเดจเตเด‚ เดŽเดฒเตเดฒเดพเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดฎเต†เดจเตเดจเตเด‚ เด…เดตเดจเต เดŽเดชเตเดชเต‹เดดเตเด‚ เด‰เดฑเดชเตเดชเตเดฃเตเดŸเต. เด‡เดคเต เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดจเตเดจเดฟเดฒเตเดฒ, เดถเดฐเดฟ, เดฒเต‹เด•เด‚ เด…เดจเตเดฏเดพเดฏเดฎเดพเดฃเต, เด…เดŸเตเดคเตเดค เดœเต€เดตเดฟเดคเดคเตเดคเดฟเตฝ เดจเดฟเด™เตเด™เตพ เดญเดพเด—เตเดฏเดตเดพเดจเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚.
เดšเดคเดตเตเด•เดณเตเด‚ เดฎเตเดดเด•เดณเตเด‚:
1. เดคเดพเดฎเดธเดฟเดฏเดพเดคเต† เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดชเดฟเดจเตเดจเต€เดŸเต, เดธเดฎเดพเดจเดฎเดพเดฏ เดธเต‡เดตเดจเดคเตเดคเดฟเดจเตเดฑเต† เดตเต‡เด—เดคเดฏเต‡เดฑเดฟเดฏ เด’เดฐเต เดฆเดพเดคเดพเดตเต เด‰เดฃเตเดŸเดพเด•เตเด‚, เด…เดตเตผ เด…เดคเต‡ เด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเด‚, เดŽเดจเตเดจเดพเตฝ เด•เตเดฑเดšเตเดšเต เดตเดฟเดฒเด•เตเดฑเดžเตเดžเดคเดพเดฃเต. เดซเดฒเด‚ เด’เดจเตเดจเตเดคเดจเตเดจเต†เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดŽเดจเตเดคเดฟเดจเต เด•เต‚เดŸเตเดคเตฝ เดชเดฃเด‚ เดจเตฝเด•เดฃเด‚. เด‡เดคเต เดตเต€เดฃเตเดŸเตเด‚ เดซเต€เดกเดฑเดฟเดจเตเดฑเต† เด…เดชเตเดฐเดคเตเดฏเด•เตเดทเดคเดฏเดฟเดฒเต‡เด•เตเด•เต เดจเดฏเดฟเด•เตเด•เตเด‚.
2. เด‡เดคเต เดตเดฟเดฐเดธเดฎเดพเดฃเต. เด…เตผเดคเตเดฅเดถเต‚เดจเตเดฏเดฎเดพเดฏ เดเดคเตŠเดฐเต เดชเตเดฐเดตเตผเดคเตเดคเดจเดตเตเด‚ เดŽเดคเตเดฐ เดตเดฟเดฐเดธเดฎเดพเดฃเต.
3. เดฎเตเตป เดชเดคเดฟเดชเตเดชเดฟเดฒเต† เดชเต‹เดฒเต†, เดตเดฟเด•เดธเดจเด‚ เด‡เดฒเตเดฒ. เดŽเดจเตเดจเดพเตฝ เด’เดฐเต เดŽเดžเตเดšเดฟเดจเต€เดฏเดฑเต† เดธเด‚เดฌเดจเตเดงเดฟเดšเตเดšเดฟเดŸเดคเตเดคเต‹เดณเด‚, เด†เดฆเตเดฏ เด“เดชเตเดทเดจเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฏเดฟ, เดจเดฟเด™เตเด™เตพ เดจเดฟเดฐเดจเตเดคเดฐเด‚ เด’เดฐเต IBD เดธเตƒเดทเตเดŸเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต เดŽเดจเตเดจเดคเดพเดฃเต เดฆเต‹เดทเด‚. เด‡เดคเดฟเดจเต เดธเดฎเดฏเดฎเต†เดŸเตเด•เตเด•เตเดจเตเดจเต. เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเดฟเดฏเดชเตเดชเต†เดŸเตเดŸ เด’เดฐเดพเดณเตเดŸเต† เดชเตเดฐเดฏเต‹เดœเดจเดคเตเดคเดฟเดจเดพเดฏเดฟ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดšเต†เดฒเดตเดดเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดจเตเดจเดคเต. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดธเตเดตเดฏเด‚ เดชเดฐเดฟเดชเดพเดฒเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดพเดคเตเดคเดคเดฟเดจเดพเตฝ, เด†เดฐเตเด‚ เดจเดฟเด™เตเด™เดณเต† เดตเดฟเดฒเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ.

เด“เดชเตเดทเตป 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_config - เดตเตเดฏเด•เตเดคเดฟเด—เดค เด…เดณเดตเตเด•เดณเตเดŸเต† เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป
เดฎเต†เดŸเตเดฐเดฟเด•เต - เดจเดฟเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจ เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเตโ€Œเด•เตเด•เดพเดฏเตเดณเตเดณ เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดฎเต†เดŸเตเดฐเดฟเด•เต
metric_alert_history - เดชเตเดฐเด•เดŸเดจ เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเตเด•เดณเตเดŸเต† เดšเดฐเดฟเดคเตเดฐเด‚
เดฒเต‹เด—เต_เด•เตเดตเดฑเดฟ - AWS-เตฝ เดจเดฟเดจเตเดจเต เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตโ€Œเดค เด’เดฐเต PostgreSQL เดฒเต‹เด—เต เดซเดฏเดฒเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเดพเดดเตโ€Œเดธเต เดšเต†เดฏเตโ€Œเดค เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เตพ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดธเต‡เดตเดจ เดชเดŸเตเดŸเดฟเด•
เด…เดŸเดฟเดธเตเดฅเดพเดจเด‚ - เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เดธเดฎเดฏ เด•เดพเดฒเดฏเดณเดตเตเด•เดณเตเดŸเต† เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ
เดšเต†เด•เตเด•เตเดชเต‹เดฏเดฟเดจเตเดฑเต โ€” เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดจเตเดฑเต† เดจเดฟเดฒ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดฎเต†เดŸเตเดฐเดฟเด•เตเดธเดฟเดจเตเดฑเต† เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป
เดšเต†เด•เตเด•เต เดชเต‹เดฏเดฟเดจเตเดฑเต_เด…เดฒเต‡เตผเดŸเตเดŸเต_เดšเดฐเดฟเดคเตเดฐเด‚ โ€” เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดนเต†เตฝเดคเตเดคเต เดšเต†เด•เตเด•เต เดฎเต†เดŸเตเดฐเดฟเด•เตเดธเดฟเดจเตเดฑเต† เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต เดšเดฐเดฟเดคเตเดฐเด‚
pg_stat_db_queries - เดธเดœเต€เดต เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เดณเตเดŸเต† เดธเต‡เดตเดจ เดชเดŸเตเดŸเดฟเด•
เดชเตเดฐเดตเดฐเตเดคเตเดคเดฟ เด•เตเดฑเดฟเดชเตเดชเต - เดชเตเดฐเดตเตผเดคเตเดคเดจ เดฒเต‹เด—เต เดธเต‡เดตเดจ เดชเดŸเตเดŸเดฟเด•
trap_oid - เดŸเตเดฐเดพเดชเตเดชเต เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดธเต‡เดตเดจ เดชเดŸเตเดŸเดฟเด•

เด˜เดŸเตเดŸเด‚ 1 - เดชเตเดฐเด•เดŸเดจเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดธเตเดฅเดฟเดคเดฟเดตเดฟเดตเดฐเด•เตเด•เดฃเด•เตเด•เตเด•เตพ เดถเต‡เด–เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเตเด•เตพ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด•

เดธเตเดฅเดฟเดคเดฟเดตเดฟเดตเดฐเด•เตเด•เดฃเด•เตเด•เตเด•เตพ เดธเด‚เดญเดฐเดฟเด•เตเด•เดพเตป เด’เดฐเต เดชเดŸเตเดŸเดฟเด• เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต pg_stat_history
pg_stat_history เดชเดŸเตเดŸเดฟเด• เด˜เดŸเดจ

                                          เดชเดŸเตเดŸเดฟเด• "public.pg_stat_history" เด•เต‹เดณเด‚ | เดคเดฐเด‚ | เดฎเต‹เดกเดฟเดซเดฏเดฑเตเด•เตพ ------------------------------------------------- -+------------------------------------------ id | เดชเต‚เตผเดฃเตเดฃเดธเด‚เด–เตเดฏ | เดถเต‚เดจเตเดฏเดฎเดพเดฏ เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดฒเตเดฒ nextval('pg_stat_history_id_seq'::regclass) เดธเตเดจเดพเดชเตเดชเตเดทเต‹เดŸเตเดŸเต_เดŸเตˆเด‚เดธเตเดฑเตเดฑเดพเดฎเตเดชเต | เดŸเตˆเด‚ เดธเต‹เตบ เด‡เดฒเตเดฒเดพเดคเตเดค เดŸเตˆเด‚เดธเตเดฑเตเดฑเดพเดฎเตเดชเต | เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต_เดเดกเดฟ | เดชเต‚เตผเดฃเตเดฃเดธเด‚เด–เตเดฏ | dbid | oid | userid | oid | เดšเต‹เดฆเตเดฏเด‚ | เดตเดฒเดฟเดฏ | เดšเต‹เดฆเตเดฏเด‚ | เดŸเต†เด•เตเดธเตเดฑเตเดฑเต | เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจเต | เดตเดฒเดฟเดฏ | เด†เด•เต†_เดธเดฎเดฏเด‚ | เด‡เดฐเดŸเตเดŸ เด•เตƒเดคเตเดฏเดค | เดฎเดฟเดจเดฟเดฑเตเดฑเต_เดธเดฎเดฏเด‚ | เด‡เดฐเดŸเตเดŸ เด•เตƒเดคเตเดฏเดค | เดชเดฐเดฎเดพเดตเดงเดฟ_เดธเดฎเดฏเด‚ | เด‡เดฐเดŸเตเดŸ เด•เตƒเดคเตเดฏเดค | เดถเดฐเดพเดถเดฐเดฟ_เดธเดฎเดฏเด‚ | เด‡เดฐเดŸเตเดŸ เด•เตƒเดคเตเดฏเดค | stddev_time | เด‡เดฐเดŸเตเดŸ เด•เตƒเดคเตเดฏเดค | เดตเดฐเดฟเด•เตพ | เดตเดฒเดฟเดฏ | เดชเด™เตเด•เดฟเดŸเตเดŸ_blks_เดนเดฟเดฑเตเดฑเต | เดตเดฒเดฟเดฏ | share_blks_read | เดตเดฒเดฟเดฏ | share_blks_dirtied | เดตเดฒเดฟเดฏ | เดชเด™เตเด•เดฟเดŸเตเดŸ_blks_written | เดตเดฒเดฟเดฏ | เดฒเต‹เด•เตเด•เตฝ_เดฌเตเดฒเด•เตเดธเต_เดนเดฟเดฑเตเดฑเต | เดตเดฒเดฟเดฏ | local_blks_read | เดตเดฒเดฟเดฏ | local_blks_dirtied | เดตเดฒเดฟเดฏ | local_blks_written | เดตเดฒเดฟเดฏ | temp_blks_read | เดตเดฒเดฟเดฏ | temp_blks_written | เดตเดฒเดฟเดฏ | blk_read_time | เด‡เดฐเดŸเตเดŸ เด•เตƒเดคเตเดฏเดค | blk_write_time | เด‡เดฐเดŸเตเดŸ เด•เตƒเดคเตเดฏเดค | เด…เดŸเดฟเดธเตเดฅเดพเดจ_เดเดกเดฟ | เดชเต‚เตผเดฃเตเดฃเดธเด‚เด–เตเดฏ | เดธเต‚เดšเดฟเด•เด•เตพ: "pg_stat_history_pkey" เดชเตเดฐเดพเดฅเดฎเดฟเด• เด•เต€, btree (id) "database_idx" btree (database_id) "queryid_idx" btree (queryid) "snapshot_timestamp_idx" btree (snapshot_timestamp_idx" btree (snapshot_timestamp) เดตเดฟเดฆเต‡เดถเดฟ: "N_N database_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 ;

DB เดธเดฎเดฏเด‚

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

เด…เดญเตเดฏเตผเดคเตเดฅเดฟเด•เตเด•เตเด•

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 | #| เดšเต‹เดฆเตเดฏเด‚| เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจเต| เด•เต‹เดณเตเด•เตพ %| เดฎเตŠเดคเตเดคเด‚_เดธเดฎเดฏเด‚ (เดฎเดฟเดธเต†) | dbtime % +------------+----------+-------------+-------------+ ---- ---------------------------------------- | 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:00:17.377( 17377.868 เดฎเดฟ.)| .46 | 7| 1053044345| 1| .00000|00:00:06.156( 6156.352 เดฎเดฟ.เดŽเดธเต.)| .16 | 8| 3644780286| 1| .00000|00:00:01.063( 1063.830 เดฎเดฟ.)| .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
---------------------------------------------- ------------------------------------- | TOP10 SQL เดฎเตŠเดคเตเดคเด‚ I/O เดธเดฎเดฏเด‚ | #| เดšเต‹เดฆเตเดฏเด‚| เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจเต| เด•เต‹เดณเตเด•เตพ %| I/O เดธเดฎเดฏเด‚ (เดฎเดฟ.เดธเต†)|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 เดฎเดฟ.)| 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( 18182.816 เดฎเดฟ.เดŽเดธเต.)| 1.10 | 7| 1053044345| 1| .00000|00:00:16.611( 16611.722 เดฎเดฟ.)| 1.01 | 8| 3644780286| 1| .00000|00:00:00.436( 436.205 เดฎเดฟ.)| .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 | #| เดธเตเดจเดพเดชเตเดชเตเดทเต‹เดŸเตเดŸเต| เดธเตเดจเดพเดชเตเดชเตเดทเต‹เดŸเตเดŸเต เดเดกเดฟ| เดšเต‹เดฆเตเดฏเด‚| max_time (ms) +----+---------------------------------------------- --+--------------------------------------- | 1| 05.04.2019/01/03 4169:655729273| 00| 02| 01.869:121869.981:2( 04.04.2019 เดฎเดฟ.) | 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 เดฎเดฟ.) | 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 เดฎเดฟ.) | 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
---------------------------------------------- ---------------------------------------- | เดชเด™เตเด•เดฟเดŸเตเดŸ เดฌเดซเตผ เดตเดดเดฟ TOP10 SQL เดตเดพเดฏเดฟเด•เตเด•เตเด•/เดŽเดดเตเดคเตเด• | #| เดธเตเดจเดพเดชเตเดชเตเดทเต‹เดŸเตเดŸเต| เดธเตเดจเดพเดชเตเดชเตเดทเต‹เดŸเตเดŸเต เดเดกเดฟ| เดšเต‹เดฆเตเดฏเด‚| เดชเด™เตเด•เดฟเดŸเตเดŸ เดฌเตเดฒเต‹เด•เตเด•เตเด•เตพ เดตเดพเดฏเดฟเดšเตเดšเต| เดชเด™เตเด•เดฟเดŸเตเดŸ เดฌเตเดฒเต‹เด•เตเด•เตเด•เตพ เดŽเดดเตเดคเตเดจเตเดจเต +----+----------------+ -+------------------------------------------------ | 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 | เดฎเดฟเดจเดฟเดฑเตเดฑเต เดธเดฎเดฏเด‚: 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 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 เดฎเดฟ.) | 0 | 00:01:25.628( 85628.136 เดฎเดฟ.) | 00:01:37.708( 97708.751 ms.) | 4 | 00:01:37.708( 97708.751 ms.) | 00:01:49.789( 109789.366 เดฎเดฟ.) | 2 | 00:01:49.789( 109789.366 เดฎเดฟ.) | 00:02:01.869( 121869.981 เดฎเดฟ.) | 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
|--------------------------------------------- - ------------------------------------------- | QueryPerSeconds เดจเดฎเตเดชเดฑเตเด•เตพ เดชเตเดฐเด•เดพเดฐเด‚ เด•เตเดฐเดฎเต€เด•เดฐเดฟเดšเตเดš TOP10 เดธเตเดจเดพเดชเตเดชเตเดทเต‹เดŸเตเดŸเตเด•เตพ ------------------------------------------------- ---------------------------------------------- ---------------------------------------------- | #| เดธเตเดจเดพเดชเตเดชเตเดทเต‹เดŸเตเดŸเต| เดธเตเดจเดพเดชเตเดชเตเดทเต‹เดŸเตเดŸเต เดเดกเดฟ| เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจเต| เด†เด•เต† 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 เดฎเดฟ.)| .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 เดฎเดฟ.)| .03 | 16.784| 196784.755 776.979:00| 00| 01.441| 1441.386:732:6( 04.04.2019 ms.)| 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 ms.)| 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 ms.)| 00| 04:26.791:266791.988( 659.179 ms.)| 00 | 00| 00.064 64.261:024| 9| 05.04.2019| 01:03:4167( 4387191 ms.)| 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 ms.)| 19.217| 79217.372:313.004:00( 00 ms.)| 01.319 | 1319.676| 1.666/XNUMX/XNUMX XNUMX:XNUMX| XNUMX| XNUMX| XNUMX:XNUMX:XNUMX( XNUMX ms.)| XNUMX| XNUMX:XNUMX:XNUMX( XNUMX เดฎเดฟ.)| 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

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•