PostgreSQL āĻĒā§āϰāĻļā§āύ⧇āϰ āĻ•āĻ°ā§āĻŽāĻ•ā§āώāĻŽāϤāĻž āύāĻŋāϰ⧀āĻ•ā§āώāĻŖāĨ¤ āĻĒāĻžāĻ°ā§āϟ 1 - āϰāĻŋāĻĒā§‹āĻ°ā§āϟāĻŋāĻ‚

āχāĻžā§āϜāĻŋāύāĻŋāϝāĻŧāĻžāϰ - āĻ˛ā§āϝāĻžāϟāĻŋāύ āĻĨ⧇āϕ⧇ āĻ…āύ⧁āĻŦāĻžāĻĻ - āĻ…āύ⧁āĻĒā§āϰāĻžāĻŖāĻŋāϤāĨ¤
āĻāĻ•āϜāύ āĻĒā§āϰāĻ•ā§ŒāĻļāϞ⧀ āϏāĻŦāĻ•āĻŋāϛ⧁ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ (c) āφāϰ. āĻĄāĻŋāĻœā§‡āϞāĨ¤
āĻāĻĒāĻŋāĻ—ā§āϰāĻžāĻĢāĨ¤
PostgreSQL āĻĒā§āϰāĻļā§āύ⧇āϰ āĻ•āĻ°ā§āĻŽāĻ•ā§āώāĻŽāϤāĻž āύāĻŋāϰ⧀āĻ•ā§āώāĻŖāĨ¤ āĻĒāĻžāĻ°ā§āϟ 1 - āϰāĻŋāĻĒā§‹āĻ°ā§āϟāĻŋāĻ‚
āĻ…āĻĨāĻŦāĻž āϕ⧇āύ āĻāĻ•āϜāύ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āĻ…ā§āϝāĻžāĻĄāĻŽāĻŋāύāĻŋāĻ¸ā§āĻŸā§āϰ⧇āϟāϰāϕ⧇ āϤāĻžāϰ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāĻŋāĻ‚ āĻ…āϤ⧀āϤ āĻŽāύ⧇ āϰāĻžāĻ–āϤ⧇ āĻšāĻŦ⧇ āϏ⧇ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻāĻ•āϟāĻŋ āĻ—āĻ˛ā§āĻĒāĨ¤

āĻ­ā§‚āĻŽāĻŋāĻ•āĻž

āϏāĻŽāĻ¸ā§āϤ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻŽā§āϝāĻžāϚāϗ⧁āϞ⧋ āĻāϞ⧋āĻŽā§‡āϞ⧋āĨ¤ āωāĻĒāĻžāĻĻāĻžāύ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āϞ⧇āĻ–āϕ⧇āϰ āĻŦā§āϝāĻ•ā§āϤāĻŋāĻ—āϤ āĻŽāϤāĻžāĻŽāϤ.

āĻ“āϝāĻŧāĻžāϰ⧇āĻ¨ā§āϟāĻŋāϰ āĻĻāĻžāĻŦāĻŋāĻ¤ā§āϝāĻžāĻ—: āĻĒā§āϰāĻŦāĻ¨ā§āϧ⧇āϰ āĻĒāϰāĻŋāĻ•āĻ˛ā§āĻĒāĻŋāϤ āϏāĻŋāϰāĻŋāĻœā§‡ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻŸā§‡āĻŦāĻŋāϞ āĻāĻŦāĻ‚ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟāϗ⧁āϞāĻŋāϰ āϕ⧋āύ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āĻāĻŦāĻ‚ āϏāĻ āĻŋāĻ• āĻŦāĻ°ā§āĻŖāύāĻž āĻĨāĻžāĻ•āĻŦ⧇ āύāĻžāĨ¤ āωāĻĒāĻžāĻĻāĻžāύ āĻ…āĻŦāĻŋāϞāĻŽā§āĻŦ⧇ "AS IS" āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝāĻžāĻŦ⧇ āύāĻž.
āĻĒā§āϰāĻĨāĻŽāϤ, āĻĒā§āϰāϚ⧁āϰ āĻĒāϰāĻŋāĻŽāĻžāϪ⧇ āωāĻĒāĻžāĻĻāĻžāύ⧇āϰ āĻ•āĻžāϰāϪ⧇,
āĻĻā§āĻŦāĻŋāϤ⧀āϝāĻŧāϤ, āĻĒā§āϰāĻ•ā§ƒāϤ āĻ—ā§āϰāĻžāĻšāϕ⧇āϰ āĻ‰ā§ŽāĻĒāĻžāĻĻāύ āĻ­āĻŋāĻ¤ā§āϤāĻŋāϰ āϏāĻžāĻĨ⧇ āϤ⧀āĻ•ā§āĻˇā§āĻŖāϤāĻžāϰ āĻ•āĻžāϰāϪ⧇āĨ¤
āĻ…āϤāĻāĻŦ, āύāĻŋāĻŦāĻ¨ā§āϧāϗ⧁āϞāĻŋāϤ⧇ āϕ⧇āĻŦāϞāĻŽāĻžāĻ¤ā§āϰ āϏāĻžāϧāĻžāϰāĻŖ āφāĻ•āĻžāϰ⧇ āϧāĻžāϰāĻŖāĻž āĻāĻŦāĻ‚ āĻŦāĻ°ā§āĻŖāύāĻž āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāĻŦ⧇āĨ¤
āĻšāϝāĻŧāϤ⧋ āĻ­āĻŦāĻŋāĻˇā§āϝāϤ⧇ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽāϟāĻŋ āĻ—āĻŋāϟāĻšāĻžāĻŦ⧇ āĻĒā§‹āĻ¸ā§āϟ āĻ•āϰāĻžāϰ āĻ¸ā§āϤāϰ⧇ āĻŦāĻžāĻĄāĻŧāĻŦ⧇, āĻŦāĻž āύāĻžāĻ“ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āϏāĻŽāϝāĻŧ āĻĒā§āϰāĻĻāĻ°ā§āĻļāύ āĻ•āϰāĻž āĻšāĻŦ⧇.

āĻ—āĻ˛ā§āĻĒ⧇āϰ āĻļ⧁āϰ⧁-āĻŽāύ⧇ āφāϛ⧇ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻļ⧁āϰ⧁ āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ āϏāĻŦÂģ.
āĻĢāϞāĻ¸ā§āĻŦāϰ⧂āĻĒ āϝāĻž āϘāĻŸā§‡āϛ⧇, āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āϏāĻžāϧāĻžāϰāĻŖ āĻĒāĻĻ⧇ - "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. āĻ—ā§āϰāĻžāĻšāĻ•āϕ⧇ āĻ…āĻŦāĻļā§āϝāχ āĻāĻŽāύ āĻ•āĻŋāϛ⧁ āϕ⧇āύāĻžāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧāϤāĻž āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āύāĻŋāĻļā§āϚāĻŋāϤ āĻšāϤ⧇ āĻšāĻŦ⧇ āϝāĻž āϏ⧇ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻŦ⧁āĻāϤ⧇ āϚāĻžāϝāĻŧ āύāĻž āĻāĻŦāĻ‚ āϤāĻžāϰ āωāϚāĻŋāϤ āύāϝāĻŧ āĻāĻŦāĻ‚ āϏāĻžāϧāĻžāϰāĻŖāĻ­āĻžāĻŦ⧇ āĻŦāĻ›āϰ⧇āϰ āϜāĻ¨ā§āϝ āĻŦāĻžāĻœā§‡āϟ āĻ…āύ⧁āĻŽā§‹āĻĻāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻšāĻŦ⧇ āύāĻžāĨ¤ āϤāĻžāϰāĻĒāϰ⧇ āφāĻĒāύāĻžāϕ⧇ āĻāĻ•āϟāĻŋ āĻĒ⧃āĻĨāĻ• āϏāĻ‚āĻ¸ā§āĻĨāĻžāύ āĻŦāϰāĻžāĻĻā§āĻĻ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇, āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āϰ āϜāĻ¨ā§āϝ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ āϏ⧇āϗ⧁āϞ⧋. āĻĒā§āϰāĻĨāĻŽā§‡ āφāĻĒāύāĻžāϕ⧇ āĻ…āĻ°ā§āĻĨāĻĒā§āϰāĻĻāĻžāύ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇, āĻĒāϰāĻŋāĻļā§‹āϧ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āĻāĻŦāĻ‚ āφāĻŦāĻžāϰ āĻ…āĻ°ā§āĻĨ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ āφāϰ āĻ—ā§āϰāĻžāĻšāĻ• āĻ•ā§ƒāĻĒāĻŖāĨ¤ āĻāϟāĻžāχ āĻāχ āĻœā§€āĻŦāύ⧇āϰ āφāĻĻāĻ°ā§āĻļāĨ¤

āĻ•āĻŋ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇, Chernyshevsky? āφāĻĒāύāĻžāϰ āĻĒā§āϰāĻļā§āύ āϖ⧁āĻŦ āĻĒā§āϰāĻžāϏāĻ™ā§āĻ—āĻŋāĻ•. (āϏāĻ™ā§āϗ⧇)

āĻāχ āĻŦāĻŋāĻļ⧇āώ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻāĻŦāĻ‚ āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻĒāϰāĻŋāĻ¸ā§āĻĨāĻŋāϤāĻŋāϤ⧇, āφāĻĒāύāĻŋ āĻāĻ•āϟ⧁ āĻ­āĻŋāĻ¨ā§āύāĻ­āĻžāĻŦ⧇ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ - āφāϏ⧁āύ āφāĻŽāĻžāĻĻ⧇āϰ āύāĻŋāϜāĻ¸ā§āĻŦ āĻŽāύāĻŋāϟāϰāĻŋāĻ‚ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āϤ⧈āϰāĻŋ āĻ•āϰāĻŋāĨ¤
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 - āϏāĻ•ā§āϰāĻŋāϝāĻŧ āĻ…āύ⧁āϰ⧋āϧ⧇āϰ āĻĒāϰāĻŋāώ⧇āĻŦāĻž āĻŸā§‡āĻŦāĻŋāϞ
āĻ•āĻžāĻ°ā§āϝ āĻŦāĻŋāĻŦāϰāĻŖ — āĻ•āĻžāĻ°ā§āϝāĻ•āϞāĻžāĻĒ āϞāĻ— āϏ⧇āĻŦāĻž āĻŸā§‡āĻŦāĻŋāϞ
trap_oid - āĻĢāĻžāρāĻĻ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĒāϰāĻŋāώ⧇āĻŦāĻž āĻŸā§‡āĻŦāĻŋāϞ

āĻĒāĻ°ā§āϝāĻžāϝāĻŧ 1 - āĻ•āĻ°ā§āĻŽāĻ•ā§āώāĻŽāϤāĻž āĻĒāϰāĻŋāϏāĻ‚āĻ–ā§āϝāĻžāύ āϏāĻ‚āĻ—ā§āϰāĻš āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āϰāĻŋāĻĒā§‹āĻ°ā§āϟ āĻĒāĻžāύ

āĻĒāϰāĻŋāϏāĻ‚āĻ–ā§āϝāĻžāύāĻ—āϤ āϤāĻĨā§āϝ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāϤ⧇ āĻāĻ•āϟāĻŋ āĻŸā§‡āĻŦāĻŋāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ pg_stat_history
pg_stat_history āĻŸā§‡āĻŦāĻŋāϞ āĻ—āĻ āύ

                                          āĻŸā§‡āĻŦāĻŋāϞ "public.pg_stat_history" āĻ•āϞāĻžāĻŽ | āĻĒā§āϰāĻ•āĻžāϰ | āϏāĻ‚āĻļā§‹āϧāĻ•--------------------------------------------------------------- -------------------------------- āφāχāĻĄāĻŋ | āĻĒā§‚āĻ°ā§āĻŖāϏāĻ‚āĻ–ā§āϝāĻž | āύāĻžāϞ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āύ⧇āĻ•ā§āϏāϟāĻ­āĻžāϞ āύāϝāĻŧ('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" āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ• āϕ⧀, btree (id) "database_idx" btree (database_id) "queryid_idx" btree (queryid) "snapshot_timestamp_idx" btree (snapshot_timestamp) "āĻŦāĻŋāĻĻ⧇āĻļā§€-āϕ⧀: IG_FDASEKEYS" (āφāχāϜāĻŋ-āφāχāĻĄāĻŋ) āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟ āφāχāĻĄāĻŋ) āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ (āφāχāĻĄāĻŋ ) āĻĄāĻŋāϞāĻŋāϟ āĻ•ā§āϝāĻžāϏāϕ⧇āĻĄā§‡

āφāĻĒāύāĻŋ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāĻšā§āϛ⧇āύ, āĻŸā§‡āĻŦāĻŋāϞāϟāĻŋ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻāĻ•āϟāĻŋ āĻ•ā§āϰāĻŽāĻŦāĻ°ā§āϧāĻŽāĻžāύ āĻ­āĻŋāω āĻĄā§‡āϟāĻž pg_stat_statements āϞāĻ•ā§āĻˇā§āϝ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ⧇.

āĻāχ āĻŸā§‡āĻŦāĻŋāϞ⧇āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āϖ⧁āĻŦāχ āϏāĻšāϜāĨ¤

pg_stat_history āĻĒā§āϰāϤāĻŋāϟāĻŋ āϘāĻ¨ā§āϟāĻžāϰ āϜāĻ¨ā§āϝ āĻ•ā§āϝ⧋āϝāĻŧāĻžāϰ⧀ āĻāĻ•ā§āϏāĻŋāĻ•āĻŋāωāĻļāύ⧇āϰ āϏāĻžā§āϚāĻŋāϤ āĻĒāϰāĻŋāϏāĻ‚āĻ–ā§āϝāĻžāύ āωāĻĒāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāĻŦ⧇āĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻŋ āϘāĻ¨ā§āϟāĻžāϰ āĻļ⧁āϰ⧁āϤ⧇, āĻŸā§‡āĻŦāĻŋāϞ⧇ āĻĒāϰāĻŋāϏāĻ‚āĻ–ā§āϝāĻžāύ āĻĒā§‚āϰāĻŖ āĻ•āϰāĻžāϰ āĻĒāϰ⧇ pg_stat_statements āϏāĻ™ā§āϗ⧇ āϰāĻŋāϏ⧇āϟ āĻ•āϰ⧁āύ pg_stat_statements_reset().
āĻĻā§āϰāĻˇā§āϟāĻŦā§āϝ: 1 āϏ⧇āϕ⧇āĻ¨ā§āĻĄā§‡āϰ āĻŦ⧇āĻļāĻŋ āϏāĻŽāϝāĻŧāĻ•āĻžāϞ⧇āϰ āĻ…āύ⧁āϰ⧋āϧ⧇āϰ āϜāĻ¨ā§āϝ āĻĒāϰāĻŋāϏāĻ‚āĻ–ā§āϝāĻžāύ āϏāĻ‚āĻ—ā§āϰāĻš āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤
pg_stat_history āϏāĻžāϰāĻŖāĻŋ āĻĒāĻĒ⧁āϞ⧇āϟ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇

--pg_stat_history.sql
CREATE OR REPLACE FUNCTION pg_stat_history( ) RETURNS boolean AS $$
DECLARE
  endpoint_rec record ;
  database_rec record ;
  pg_stat_snapshot record ;
  current_snapshot_timestamp timestamp without time zone;
BEGIN
  current_snapshot_timestamp = date_trunc('minute',now());  
  
  FOR endpoint_rec IN SELECT * FROM endpoint 
  LOOP
    FOR database_rec IN SELECT * FROM database WHERE endpoint_id = endpoint_rec.id 
	  LOOP
	    
		RAISE NOTICE 'NEW SHAPSHOT IS CREATING';
		
		--Connect to the target DB	  
	    EXECUTE 'SELECT dblink_connect(''LINK1'',''host='||endpoint_rec.host||' dbname='||database_rec.name||' user=USER password=PASSWORD '')';
 
        RAISE NOTICE 'host % and dbname % ',endpoint_rec.host,database_rec.name;
		RAISE NOTICE 'Creating snapshot of pg_stat_statements for database %',database_rec.name;
		
		SELECT 
	      *
		INTO 
		  pg_stat_snapshot
	    FROM dblink('LINK1',
	      'SELECT 
	       dbid , SUM(calls),SUM(total_time),SUM(rows) ,SUM(shared_blks_hit) ,SUM(shared_blks_read) ,SUM(shared_blks_dirtied) ,SUM(shared_blks_written) , 
           SUM(local_blks_hit) , SUM(local_blks_read) , SUM(local_blks_dirtied) , SUM(local_blks_written) , SUM(temp_blks_read) , SUM(temp_blks_written) , SUM(blk_read_time) , SUM(blk_write_time)
	       FROM pg_stat_statements WHERE dbid=(SELECT oid from pg_database where datname=current_database() ) 
		   GROUP BY dbid
  	      '
	               )
	      AS t
	       ( dbid oid , calls bigint , 
  	         total_time double precision , 
	         rows bigint , shared_blks_hit bigint , shared_blks_read bigint ,shared_blks_dirtied bigint ,shared_blks_written	 bigint ,
             local_blks_hit	 bigint ,local_blks_read bigint , local_blks_dirtied bigint ,local_blks_written bigint ,
             temp_blks_read	 bigint ,temp_blks_written bigint ,
             blk_read_time double precision , blk_write_time double precision	  
	       );
		 
		INSERT INTO pg_stat_history
          ( 
		    snapshot_timestamp  ,database_id  ,
			dbid , calls  ,total_time ,
            rows ,shared_blks_hit  ,shared_blks_read  ,shared_blks_dirtied  ,shared_blks_written ,local_blks_hit , 	 	
            local_blks_read,local_blks_dirtied,local_blks_written,temp_blks_read,temp_blks_written, 	
            blk_read_time, blk_write_time 
		  )		  
	    VALUES
	      (
	       current_snapshot_timestamp ,
		   database_rec.id ,
	       pg_stat_snapshot.dbid ,pg_stat_snapshot.calls,
	       pg_stat_snapshot.total_time,
	       pg_stat_snapshot.rows ,pg_stat_snapshot.shared_blks_hit ,pg_stat_snapshot.shared_blks_read ,pg_stat_snapshot.shared_blks_dirtied ,pg_stat_snapshot.shared_blks_written , 
           pg_stat_snapshot.local_blks_hit , pg_stat_snapshot.local_blks_read , pg_stat_snapshot.local_blks_dirtied , pg_stat_snapshot.local_blks_written , 
	       pg_stat_snapshot.temp_blks_read , pg_stat_snapshot.temp_blks_written , pg_stat_snapshot.blk_read_time , pg_stat_snapshot.blk_write_time 	   
	      );		   
		  
        RAISE NOTICE 'Creating snapshot of pg_stat_statements for queries with min_time more than 1000ms';
	
        FOR pg_stat_snapshot IN
          --All queries with max_time greater than 1000 ms
	      SELECT 
	        *
	      FROM dblink('LINK1',
	        'SELECT 
	         dbid , userid ,queryid,query,calls,total_time,min_time ,max_time,mean_time, stddev_time ,rows ,shared_blks_hit ,
			 shared_blks_read ,shared_blks_dirtied ,shared_blks_written , 
             local_blks_hit , local_blks_read , local_blks_dirtied , 
			 local_blks_written , temp_blks_read , temp_blks_written , blk_read_time , 
			 blk_write_time
	         FROM pg_stat_statements 
			 WHERE dbid=(SELECT oid from pg_database where datname=current_database() AND min_time >= 1000 ) 
  	        '

	                  )
	        AS t
	         ( dbid oid , userid oid , queryid bigint ,query text , calls bigint , 
  	           total_time double precision ,min_time double precision	 ,max_time double precision	 , mean_time double precision	 ,  stddev_time double precision	 , 
	           rows bigint , shared_blks_hit bigint , shared_blks_read bigint ,shared_blks_dirtied bigint ,shared_blks_written	 bigint ,
               local_blks_hit	 bigint ,local_blks_read bigint , local_blks_dirtied bigint ,local_blks_written bigint ,
               temp_blks_read	 bigint ,temp_blks_written bigint ,
               blk_read_time double precision , blk_write_time double precision	  
	         )
	    LOOP
		  INSERT INTO pg_stat_history
          ( 
		    snapshot_timestamp  ,database_id  ,
			dbid ,userid  , queryid  , query  , calls  ,total_time ,min_time ,max_time ,mean_time ,stddev_time ,
            rows ,shared_blks_hit  ,shared_blks_read  ,shared_blks_dirtied  ,shared_blks_written ,local_blks_hit , 	 	
            local_blks_read,local_blks_dirtied,local_blks_written,temp_blks_read,temp_blks_written, 	
            blk_read_time, blk_write_time 
		  )		  
	      VALUES
	      (
	       current_snapshot_timestamp ,
		   database_rec.id ,
	       pg_stat_snapshot.dbid ,pg_stat_snapshot.userid ,pg_stat_snapshot.queryid,pg_stat_snapshot.query,pg_stat_snapshot.calls,
	       pg_stat_snapshot.total_time,pg_stat_snapshot.min_time ,pg_stat_snapshot.max_time,pg_stat_snapshot.mean_time, pg_stat_snapshot.stddev_time ,
	       pg_stat_snapshot.rows ,pg_stat_snapshot.shared_blks_hit ,pg_stat_snapshot.shared_blks_read ,pg_stat_snapshot.shared_blks_dirtied ,pg_stat_snapshot.shared_blks_written , 
           pg_stat_snapshot.local_blks_hit , pg_stat_snapshot.local_blks_read , pg_stat_snapshot.local_blks_dirtied , pg_stat_snapshot.local_blks_written , 
	       pg_stat_snapshot.temp_blks_read , pg_stat_snapshot.temp_blks_written , pg_stat_snapshot.blk_read_time , pg_stat_snapshot.blk_write_time 	   
	      );
		  
        END LOOP;

        PERFORM dblink_disconnect('LINK1');  
				
	  END LOOP ;--FOR database_rec IN SELECT * FROM database WHERE endpoint_id = endpoint_rec.id 
    
  END LOOP;

RETURN TRUE;  
END
$$ LANGUAGE plpgsql;

āĻĢāϞ⧇ āĻŸā§‡āĻŦāĻŋāϞ⧇ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϏāĻŽāϝāĻŧ āĻĒāϰ⧇ pg_stat_history āφāĻŽāĻžāĻĻ⧇āϰ āĻŸā§‡āĻŦāĻŋāϞ⧇āϰ āĻŦāĻŋāώāϝāĻŧāĻŦāĻ¸ā§āϤ⧁āϰ āĻ¸ā§āĻ¨ā§āϝāĻžāĻĒāĻļāĻŸā§‡āϰ āĻāĻ•āϟāĻŋ āϏ⧇āϟ āĻĨāĻžāĻ•āĻŦ⧇ pg_stat_statements āϞāĻ•ā§āĻˇā§āϝ āĻĄāĻžāϟāĻžāĻŦ⧇āϏāĨ¤

āφāϏāϞ⧇ āϰāĻŋāĻĒā§‹āĻ°ā§āϟāĻŋāĻ‚

āϏāĻšāϜ āĻĒā§āϰāĻļā§āύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇, āφāĻĒāύāĻŋ āĻŦ⧇āĻļ āĻĻāϰāĻ•āĻžāϰ⧀ āĻāĻŦāĻ‚ āφāĻ•āĻ°ā§āώāĻŖā§€āϝāĻŧ āĻĒā§āϰāϤāĻŋāĻŦ⧇āĻĻāύ āĻĒ⧇āϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϏāĻŽāϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āĻ¤ā§āϰāĻŋāϤ āĻĄā§‡āϟāĻž

āϤāĻĻāĻ¨ā§āϤ

SELECT 
  database_id , 
  SUM(calls) AS calls ,SUM(total_time)  AS total_time ,
  SUM(rows) AS rows , SUM(shared_blks_hit)  AS shared_blks_hit,
  SUM(shared_blks_read) AS shared_blks_read ,
  SUM(shared_blks_dirtied) AS shared_blks_dirtied,
  SUM(shared_blks_written) AS shared_blks_written , 
  SUM(local_blks_hit) AS local_blks_hit , 
  SUM(local_blks_read) AS local_blks_read , 
  SUM(local_blks_dirtied) AS local_blks_dirtied , 
  SUM(local_blks_written)  AS local_blks_written,
  SUM(temp_blks_read) AS temp_blks_read, 
  SUM(temp_blks_written) temp_blks_written , 
  SUM(blk_read_time) AS blk_read_time , 
  SUM(blk_write_time) AS blk_write_time
FROM 
  pg_stat_history
WHERE 
  queryid IS NULL AND
  database_id = DATABASE_ID  AND
  snapshot_timestamp BETWEEN BEGIN_TIMEPOINT AND END_TIMEPOINT
GROUP BY database_id ;

āĻĄāĻŋāĻŦāĻŋ āϏāĻŽāϝāĻŧ

to_char(āĻŦā§āϝāĻŦāϧāĻžāύ '1 āĻŽāĻŋāϞāĻŋāϏ⧇āϕ⧇āĻ¨ā§āĻĄ' * pg_total_stat_history_rec.total_time, 'HH24:MI:SS.MS')

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
-------------------------------------------------- -------------------------------------------------- | āĻŽā§‹āϟ āĻāĻ•ā§āϏāĻŋāĻ•āĻŋāωāĻļāύ āϏāĻŽāϝāĻŧ āĻĻā§āĻŦāĻžāϰāĻž āϏ⧇āϰāĻž 10 SQL | #| queryid| āĻ•āϞ | āĻ•āϞ %| āĻŽā§‹āϟ_āϏāĻŽāϝāĻŧ (āĻāĻŽāĻāϏ) | dbtime % +------+------------+------------+----------+------ --------------------+------------ | 1| 821760255| 2| .00001|00:03:23.141( 203141.681 ms.)| 5.42 | 2| 4152624390| 2| .00001|00:03:13.929( 193929.215 ms.)| 5.17 | 3| 1484454471| 4| .00001|00:02:09.129( 129129.057 ms.)| 3.44 | 4| 655729273| 1| .00000|00:02:01.869( 121869.981 ms.)| 3.25 | 5| 2460318461| 1| .00000|00:01:33.113( 93113.835 ms.)| 2.48 | 6| 2194493487| 4| .00001|00:00:17.377( 17377.868 ms.)| .46 | 7| 1053044345| 1| .00000|00:00:06.156( 6156.352 ms.)| .16 | 8| 3644780286| 1| .00000|00:00:01.063( 1063.830 ms.)| .03

āĻŽā§‹āϟ 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

āϏāĻ°ā§āĻŦā§‹āĻšā§āϚ 10 āĻāϏāĻ•āĻŋāωāĻāϞ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ

āϤāĻĻāĻ¨ā§āϤ

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 | #| āĻ¸ā§āĻ¨ā§āϝāĻžāĻĒāĻļāϟ| āĻ¸ā§āĻ¨ā§āϝāĻžāĻĒāĻļāϟāφāχāĻĄāĻŋ| queryid| max_time (ms) +------+-------------------+------------+--------- -------------------------------------------- | 1| 05.04.2019/01/03 4169:655729273| 00| 02| 01.869:121869.981:2( 04.04.2019 ms.) | 17| 00/4153/821760255 00:01| 41.570| 101570.841| 3:04.04.2019:16( 00 ms.) | 4146| 821760255/00/01 41.570:101570.841| 4| 04.04.2019| 16:00:4144( 4152624390 ms.) | 00| 01/36.964/96964.607 5:04.04.2019| 17| 00| 4151:4152624390:00( 01 ms.) | 36.964| 96964.607/6/05.04.2019 10:00| 4188| 1484454471| 00:01:33.452( 93452.150 ms.) | 7| 04.04.2019/17/00 4150:2460318461 | 00| 01| 33.113:93113.835:8( 04.04.2019 ms.) | 15| 00/4140/1484454471 00:00| 11.892| 11892.302| 9:04.04.2019:16( 00 ms.) | 4145| 1484454471/00/00 11.892:11892.302| 10| 04.04.2019| 17:00:4152(1484454471 ms.) | 00| 00/11.892/11892.302 XNUMX:XNUMX| XNUMX| XNUMX| XNUMX:XNUMX:XNUMX(XNUMX ms.) | XNUMX| XNUMX/XNUMX/XNUMX XNUMX:XNUMX| XNUMX| XNUMX| XNUMX:XNUMX:XNUMX (XNUMX ms.)

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 āϰāĻŋāĻĄ/āϰāĻžāχāϟ | #| āĻ¸ā§āĻ¨ā§āϝāĻžāĻĒāĻļāϟ| āĻ¸ā§āĻ¨ā§āϝāĻžāĻĒāĻļāϟāφāχāĻĄāĻŋ| 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 | āĻŽāĻŋāύāĻŋāϟ āϏāĻŽāϝāĻŧ : 00:00:01.063 | āϏāĻ°ā§āĻŦā§‹āĻšā§āϚ āϏāĻŽāϝāĻŧ : 00:02:01.869 ----------------------------------------------------- ----------------------------------------- | āĻ¨ā§āϝ⧂āύāϤāĻŽ āϏāĻŽāϝāĻŧāĻ•āĻžāϞ| āϏāĻ°ā§āĻŦā§‹āĻšā§āϚ āϏāĻŽāϝāĻŧāĻ•āĻžāϞ| āĻ•āϞ āĻ•āϰ⧇ +---------------------------------- ---------------------+------------ | 00:00:01.063( 1063.830 ms.) | 00:00:13.144( 13144.445 ms.) | 9 | 00:00:13.144( 13144.445 ms.) | 00:00:25.225( 25225.060 ms.) | 0 | 00:00:25.225( 25225.060 ms.) | 00:00:37.305( 37305.675 ms.) | 0 | 00:00:37.305( 37305.675 ms.) | 00:00:49.386( 49386.290 ms.) | 0 | 00:00:49.386( 49386.290 ms.) | 00:01:01.466( 61466.906 ms.) | 0 | 00:01:01.466( 61466.906 ms.) | 00:01:13.547( 73547.521 ms.) | 0 | 00:01:13.547( 73547.521 ms.) | 00:01:25.628( 85628.136 ms.) | 0 | 00:01:25.628( 85628.136 ms.) | 00:01:37.708( 97708.751 ms.) | 4 | 00:01:37.708( 97708.751 ms.) | 00:01:49.789( 109789.366 ms.) | 2 | 00:01:49.789( 109789.366 ms.) | 00:02:01.869( 121869.981 ms.) | 0

āĻĒā§āϰāϤāĻŋ āϏ⧇āϕ⧇āĻ¨ā§āĻĄā§‡ āĻ•ā§āϝ⧋āϝāĻŧāĻžāϰ⧀ āĻĻā§āĻŦāĻžāϰāĻž TOP10 āĻ¸ā§āĻ¨ā§āϝāĻžāĻĒāĻļāϟ

āĻ…āύ⧁āϰ⧋āϧ

--pg_qps.sql
--Calculate Query Per Second 
CREATE OR REPLACE FUNCTION pg_qps( pg_stat_history_id integer ) RETURNS double precision AS $$
DECLARE
 pg_stat_history_rec record ;
 prev_pg_stat_history_id integer ;
 prev_pg_stat_history_rec record;
 total_seconds double precision ;
 result double precision;
BEGIN 
  result = 0 ;
  
  SELECT *
  INTO pg_stat_history_rec
  FROM 
    pg_stat_history
  WHERE id = pg_stat_history_id ;

  IF pg_stat_history_rec.snapshot_timestamp IS NULL 
  THEN
    RAISE EXCEPTION 'ERROR - Not found pg_stat_history for id = %',pg_stat_history_id;
  END IF ;  
  
 --RAISE NOTICE 'pg_stat_history_id = % , snapshot_timestamp = %', pg_stat_history_id , 
 pg_stat_history_rec.snapshot_timestamp ;
  
  SELECT 
    MAX(id)   
  INTO
    prev_pg_stat_history_id
  FROM
    pg_stat_history
  WHERE 
    database_id = pg_stat_history_rec.database_id AND
	queryid IS NULL AND
	id < pg_stat_history_rec.id ;

  IF prev_pg_stat_history_id IS NULL 
  THEN
    RAISE NOTICE 'Not found previous pg_stat_history shapshot for id = %',pg_stat_history_id;
	RETURN NULL ;
  END IF;
  
  SELECT *
  INTO prev_pg_stat_history_rec
  FROM 
    pg_stat_history
  WHERE id = prev_pg_stat_history_id ;
  
  --RAISE NOTICE 'prev_pg_stat_history_id = % , prev_snapshot_timestamp = %', prev_pg_stat_history_id , prev_pg_stat_history_rec.snapshot_timestamp ;    

  total_seconds = extract(epoch from ( pg_stat_history_rec.snapshot_timestamp - prev_pg_stat_history_rec.snapshot_timestamp ));
  
  --RAISE NOTICE 'total_seconds = % ', total_seconds ;    
  
  --RAISE NOTICE 'calls = % ', pg_stat_history_rec.calls ;      
  
  IF total_seconds > 0 
  THEN
    result = pg_stat_history_rec.calls / total_seconds ;
  ELSE
   result = 0 ; 
  END IF;
   
 RETURN result ;
END
$$ LANGUAGE plpgsql;


SELECT 
  id , 
  snapshot_timestamp ,
  calls , 	
  total_time , 
  ( select pg_qps( id )) AS QPS ,
  blk_read_time ,
  blk_write_time
FROM 
  pg_stat_history
WHERE 
  queryid IS NULL AND 
  database_id = DATABASE_ID  AND
  snapshot_timestamp BETWEEN BEGIN_TIMEPOINT AND END_TIMEPOINT AND
  ( select pg_qps( id )) IS NOT NULL 
ORDER BY 5 DESC 
LIMIT 10
|------------------------------------------------ ---------------------------------------- | QueryPerSeconds āϏāĻ‚āĻ–ā§āϝāĻž āĻĻā§āĻŦāĻžāϰāĻž āφāĻĻ⧇āĻļāĻ•ā§ƒāϤ āϏ⧇āϰāĻž 10 āĻ¸ā§āĻ¨ā§āϝāĻžāĻĒāĻļāϟ --------------------------------------------------------- ------------------------------------------------------------------------- -------------------------------------------------------- | #| āĻ¸ā§āĻ¨ā§āϝāĻžāĻĒāĻļāϟ| āĻ¸ā§āĻ¨ā§āϝāĻžāĻĒāĻļāϟāφāχāĻĄāĻŋ| āĻ•āϞ | āĻŽā§‹āϟ āĻĄāĻŋāĻŦāĻŋāϟāĻžāχāĻŽ| 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

āĻĢāϞāĻžāĻĢāϞ

āφāĻĒāύāĻŋ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāĻšā§āϛ⧇āύ, āĻŽā§‹āϟāĻžāĻŽā§āϟāĻŋ āϏāĻšāϜ āωāĻĒāĻžāϝāĻŧ⧇, āφāĻĒāύāĻŋ āĻ•āĻžāĻœā§‡āϰ āϚāĻžāĻĒ āĻāĻŦāĻ‚ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ⧇āϰ āĻ…āĻŦāĻ¸ā§āĻĨāĻž āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻ…āύ⧇āĻ• āĻĻāϰāĻ•āĻžāϰ⧀ āϤāĻĨā§āϝ āĻĒ⧇āϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

āĻŦāĻŋāσāĻĻā§āϰāσ:āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻ•ā§āϝ⧋āϝāĻŧāĻžāϰ⧀āϤ⧇ queryid āĻ āĻŋāĻ• āĻ•āϰ⧇āύ, āϤāĻžāĻšāϞ⧇ āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ āĻĒ⧃āĻĨāĻ• āĻ…āύ⧁āϰ⧋āϧ⧇āϰ āχāϤāĻŋāĻšāĻžāϏ āĻĒāĻžāĻŦ (āĻ¸ā§āĻĨāĻžāύ āĻŦāĻžāρāϚāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ, āĻāĻ•āϟāĻŋ āĻĒ⧃āĻĨāĻ• āĻ…āύ⧁āϰ⧋āϧ⧇āϰ āĻĒā§āϰāϤāĻŋāĻŦ⧇āĻĻāύ āĻŦāĻžāĻĻ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāϝāĻŧ)āĨ¤

āϏ⧁āϤāϰāĻžāĻ‚, āϕ⧋āϝāĻŧ⧇āϰāĻŋ āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāĻ¨ā§āϏ⧇āϰ āĻĒāϰāĻŋāϏāĻ‚āĻ–ā§āϝāĻžāύāĻ—āϤ āĻĄā§‡āϟāĻž āĻĒāĻžāĻ“āϝāĻŧāĻž āϝāĻžāϝāĻŧ āĻāĻŦāĻ‚ āϏāĻ‚āĻ—ā§āϰāĻš āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤
āĻĒā§āϰāĻĨāĻŽ āĻĒāĻ°ā§āϝāĻžāϝāĻŧ⧇ "āĻĒāϰāĻŋāϏāĻ‚āĻ–ā§āϝāĻžāύāĻ—āϤ āϤāĻĨā§āϝ āϏāĻ‚āĻ—ā§āϰāĻš" āϏāĻŽā§āĻĒāĻ¨ā§āύ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤

āφāĻĒāύāĻŋ āĻĻā§āĻŦāĻŋāϤ⧀āϝāĻŧ āĻĒāĻ°ā§āϝāĻžāϝāĻŧ⧇ āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āύ - "āĻ•āĻ°ā§āĻŽāĻ•ā§āώāĻŽāϤāĻž āĻŽā§‡āĻŸā§āϰāĻŋāĻ•ā§āϏ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻž"āĨ¤
PostgreSQL āĻĒā§āϰāĻļā§āύ⧇āϰ āĻ•āĻ°ā§āĻŽāĻ•ā§āώāĻŽāϤāĻž āύāĻŋāϰ⧀āĻ•ā§āώāĻŖāĨ¤ āĻĒāĻžāĻ°ā§āϟ 1 - āϰāĻŋāĻĒā§‹āĻ°ā§āϟāĻŋāĻ‚

āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻāϟāĻž āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ­āĻŋāĻ¨ā§āύ āĻ—āĻ˛ā§āĻĒāĨ¤

āϚāϞāĻŦ⧇â€Ļ

āωāĻ¤ā§āϏ: www.habr.com

DDoS āϏ⧁āϰāĻ•ā§āώāĻž, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϏāĻš āϏāĻžāχāϟāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ đŸ”Ĩ DDoS āϏ⧁āϰāĻ•ā§āώāĻž āϏāĻš āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻ“āϝāĻŧ⧇āĻŦāϏāĻžāχāϟ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ | ProHoster