PostgreSQL рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рдкреНрд░рджрд░реНрд╢рди рдирд┐рдЧрд░рд╛рдиреАред рднрд╛рдЧ 1 - рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ

рдЗрдВрдЬреАрдирд┐рдпрд░ - рд▓реИрдЯрд┐рди рд╕реЗ рдЕрдиреБрд╡рд╛рджрд┐рдд - рдкреНрд░реЗрд░рд┐рддред
рдПрдХ рдЗрдВрдЬреАрдирд┐рдпрд░ рдХреБрдЫ рднреА рдХрд░ рд╕рдХрддрд╛ рд╣реИ. (рд╕реА) рдЖрд░. рдбреАрдЬрд▓.
рдкреБрд░рд╛рд▓реЗрдЦред
PostgreSQL рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рдкреНрд░рджрд░реНрд╢рди рдирд┐рдЧрд░рд╛рдиреАред рднрд╛рдЧ 1 - рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ
рдпрд╛ рдПрдХ рдХрд╣рд╛рдиреА рдХрд┐ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рд╢рд╛рд╕рдХ рдХреЛ рдЕрдкрдиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЕрддреАрдд рдХреЛ рдпрд╛рдж рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИред

рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛

рд╕рд╛рд░реЗ рдирд╛рдо рдмрджрд▓ рджрд┐рдП рдЧрдП рд╣реИрдВ. рдорд┐рд▓рд╛рди рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╣реИрдВ. рд╕рд╛рдордЧреНрд░реА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓реЗрдЦрдХ рдХреА рдирд┐рдЬреА рд░рд╛рдп рд╣реИред

рд╡рд╛рд░рдВрдЯрд┐рдпреЛрдВ рдХрд╛ рдЕрд╕реНрд╡реАрдХрд░рдг: рд▓реЗрдЦреЛрдВ рдХреА рдирд┐рдпреЛрдЬрд┐рдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдФрд░ рд▓рд┐рдкрд┐рдпреЛрдВ рдХрд╛ рдХреЛрдИ рд╡рд┐рд╕реНрддреГрдд рдФрд░ рд╕рдЯреАрдХ рд╡рд┐рд╡рд░рдг рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХрд╛ рддреБрд░рдВрдд "рдЬреИрд╕рд╛ рд╣реИ" рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕рд╛рдордЧреНрд░реА рдХреА рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдХреЗ рдХрд╛рд░рдг,
рджреВрд╕рд░реЗ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдЙрддреНрдкрд╛рджрди рдЖрдзрд╛рд░ рдХреЗ рд╕рд╛рде рддреАрдХреНрд╖реНрдгрддрд╛ рдХреЗ рдХрд╛рд░рдгред
рдЗрд╕рд▓рд┐рдП, рд▓реЗрдЦреЛрдВ рдореЗрдВ рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдФрд░ рд╡рд┐рд╡рд░рдг рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗред
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо GitHub рдкрд░ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд╕реНрддрд░ рддрдХ рдмрдврд╝ рдЬрд╛рдП, рдпрд╛ рд╢рд╛рдпрдж рдирд╣реАрдВред рд╕рдордп рджрд┐рдЦрд╛рдПрдЧрд╛ред

рдХрд╣рд╛рдиреА рдХреА рд╢реБрд░реБрдЖрдд-рдХреНрдпрд╛ рдЖрдкрдХреЛ рдпрд╛рдж рд╣реИ рдХрд┐ рдпрд╣ рд╕рдм рдХреИрд╕реЗ рд╢реБрд░реВ рд╣реБрдЖ?'.
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдХреНрдпрд╛ рд╣реБрдЖ, рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджреЛрдВ рдореЗрдВ - "PostgreSQL рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрд╢реНрд▓реЗрд╖рдг┬╗

рдореБрдЭреЗ рдпрд╣ рд╕рдм рдХреНрдпреЛрдВ рдЪрд╛рд╣рд┐рдП?

рдареАрдХ рд╣реИ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕реЗрд╡рд╛рдирд┐рд╡реГрддреНрддрд┐ рдХреЗ рдЧреМрд░рд╡рд╢рд╛рд▓реА рджрд┐рдиреЛрдВ рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реБрдП, рдЕрдкрдиреЗ рдЖрдк рдХреЛ рди рднреВрд▓реЗрдВред
рджреВрд╕рд░реЗ, рдЬреЛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдЙрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ред рдкрд╣рд▓реЗ рд╕реЗ рд╣реА, рдореИрдВ рдХрднреА-рдХрднреА рднреНрд░рдорд┐рдд рд╣реЛрдиреЗ рд▓рдЧрддрд╛ рд╣реВрдВ рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рднреВрд▓ рдЬрд╛рддрд╛ рд╣реВрдВред

рдЦреИрд░, рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд - рдЕрдЪрд╛рдирдХ рдпрд╣ рдХрд┐рд╕реА рдХреЗ рдХрд╛рдо рдЖ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдкрд╣рд┐рдпреЗ рдХреЛ рджреЛрдмрд╛рд░рд╛ рди рдмрдирд╛рдиреЗ рдФрд░ рд░реЗрдХ рдЗрдХрдЯреНрдард╛ рди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЕрдкрдиреЗ рдХрд░реНрдо рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░реЗрдВ (рдЦрдмрд░реЛрд╡рд╕реНрдХреА рдирд╣реАрдВ)ред рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╕рдмрд╕реЗ рдореВрд▓реНрдпрд╡рд╛рди рдЪреАрдЬрд╝ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВред рдореБрдЦреНрдп рдмрд╛рдд рдПрдХ рд╡рд┐рдЪрд╛рд░ рдЦреЛрдЬрдирд╛ рд╣реИред рдФрд░ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╡рд┐рд╢реБрджреНрдз рддрдХрдиреАрдХреА рдореБрджреНрджрд╛ рд╣реИред

рддреЛ рдЪрд▓рд┐рдП рдзреАрд░реЗ-рдзреАрд░реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ...

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдирд┐рд░реВрдкрдг.

рдЙрдкрд▓рдмреНрдз:

PostgreSQL(10.5), рдорд┐рд╢реНрд░рд┐рдд рднрд╛рд░ (OLTP+DSS), рдордзреНрдпрдо рд╕реЗ рд╣рд▓реНрдХрд╛ рднрд╛рд░, AWS рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рд╣реЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ред
рдХреЛрдИ рдбреЗрдЯрд╛рдмреЗрд╕ рдирд┐рдЧрд░рд╛рдиреА рдирд╣реАрдВ рд╣реИ, рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЛ рдиреНрдпреВрдирддрдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдорд╛рдирдХ AWS рдЙрдкрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЖрд╡рд╢реНрдпрдХ рд╣реИ:

рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд╕реНрдерд┐рддрд┐ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░реЗрдВ, рднрд╛рд░реА рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдвреВрдВрдвреЗрдВ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдкрд░рд┐рдЪрдп рдпрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг

рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдЗрдВрдЬреАрдирд┐рдпрд░ рдХреЗ рд▓рд┐рдП рд▓рд╛рднреЛрдВ рдФрд░ рдкрд░реЗрд╢рд╛рдирд┐рдпреЛрдВ рдХреЗ рддреБрд▓рдирд╛рддреНрдордХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдФрд░ рдЬрд┐рдиреНрд╣реЗрдВ рдХрд░реНрдордЪрд╛рд░реА рд╕реВрдЪреА рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЙрдиреНрд╣реЗрдВ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд╛рдн рдФрд░ рд╣рд╛рдирд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рджреЗрдВред

рд╡рд┐рдХрд▓реНрдк 1 - "рдорд╛рдБрдЧ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛"

рд╣рдо рд╕рдм рдХреБрдЫ рд╡реИрд╕рд╛ рд╣реА рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ рдЬреИрд╕рд╛ рд╡рд╣ рд╣реИред рдпрджрд┐ рдЧреНрд░рд╛рд╣рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕реНрд╡рд╛рд╕реНрдереНрдп, рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╡рд╣ рдбреАрдмреАрдП рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдХреЛ рдИ-рдореЗрд▓ рджреНрд╡рд╛рд░рд╛ рдпрд╛ рдЯрд┐рдХрдЯ рдмреЙрдХреНрд╕ рдореЗрдВ рдПрдХ рдШрдЯрдирд╛ рдмрдирд╛рдХрд░ рд╕реВрдЪрд┐рдд рдХрд░реЗрдЧрд╛ред
рдПрдХ рдЗрдВрдЬреАрдирд┐рдпрд░, рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдордЭреЗрдЧрд╛, рд╕рдорд╛рдзрд╛рди рдкреЗрд╢ рдХрд░реЗрдЧрд╛, рдпрд╛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЯрд╛рд▓ рджреЗрдЧрд╛, рдпрд╣ рдЖрд╢рд╛ рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рд╕рдм рдХреБрдЫ рдЕрдкрдиреЗ рдЖрдк рд╣рд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рд╡реИрд╕реЗ рднреА, рд╕рдм рдХреБрдЫ рдЬрд▓реНрдж рд╣реА рднреБрд▓рд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЬрд┐рдВрдЬрд░рдмреНрд░реЗрдб рдФрд░ рдбреЛрдирдЯреНрд╕, рдЪреЛрдЯ рдФрд░ рдЙрднрд╛рд░рдЬрд┐рдВрдЬрд░рдмреНрд░реЗрдб рдФрд░ рдбреЛрдирдЯреНрд╕:
1. рдХрд░рдиреЗ рдХреЛ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдирд╣реАрдВ
2. рд╣рдореЗрд╢рд╛ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдФрд░ рдЧрдВрджрд╛ рд╣реЛрдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдорд┐рд▓рддрд╛ рд╣реИред
3. рдмрд╣реБрдд рд╕рд╛ рд╕рдордп рдЬреЛ рдЖрдк рд╕реНрд╡рдпрдВ рдкрд░ рд╡реНрдпрддреАрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЪреЛрдЯ рдФрд░ рдЙрднрд╛рд░:
1. рджреЗрд░-рд╕рдмреЗрд░, рдЧреНрд░рд╛рд╣рдХ рдЗрд╕ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рд╕рд╛рд░ рдФрд░ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдиреНрдпрд╛рдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдЧрд╛ рдФрд░ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдЦреБрдж рд╕реЗ рд╕рд╡рд╛рд▓ рдкреВрдЫреЗрдЧрд╛ - рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдкреИрд╕реЗ рдХреНрдпреЛрдВ рджреЗ рд░рд╣рд╛ рд╣реВрдВ? рдкрд░рд┐рдгрд╛рдо рд╣рдореЗрд╢рд╛ рдПрдХ рд╣реА рд╣реЛрддрд╛ рд╣реИ - рдПрдХрдорд╛рддреНрд░ рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдЧреНрд░рд╛рд╣рдХ рдХрдм рдКрдм рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрд▓рд╡рд┐рджрд╛ рдХрд╣ рджреЗрддрд╛ рд╣реИред рдФрд░ рдлреАрдбрд░ рдЦрд╛рд▓реА рд╣реИ. рдпрд╣ рджреБрдЦ рдХреА рдмрд╛рдд рд╣реИред
2. рдПрдХ рдЗрдВрдЬреАрдирд┐рдпрд░ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рд╢реВрдиреНрдп рд╣реЛрддрд╛ рд╣реИ.
3. рдХрд╛рд░реНрдп рд╢реЗрдбреНрдпреВрд▓ рдХрд░рдиреЗ рдФрд░ рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рдХрдард┐рдирд╛рдЗрдпрд╛рдБ

рд╡рд┐рдХрд▓реНрдк 2 - "рдбрдл рдХреЗ рд╕рд╛рде рдиреГрддреНрдп рдХрд░реЗрдВ, рдЬреВрддреЗ рдкрд╣рдиреЗрдВ рдФрд░ рдкрд╣рдиреЗрдВ"

рдкрд░рд┐рдЪреНрдЫреЗрдж 1-рд╣рдореЗрдВ рдирд┐рдЧрд░рд╛рдиреА рдкреНрд░рдгрд╛рд▓реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ, рд╣рдо рд╕рднреА рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред рд╣рдо рдбреЗрдЯрд╛ рд╢рдмреНрджрдХреЛрд╢ рдФрд░ рдЧрддрд┐рд╢реАрд▓ рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдХреНрд╡реЗрд░реАрдЬрд╝ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ, рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рдЙрдВрдЯрд░реЛрдВ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рддреЗ рд╣реИрдВ, рд╕рдм рдХреБрдЫ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рд▓рд╛рддреЗ рд╣реИрдВ, рд╕рдордп-рд╕рдордп рдкрд░ рд╕реВрдЪрд┐рдпреЛрдВ рдФрд░ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╣реИрдВред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕реБрдВрджрд░ рдпрд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рдЧреНрд░рд╛рдлрд╝, рддрд╛рд▓рд┐рдХрд╛рдПрдБ, рд░рд┐рдкреЛрд░реНрдЯреЗрдВ рдирд╣реАрдВ рд╣реИрдВред рдореБрдЦреНрдп рдмрд╛рдд - рд╡рд╣ рдЕрдзрд┐рдХ, рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛.
рдкрд░рд┐рдЪреНрдЫреЗрдж 2-рдЧрддрд┐рд╡рд┐рдзрд┐ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ-рдЗрд╕ рд╕рдмрдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЪрд▓рд╛рдПрдБред
рдкрд░рд┐рдЪреНрдЫреЗрдж 3-рд╣рдо рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рддреИрдпрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╣рдо рдЗрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд╕рд░рд▓ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдХрд╣рддреЗ рд╣реИрдВ - "рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдХреИрд╕реЗ рд╕реБрд╕рдЬреНрдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВред"
рдкрд░рд┐рдЪреНрдЫреЗрдж 4- рдЧреНрд░рд╛рд╣рдХ, рдЧреНрд░рд╛рдлрд╝ рдФрд░ рдЖрдВрдХрдбрд╝реЛрдВ рдХреА рдпрд╣ рд╕рд╛рд░реА рднрд╡реНрдпрддрд╛ рджреЗрдЦрдХрд░, рдПрдХ рдмрдЪрдХрд╛рдиреЗ рднреЛрд▓реЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдореЗрдВ рд╣реИ - рдЕрдм рд╕рдм рдХреБрдЫ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЬрд▓реНрдж рд╣реА рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдФрд░, рдЖрд╕рд╛рдиреА рд╕реЗ рдФрд░ рджрд░реНрдж рд░рд╣рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдЕрдкрдиреЗ рд╡рд┐рддреНрддреАрдп рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕реЗ рдЕрд▓рдЧ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдкреНрд░рдмрдВрдзрди рдХреЛ рднреА рдпрдХреАрди рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдЗрдВрдЬреАрдирд┐рдпрд░ рдХрдбрд╝реА рдореЗрд╣рдирдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЕрдзрд┐рдХрддрдо рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ.
рдкрд░рд┐рдЪреНрдЫреЗрдж 5- рдЪрд░рдг 1 рдХреЛ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рджреЛрд╣рд░рд╛рдПрдБред
рдЬрд┐рдВрдЬрд░рдмреНрд░реЗрдб рдФрд░ рдбреЛрдирдЯреНрд╕, рдЪреЛрдЯ рдФрд░ рдЙрднрд╛рд░рдЬрд┐рдВрдЬрд░рдмреНрд░реЗрдб рдФрд░ рдбреЛрдирдЯреНрд╕:
1. рдкреНрд░рдмрдВрдзрдХреЛрдВ рдФрд░ рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдХрд╛ рдЬреАрд╡рди рд╕рд░рд▓, рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рдирд┐рдд рдФрд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рд╕реЗ рднрд░рд╛ рд╣реЛрддрд╛ рд╣реИред рд╕рдм рдХреБрдЫ рдЧреБрд▓рдЬрд╛рд░ рд╣реИ, рд╣рд░ рдХреЛрдИ рд╡реНрдпрд╕реНрдд рд╣реИред
2. рдЧреНрд░рд╛рд╣рдХ рдХрд╛ рдЬреАрд╡рди рднреА рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИ - рдЙрд╕реЗ рд╣рдореЗрд╢рд╛ рдпрдХреАрди рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдереЛрдбрд╝рд╛ рдзреИрд░реНрдп рд░рдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдФрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдареАрдХ рд╣реИ, рдареАрдХ рд╣реИ - рдпрд╣ рджреБрдирд┐рдпрд╛ рдЕрдиреБрдЪрд┐рдд рд╣реИ, рдЕрдЧрд▓реЗ рдЬреАрд╡рди рдореЗрдВ - рдЖрдк рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рд╣реЛрдВрдЧреЗред
рдЪреЛрдЯ рдФрд░ рдЙрднрд╛рд░:
1. рджреЗрд░-рд╕рдмреЗрд░, рдРрд╕реА рд╣реА рд╕реЗрд╡рд╛ рдХрд╛ рдПрдХ рд╣реЛрд╢рд┐рдпрд╛рд░ рдкреНрд░рджрд╛рддрд╛ рд╣реЛрдЧрд╛ рдЬреЛ рд╡рд╣реА рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдереЛрдбрд╝рд╛ рд╕рд╕реНрддрд╛ред рдФрд░ рдпрджрд┐ рдкрд░рд┐рдгрд╛рдо рд╕рдорд╛рди рд╣реИ, рддреЛ рдЕрдзрд┐рдХ рднреБрдЧрддрд╛рди рдХреНрдпреЛрдВ рдХрд░реЗрдВред рдЬрд┐рд╕рд╕реЗ рдлрд┐рд░ рд╕реЗ рдлреАрдбрд░ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
2. рдпрд╣ рдЙрдмрд╛рдК рд╣реИ. рдХреЛрдИ рднреА рдЫреЛрдЯреА рд╕рд╛рд░реНрдердХ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХрд┐рддрдиреА рдЙрдмрд╛рдК рд╣реИред
3. рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рддрд░рд╣ - рдХреЛрдИ рд╡рд┐рдХрд╛рд╕ рдирд╣реАрдВред рд▓реЗрдХрд┐рди рдПрдХ рдЗрдВрдЬреАрдирд┐рдпрд░ рдХреЗ рд▓рд┐рдП рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖ рдпрд╣ рд╣реИ рдХрд┐, рдкрд╣рд▓реЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдПрдХ рдЖрдИрдбреАрдмреА рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдФрд░ рдЗрд╕рдореЗрдВ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ. рдЬрд┐рд╕реЗ рдЖрдк рдЕрдкрдиреЗ рдкреНрд░рд┐рдпрдЬрди рдХреА рднрд▓рд╛рдИ рдХреЗ рд▓рд┐рдП рдЦрд░реНрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдЕрдкрдирд╛ рдЦреНрдпрд╛рд▓ рдирд╣реАрдВ рд░рдЦ рд╕рдХрддреЗ, рд╣рд░ рдХреЛрдИ рдЖрдкрдХреА рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИред

рд╡рд┐рдХрд▓реНрдк 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 рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдФрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдФрд░ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдмрдирд╛рддреЗ рд╣реИрдВред
  • рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рд╣реЛрд╕реНрдЯ рдкрд░, рд╣рдо рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЯрд┐рдХрдЯ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдШрдЯрдирд╛рдПрдВ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рд╕реЗрд╡рд╛ рддрд╛рд▓рд┐рдХрд╛рдПрдБ

рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдпреЛрдЬрдирд╛рдмрджреНрдз рд░реВрдк рд╕реЗ рд╕рд░рд▓реАрдХреГрдд рдИрдЖрд░рдбреА, рдЕрдВрдд рдореЗрдВ рдХреНрдпрд╛ рд╣реБрдЖ:
PostgreSQL рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рдкреНрд░рджрд░реНрд╢рди рдирд┐рдЧрд░рд╛рдиреАред рднрд╛рдЧ 1 - рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ
рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдгрд╕рдорд╛рдкрди рдмрд┐рдВрджреБ - рд╣реЛрд╕реНрдЯ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди рдмрд┐рдВрджреБ
рдбреЗрдЯрд╛рдмреЗрд╕ - рдбреЗрдЯрд╛рдмреЗрд╕ рд╡рд┐рдХрд▓реНрдк
pg_stat_рдЗрддрд┐рд╣рд╛рд╕ - рд▓рдХреНрд╖реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ pg_stat_statements рджреГрд╢реНрдп рдХреЗ рдЕрд╕реНрдерд╛рдпреА рд╕реНрдиреИрдкрд╢реЙрдЯ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рддрд╛рд▓рд┐рдХрд╛
рдореАрдЯреНрд░рд┐рдХ_рд╢рдмреНрджрд╛рд╡рд▓реА - рдкреНрд░рджрд░реНрд╢рди рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рд╢рдмреНрджрдХреЛрд╢
metric_config - рд╡реНрдпрдХреНрддрд┐рдЧрдд рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рд╡рд┐рдиреНрдпрд╛рд╕
рдореАрдЯреНрд░рд┐рдХ - рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореАрдЯреНрд░рд┐рдХ рдЬрд┐рд╕рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ
рдореЗрдЯреНрд░рд┐рдХ_рдЕрд▓рд░реНрдЯ_рдЗрддрд┐рд╣рд╛рд╕ - рдкреНрд░рджрд░реНрд╢рди рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕
рд▓реЙрдЧ_рдХреНрд╡реЗрд░реА - AWS рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ PostgreSQL рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд┐рдП рдЧрдП рд░рд┐рдХреЙрд░реНрдб рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛ рддрд╛рд▓рд┐рдХрд╛
рдЖрдзрд╛рд░рднреВрдд - рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рдордп рдЕрд╡рдзрд┐ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░
рдЬрд╛рдВрдЪ рдХреА рдЪреМрдХреА - рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рд╡рд┐рдиреНрдпрд╛рд╕
рдЪреЗрдХрдкреНрд╡рд╛рдЗрдВрдЯ_рдЕрд▓рд░реНрдЯ_рдЗрддрд┐рд╣рд╛рд╕ - рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдерд┐рддрд┐ рдЬрд╛рдВрдЪ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рдЪреЗрддрд╛рд╡рдиреА рдЗрддрд┐рд╣рд╛рд╕
pg_stat_db_queries - рд╕рдХреНрд░рд┐рдп рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕реЗрд╡рд╛ рддрд╛рд▓рд┐рдХрд╛
рдЧрддрд┐рд╡рд┐рдзрд┐ рд▓реЙрдЧ - рдЧрддрд┐рд╡рд┐рдзрд┐ рд▓реЙрдЧ рд╕реЗрд╡рд╛ рддрд╛рд▓рд┐рдХрд╛
рдЯреНрд░реИрдк_реЙрдЗрдб - рдЯреНрд░реИрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗрд╡рд╛ рддрд╛рд▓рд┐рдХрд╛

рдЪрд░рдг 1 - рдкреНрд░рджрд░реНрд╢рди рдЖрдБрдХрдбрд╝реЗ рдПрдХрддреНрд░ рдХрд░реЗрдВ рдФрд░ рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред pg_stat_рдЗрддрд┐рд╣рд╛рд╕
pg_stat_history рддрд╛рд▓рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛

                                          рддрд╛рд▓рд┐рдХрд╛ "public.pg_stat_history" рдХреЙрд▓рдо | рдкреНрд░рдХрд╛рд░ | рд╕рдВрд╢реЛрдзрдХ ------------------+--------------------------------+---------------------------------------------------------------- рдЖрдИрдбреА | рдкреВрд░реНрдгрд╛рдВрдХ | рд╢реВрдиреНрдп рдирд╣реАрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЕрдЧрд▓рд╛рд╡рд▓('pg_stat_history_id_seq'::regclass) рд╕реНрдиреИрдкрд╢реЙрдЯ_рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк | рдЯрд╛рдЗрдордЬрд╝реЛрди рдХреЗ рдмрд┐рдирд╛ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк | рдбреЗрдЯрд╛рдмреЗрд╕_рдЖрдИрдбреА | рдкреВрд░реНрдгрд╛рдВрдХ | рдбреАрдмреАрдЖрдИрдбреА тАЛтАЛ| рдУрдЗрдб | рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА | рдУрдЗрдб | рдХреНрд╡реЗрд░реАрдЖрдИрдбреА тАЛтАЛ| рдмрд┐рдЧрд┐рдВрдЯ | рдкреНрд░рд╢реНрди | рдкрд╛рда | рдХреЙрд▓ | рдмрд┐рдЧрд┐рдВрдЯ | рдХреБрд▓_рд╕рдордп | рджреЛрд╣рд░реА рдкрд░рд┐рд╢реБрджреНрдзрддрд╛ | рдорд┐рдирдЯ_рд╕рдордп | рджреЛрд╣рд░реА рдкрд░рд┐рд╢реБрджреНрдзрддрд╛ | рдЕрдзрд┐рдХрддрдо_рд╕рдордп | рджреЛрд╣рд░реА рдкрд░рд┐рд╢реБрджреНрдзрддрд╛ | рдорд╛рдзреНрдп_рд╕рдордп | рджреЛрд╣рд░реА рдкрд░рд┐рд╢реБрджреНрдзрддрд╛ | stddev_time | рджреЛрд╣рд░реА рдкрд░рд┐рд╢реБрджреНрдзрддрд╛ | рдкрдВрдХреНрддрд┐рдпрд╛рдБ | рдмрд┐рдЧрд┐рдВрдЯ | рд╢реЗрдпрд░реНрдб_рдмреНрд▓рдХреНрд╕_рд╣рд┐рдЯ | рдмрд┐рдЧрд┐рдВрдЯ | share_blks_read | рдмрд┐рдЧрд┐рдВрдЯ | share_blks_dirtied | рдмрд┐рдЧрд┐рдВрдЯ | рд╕рд╛рдЭрд╛_рдмреНрд▓рдХреНрд╕_рд▓рд┐рдЦрд┐рдд | рдмрд┐рдЧрд┐рдВрдЯ | рд▓реЛрдХрд▓_рдмреНрд▓рдХреНрд╕_рд╣рд┐рдЯ | рдмрд┐рдЧрд┐рдВрдЯ | local_blks_read | рдмрд┐рдЧрд┐рдВрдЯ | local_blks_dirtied | рдмрд┐рдЧрд┐рдВрдЯ | рд╕реНрдерд╛рдиреАрдп_рдмреНрд▓рдХреНрд╕_рд▓рд┐рдЦрд┐рдд | рдмрд┐рдЧрд┐рдВрдЯ | temp_blks_read | рдмрд┐рдЧрд┐рдВрдЯ | temp_blks_рд▓рд┐рдЦрд┐рдд | рдмрд┐рдЧрд┐рдВрдЯ | 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 (SNAPSHOTRE (SNAPSH _timestamp) рд╡рд┐рджреЗрд╢реА-рдХреБрдВрдЬреА рдмрд╛рдзрд╛рдПрдВ: "рдбреЗрдЯрд╛рдмреЗрд╕_id_fk" рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА (рдбреЗрдЯрд╛рдмреЗрд╕_рдЖрдИрдбреА) рдбрд┐рд▓реАрдЯ рдХреИрд╕реНрдХреЗрдб рдкрд░ рд╕рдВрджрд░реНрдн рдбреЗрдЯрд╛рдмреЗрд╕ (рдЖрдИрдбреА)ред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рддрд╛рд▓рд┐рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрдЪрдпреА рджреГрд╢реНрдп рдбреЗрдЯрд╛ рд╣реИ pg_stat_statements рд▓рдХреНрд╖реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ.

рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ.

pg_stat_рдЗрддрд┐рд╣рд╛рд╕ рдкреНрд░рддреНрдпреЗрдХ рдШрдВрдЯреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд╕рдВрдЪрд┐рдд рдЖрдВрдХрдбрд╝реЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░реЗрдЧрд╛ред рдкреНрд░рддреНрдпреЗрдХ рдШрдВрдЯреЗ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рддрд╛рд▓рд┐рдХрд╛ рднрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдБрдХрдбрд╝реЗ 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_рдЗрддрд┐рд╣рд╛рд╕ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рддрд╛рд▓рд┐рдХрд╛ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕реНрдиреИрдкрд╢реЙрдЯ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реЛрдЧрд╛ 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 рдПрд╕рдХреНрдпреВрдПрд▓ | #| рдХреНрд╡реЗрд░реА рдЖрдИрдбреА| рдХреЙрд▓| рдХреЙрд▓ %| рдХреБрд▓_рд╕рдордп (рдПрдордПрд╕) | 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
-------------------------------------------------------------------------------------------------- | рдХреБрд▓ I/O рд╕рдордп рдХреЗ рдЕрдиреБрд╕рд╛рд░ TOP10 SQL | #| рдХреНрд╡реЗрд░реА рдЖрдИрдбреА| рдХреЙрд▓| рдХреЙрд▓ %| I/O рд╕рдордп (ms)|db I/O рд╕рдордп % +----+-----------+-----------+--------+--------------------------------+---------------- | 1| 4152624390| 2| .00001|00:08:31.616(511616.592 рдПрдордПрд╕)| 31.06 рдЬреВрди | 2| 821760255| 2| .00001|00:08:27.099( 507099.036 рдПрдордПрд╕)| 30.78 | 3| 655729273| 1| .00000|00:05:02.209( 302209.137 рдПрдордПрд╕)| 18.35 | 4| 2460318461| 1| .00000|00:04:05.981(245981.117 рдПрдордПрд╕)| 14.93 | 5| 1484454471| 4| .00001|00:00:39.144(39144.221 рдПрдордПрд╕)| 2.38 | 6| 2194493487| 4| .00001|00:00:18.182(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

-------------------------------------------------------------------------------------------------- | рдЕрдзрд┐рдХрддрдо рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЯреЙрдк10 рдПрд╕рдХреНрдпреВрдПрд▓ | #| рд╕реНрдиреИрдкрд╢реЙрдЯ| рд╕реНрдиреИрдкрд╢реЙрдЯрдЖрдИрдбреА| рдХреНрд╡реЗрд░реА рдЖрдИрдбреА| рдЕрдзрд┐рдХрддрдо рд╕рдордп (рдПрдордПрд╕) 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 рдПрдордПрд╕) | 4146| 821760255/00/01 41.570:101570.841| 4| 04.04.2019| 16:00:4144(4152624390 рдПрдордПрд╕) | 00| 01/36.964/96964.607 5:04.04.2019| 17| 00| 4151:4152624390:00(01 рдПрдордПрд╕) | 36.964| 96964.607/6/05.04.2019 10:00| 4188| 1484454471| 00:01:33.452(93452.150 рдПрдордПрд╕) | 7| 04.04.2019/17/00 4150:2460318461 | 00| 01| 33.113:93113.835:8(04.04.2019 рдПрдордПрд╕) | 15| 00/4140/1484454471 00:00| 11.892| 11892.302| 9:04.04.2019:16(00 рдПрдордПрд╕) | 4145| 1484454471/00/00 11.892:11892.302| 10| 04.04.2019| 17:00:4152(1484454471 рдПрдордПрд╕) | 00| 00/11.892/11892.302 XNUMX:XNUMX| XNUMX| XNUMX| XNUMX:XNUMX:XNUMX(XNUMX рдПрдордПрд╕) | XNUMX| XNUMX/XNUMX/XNUMX XNUMX:XNUMX| XNUMX| XNUMX| XNUMX:XNUMX:XNUMX(XNUMX рдПрдордПрд╕)

рд╕рд╛рдЭрд╛ рдмрдлрд╝рд░ рджреНрд╡рд╛рд░рд╛ TOP10 SQL рдкрдврд╝реЗрдВ/рд▓рд┐рдЦреЗрдВ

рдЬрд╛рдВрдЪ

SELECT 
  id AS snapshotid , 
  queryid ,
  snapshot_timestamp , 
  shared_blks_read , 
  shared_blks_written 
FROM 
  pg_stat_history
WHERE 
  queryid IS NOT NULL AND 
  database_id = DATABASE_ID  AND
  snapshot_timestamp BETWEEN BEGIN_TIMEPOINT AND END_TIMEPOINT AND
  ( shared_blks_read > 0 OR shared_blks_written > 0 )
ORDER BY 4 DESC  , 5 DESC 
LIMIT 10
-------------------------------------------------------------------------------------------------- | рд╕рд╛рдЭрд╛ рдмрдлрд╝рд░ рджреНрд╡рд╛рд░рд╛ 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 рдПрдордПрд╕) | 0 | 00:00:37.305(37305.675 рдПрдордПрд╕) | 00:00:49.386(49386.290 рдПрдордПрд╕) | 0 | 00:00:49.386(49386.290 рдПрдордПрд╕) | 00:01:01.466(61466.906 рдПрдордПрд╕) | 0 | 00:01:01.466(61466.906 рдПрдордПрд╕) | 00:01:13.547(73547.521 рдПрдордПрд╕) | 0 | 00:01:13.547(73547.521 рдПрдордПрд╕) | 00:01:25.628(85628.136 рдПрдордПрд╕) | 0 | 00:01:25.628(85628.136 рдПрдордПрд╕) | 00:01:37.708(97708.751 рдПрдордПрд╕) | 4 | 00:01:37.708(97708.751 рдПрдордПрд╕) | 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| рдХреНрдпреВрдкреАрдПрд╕ | I/O рд╕рдордп | I/O рд╕рдордп % +-----+------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----- 1| 04.04.2019/20/04 4161:5758631| 00| 06| 30.513:390513.926:1573.396(00 рдПрдордПрд╕)| 00| 01.470:1470.110:376(2 рдПрдордПрд╕)| .04.04.2019 | 17| 00/4149/3529197 00:11| 48.830| 708830.618| 980.332:00:12(47.834 рдПрдордПрд╕)| 767834.052| 108.324:3:04.04.2019(16 рдПрдордПрд╕)| 00 | 4143| 3525360/00/10 13.492:613492.351| 979.267| 00| 08:41.396:521396.555(84.988 рдПрдордПрд╕)| 4| 04.04.2019:21:03(4163 рдПрдордПрд╕)| 2781536 | 00| 03/06.470/186470.979 785.745:00| 00| 00.249| 249.865:134:5(04.04.2019 рдПрдордПрд╕)| 19| 03:4159:2890362(00 рдПрдордПрд╕)| .03 | 16.784| 196784.755/776.979/00 00:01.441| 1441.386| 732| 6:04.04.2019:14(00 рдПрдордПрд╕)| 4137| 2397326:00:04(43.033 рдПрдордПрд╕)| .283033.854 | 665.924| 00/00/00.024 24.505:009 | 7| 04.04.2019| 15:00:4139(2394416 рдПрдордПрд╕)| 00| 04:51.435:291435.010(665.116 рдПрдордПрд╕)| .00 | 00| 12.025/12025.895/4.126 8:04.04.2019| 13| 00| 4135:2373043:00(04 рдПрдордПрд╕)| 26.791| 266791.988:659.179:00(00 рдПрдордПрд╕)| 00.064 | 64.261| 024/9/05.04.2019 01:03 | 4167| 4387191| 00:06:51.380(411380.293 рдПрдордПрд╕)| 609.332| 00:05:18.847(318847.407 рдПрдордПрд╕)| .77.507 | 10| 04.04.2019/18/01 4157:1145596| 00| 01| 19.217:79217.372:313.004(00 рдПрдордПрд╕)| 00| 01.319:1319.676:1.666(XNUMX рдПрдордПрд╕)| XNUMX | XNUMX| XNUMX/XNUMX/XNUMX XNUMX:XNUMX| XNUMX| XNUMX| XNUMX:XNUMX:XNUMX(XNUMX рдПрдордПрд╕)| 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

рд╕рдВрдкреВрд░реНрдг

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХрд╛рдлреА рд╕рд░рд▓ рддрд░реАрдХреЛрдВ рд╕реЗ, рдЖрдк рдХрд╛рд░реНрдпрднрд╛рд░ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

Primechenie:рдпрджрд┐ рдЖрдк рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ queryid рдХреЛ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдЗрддрд┐рд╣рд╛рд╕ рдорд┐рд▓реЗрдЧрд╛ (рд╕реНрдерд╛рди рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрд▓рдЧ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рд░рд┐рдкреЛрд░реНрдЯ рдЫреЛрдбрд╝ рджреА рдЬрд╛рддреА рд╣реИ)ред

рдЗрд╕рд▓рд┐рдП, рдХреНрд╡реЗрд░реА рдкреНрд░рджрд░реНрд╢рди рдкрд░ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдбреЗрдЯрд╛ рдЙрдкрд▓рдмреНрдз рдФрд░ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдкрд╣рд▓рд╛ рдЪрд░рдг "рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдбреЗрдЯрд╛ рдХрд╛ рд╕рдВрдЧреНрд░рд╣" рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИред

рдЖрдк рджреВрд╕рд░реЗ рдЪрд░рдг рдкрд░ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ - "рдкреНрд░рджрд░реНрд╢рди рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛"ред
PostgreSQL рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рдкреНрд░рджрд░реНрд╢рди рдирд┐рдЧрд░рд╛рдиреАред рднрд╛рдЧ 1 - рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ

рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдФрд░ рдХрд╣рд╛рдиреА рд╣реИред

рдХреЛ рдЬрд╛рд░реА рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ ...

рд╕реНрд░реЛрдд: www.habr.com

DDoS рд╕реБрд░рдХреНрд╖рд╛, VPS VDS рд╕рд░реНрд╡рд░ рд╡рд╛рд▓реА рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдЦрд░реАрджреЗрдВ ЁЯФе рдбреАрдбреАрдУрдПрд╕ рд╕реБрд░рдХреНрд╖рд╛, рд╡реАрдкреАрдПрд╕ рдФрд░ рд╡реАрдбреАрдПрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдЦрд░реАрджреЗрдВ | ProHoster