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

рддрд╛рд▓реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рдирдХрд╛рд░реА
PostgreSQL рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрдВрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХреБрдЫ рдХреЛ рдмреНрд▓реЙрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдЗрд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджреЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рддрд╛рд▓реЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ, рд╡реЗ рдХреНрдпрд╛ рд╣реИрдВ рдФрд░ рд╡реЗ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдХреИрд╕реЗ рднрд┐рдиреНрди рд╣реИрдВред рдлрд┐рд░ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ PostgreSQL рдореЗрдВ рдпрд╣ рдХрд┐рд╕реНрдо рдХреНрдпрд╛ рдкрд╛рдИ рдЬрд╛рддреА рд╣реИ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рд╣рдо рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рддрд╛рд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕реМрджрд╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗред
рд╕рд╛рдЭрд╛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рддрдХ рд╕рдорд╡рд░реНрддреА рдкрд╣реБрдВрдЪ рдХреЛ рд╕реБрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд╛рд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдкрд╣реБрдВрдЪ рд╕реЗ рддрд╛рддреНрдкрд░реНрдп рдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдПрдХ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рд╕реЗ рд╣реИред рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕реНрд╡рдпрдВ рд╕рдорд╛рдирд╛рдВрддрд░ (рдпрджрд┐ рдЙрдкрдХрд░рдг рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ) рдФрд░ рд╕рдордп-рд╕рд╛рдЭрд╛рдХрд░рдг рдореЛрдб рдореЗрдВ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рджреЛрдиреЛрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред
рдпрджрд┐ рдХреЛрдИ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рддрд╛рд▓реЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд╛рдЭрд╛ рдмрдлрд░ рдХреИрд╢ рдореЗрдВ рддрд╛рд▓реЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╕реНрдерд╛рдиреАрдп рд╡реНрдпрдХреНрддрд┐ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)ред
рдХрд┐рд╕реА рд╕рдВрд╕рд╛рдзрди рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЙрд╕ рд╕рдВрд╕рд╛рдзрди рд╕реЗ рдЬреБрдбрд╝реЗ рд▓реЙрдХ рдХрд╛ рдЕрдзрд┐рдЧреНрд░рд╣рдг рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣реА рд╣реИ, рд╣рдо рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрдиреБрд╢рд╛рд╕рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ: рдЬрдм рддрдХ рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рд╕рд╛рдЭрд╛ рд╕рдВрд╕рд╛рдзрди рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдкрд┐рдд рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреА рд╣реИрдВ, рддрдм рддрдХ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдбреАрдмреАрдПрдордПрд╕ рддрд╛рд▓реЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕реНрд╡рдпрдВ рдЖрджреЗрд╢ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддрд╛ рд╣реИ; рдпрджрд┐ рдЖрд╡реЗрджрди рджреНрд╡рд╛рд░рд╛ рдЕрд╡рд░реБрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рджрд╛рдпрд┐рддреНрд╡ рдЙрд╕ рдкрд░ рдкрдбрд╝рддрд╛ рд╣реИред
рдирд┐рдореНрди рд╕реНрддрд░ рдкрд░, рдПрдХ рд▓реЙрдХ рдХреЛ рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рдХреЗ рдПрдХ рдЦрдВрдб рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рдиреЛрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд▓реЙрдХ рдореБрдлреНрдд рд╣реИ рдпрд╛ рдХрдмреНрдЬрд╛ рдХрд░ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдФрд░, рд╕рдВрднрд╡рддрдГ, рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рджрд░реНрдЬ рдХреА рдЧрдИ рд╣реИ: рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдВрдЦреНрдпрд╛, рдХреИрдкреНрдЪрд░ рд╕рдордп, рдЖрджрд┐)ред
рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рд╛рдЭрд╛ рдХреА рдЧрдИ рдореЗрдореЛрд░реА рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдПрдХ рд╕рдВрд╕рд╛рдзрди рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛рддреНрдордХ рдкрд╣реБрдВрдЪ рд╕рдВрднрд╡ рд╣реИред рдпрджрд┐ рд╣рдо рдиреАрдЪреЗ рдПрдХ рд╕реНрддрд░ рдиреАрдЪреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдУрдПрд╕ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╡рд┐рд╢реЗрд╖ рд╕рд╣рд╛рдпрдХ рдкреНрд░рд╛рдЗрдореЗрдЯрд┐рд╡ (рдЬреИрд╕реЗ рдХрд┐ рд╕реЗрдореАрдлреЛрд░реНрд╕ рдпрд╛ рдореНрдпреВрдЯреЗрдХреНрд╕) рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХреНрд╕реЗрд╕ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрдирдХрд╛ рдЕрд░реНрде рдпрд╣ рд╣реИ рдХрд┐ рд╕рд╛рдЭрд╛ рд╕рдВрд╕рд╛рдзрди рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреЛ рдПрдХ рд╕рдордп рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдирд┐рдореНрдирддрдо рд╕реНрддрд░ рдкрд░, рдпреЗ рдкреНрд░рд╛рдЗрдорд┐рдЯрд┐рд╡ рдкрд░рдорд╛рдгреБ рдкреНрд░реЛрд╕реЗрд╕рд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ (рдЬреИрд╕реЗ рдХрд┐ рдкрд░реАрдХреНрд╖рдг-рдФрд░-рд╕реЗрдЯ рдпрд╛ рддреБрд▓рдирд╛-рдФрд░-рд╕реНрд╡реИрдк) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рд▓реЙрдХ рдХреЛ
рд░рд┐рд▓реАрдЬрд╝ рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЕрдиреНрдп рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВред
рдмреЗрд╢рдХ, рддрд╛рд▓рд╛ рдмрдВрдж рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ: рд╕рдВрд╕рд╛рдзрди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд┐рд╕реА рдФрд░ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдлрд┐рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдпрд╛ рддреЛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрддрд╛рд░ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддреА рд╣реИ (рдпрджрд┐ рд▓реЙрдХрд┐рдВрдЧ рддрдВрддреНрд░ рдпрд╣ рдЕрд╡рд╕рд░ рджреЗрддрд╛ рд╣реИ), рдпрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдХреЗ рдмрд╛рдж рд▓реЙрдХ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрди: рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдПрдХ рддрд░рд╣ рд╕реЗ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп, рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рдВрд╕рд╛рдзрди рдХреА рд░рд┐рд╣рд╛рдИ рдХреА рдкреНрд░рддреНрдпрд╛рд╢рд╛ рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдЦрдбрд╝реЗ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХрднреА-рдХрднреА рдЕрдиреНрдп рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрд╣реБ- рд╕рдВрд╕реНрдХрд░рдг рддрдВрддреНрд░ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдПрдХ-рджреВрд╕рд░реЗ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд┐рдП рдмрд┐рдирд╛ рдбреЗрдЯрд╛ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдПрдХ рд╕рдВрд░рдХреНрд╖рд┐рдд рд╕рдВрд╕рд╛рдзрди рдХреБрдЫ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрджрд┐ рдХреЗрд╡рд▓ рдЗрд╕ рд╕рдВрд╕рд╛рдзрди рдХреЛ рдЕрд╡рд░реБрджреНрдз рдкрддреЗ рдХреЗ рд╕рд╛рде рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд╣рдЪрд╛рдирд╛ рдФрд░ рдорд┐рд▓рд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрд╕рд╛рдзрди рд╡рд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ DBMS рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рдбреЗрдЯрд╛ рдкреЗрдЬ (рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдФрд░ рд╕реНрдерд┐рддрд┐ рджреНрд╡рд╛рд░рд╛ рдкрд╣рдЪрд╛рдирд╛ рдЧрдпрд╛), рдПрдХ рдЯреЗрдмрд▓ (рд╕рд┐рд╕реНрдЯрдо рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдУрдб), рдПрдХ рдЯреЗрдмрд▓ рд░реЛ (рдкреЗрдЬ рдФрд░ рдкреЗрдЬ рдХреЗ рдЕрдВрджрд░ рдСрдлрд╕реЗрдЯ)ред рдПрдХ рд╕рдВрд╕рд╛рдзрди рдореЗрдореЛрд░реА рдореЗрдВ рдПрдХ рд╕рдВрд░рдЪрдирд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд╣реИрд╢ рдЯреЗрдмрд▓, рдмрдлрд░, рдЖрджрд┐ (рдкреВрд░реНрд╡-рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рдВрдЦреНрдпрд╛ рджреНрд╡рд╛рд░рд╛ рдкрд╣рдЪрд╛рдиреА рдЧрдИ)ред рдХрднреА-рдХрднреА рдпрд╣ рдЕрдореВрд░реНрдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдХреЛрдИ рднреМрддрд┐рдХ рдЕрд░реНрде рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ (рд╡реЗ рдХреЗрд╡рд▓ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдкрд╣рдЪрд╛рдиреЗ рдЬрд╛рддреЗ рд╣реИрдВ)ред
рддрд╛рд▓реЛрдВ рдХреА рдкреНрд░рднрд╛рд╡рд╢реАрд▓рддрд╛ рдХрдИ рдХрд╛рд░рдХреЛрдВ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрддреА рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╣рдо рджреЛ рдХреЛ рдЕрд▓рдЧ рдХрд░рддреЗ рд╣реИрдВред
- рдпрджрд┐ рд╕рдВрд╕рд╛рдзрди рдПрдХ рдкрджрд╛рдиреБрдХреНрд░рдо рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЧреНрд░реИрдиреНрдпреБрд▓реИрд░рд┐рдЯреА (рдЧреНрд░реИрдиреНрдпреБрд▓реИрд░рд┐рдЯреА) рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреГрд╖реНрда рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рддрд╛рд▓рд┐рдХрд╛ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реЛрддреА рд╣реИрдВред рдпреЗ рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рдВрд╕рд╛рдзрди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдЖрдорддреМрд░ рдкрд░ рдмрд╕ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд╣реЛрддреА рд╣реИ, рдФрд░ рддрд╛рд▓рд┐рдХрд╛ рд╕реНрддрд░ рдкрд░ рд▓реЙрдХ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдВрдЧреАред рдЗрд╕рд▓рд┐рдП, рджрд╛рдиреЗрджрд╛рд░рддрд╛ рдЬрд┐рддрдиреА рдЕрдзрд┐рдХ рд╣реЛрдЧреА, рд╕рдорд╛рдирд╛рдВрддрд░рдХрд░рдг рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред
рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рддрд╛рд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реЛрддреА рд╣реИ (рдЬрд╛рдирдХрд╛рд░реА рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реНрдореГрддрд┐ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП)ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рддрд╛рд▓реЗ рдХреЗ рд╕реНрддрд░ (рд╡реГрджреНрдзрд┐) рдореЗрдВ рд╡реГрджреНрдзрд┐ рд▓рд╛рдЧреВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ: рдЬрдм рдирд┐рдореНрди-рд╕реНрддрд░ рдХреА рд╕рдВрдЦреНрдпрд╛, рджрд╛рдиреЗрджрд╛рд░ рддрд╛рд▓реЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реАрдорд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреЗ рдПрдХ рд▓реЙрдХ рдХреЗ рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рддрд╛рд▓реЗ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореЛрдб рдореЗрдВ рдХреИрдкреНрдЪрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред
рдореЛрдб рдХреЗ рдирд╛рдо рдмрд┐рд▓реНрдХреБрд▓ рдордирдорд╛рдиреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдЙрдирдХреА рд╕рдВрдЧрддрддрд╛ рдХрд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдХрд┐рд╕реА рднреА рдореЛрдб рдХреЗ рд╕рд╛рде рдЕрд╕рдВрдЧрдд рдПрдХ рдореЛрдб (рд╕реНрд╡рдпрдВ рдХреЗ рд╕рд╛рде) рдХреЛ рдЖрдорддреМрд░ рдкрд░ рдЕрдирдиреНрдп рдпрд╛ рдЕрдирдиреНрдп рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдореЛрдб рд╕рдВрдЧрдд рд╣реИрдВ, рддреЛ рдПрдХ рд╕рд╛рде рдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рд▓реЙрдХ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ; рдРрд╕реЗ рдореЛрдб рдХреЛ рд╕рд╛рдЭрд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдЕрдзрд┐рдХ рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХреЛ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЕрдзрд┐рдХ рдЕрд╡рд╕рд░ рд╕рдорд╛рдирддрд╛ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рдордп рдХреЗ рдЕрдиреБрд╕рд╛рд░, рддрд╛рд▓реЗ рдХреЛ рд▓рдВрдмреЗ рдФрд░ рдЫреЛрдЯреЗ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- рд▓рдВрдмреЗ рд╕рдордп рддрдХ рддрд╛рд▓реЗ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ (рдЖрдорддреМрд░ рдкрд░ рд▓реЗрдирджреЗрди рдХреЗ рдЕрдВрдд рддрдХ) рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдХреНрд╕рд░ рддрд╛рд▓рд┐рдХрд╛рдУрдВ (рд░рд┐рд╢реНрддреЛрдВ) рдФрд░ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдЬреИрд╕реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрддрд╛ рд╣реИред PostgreSQL рдЖрдорддреМрд░ рдкрд░ рдЗрди рддрд╛рд▓реЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рдХреБрдЫ рдирд┐рдпрдВрддреНрд░рдг рд╣реЛрддрд╛ рд╣реИред
рд▓рдВрдмреЗ рддрд╛рд▓реЛрдВ рдХреЛ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдореЛрдб рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛрддреА рд╣реИ рддрд╛рдХрд┐ рдбреЗрдЯрд╛ рдкрд░ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдПрдХ рд╕рд╛рде рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХреЗред рдЖрдорддреМрд░ рдкрд░, рдРрд╕реЗ рддрд╛рд▓реЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рдХрд╕рд┐рдд рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪрд╛ рд╣реЛрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрддрд╛рд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдФрд░ рдЧрддрд┐рд░реЛрдзреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛) рдФрд░ рдирд┐рдЧрд░рд╛рдиреА рдЙрдкрдХрд░рдг, рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрд░рдХреНрд╖рд┐рдд рдбреЗрдЯрд╛ рдкрд░ рд╕рдВрдЪрд╛рд▓рди рдХреА рд▓рд╛рдЧрдд рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЗрди рд╕рднреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рд▓рд╛рдЧрдд рдЕрднреА рднреА рдЕрддреБрд▓рдиреАрдп рд░реВрдк рд╕реЗ рдХрдо рд╣реИред
- рдЕрд▓реНрдкрдХрд╛рд▓рд┐рдХ рддрд╛рд▓реЛрдВ рдХреЛ рдереЛрдбрд╝реЗ рд╕рдордп рдХреЗ рд▓рд┐рдП (рдХреБрдЫ рдкреНрд░реЛрд╕реЗрд╕рд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рд╕реЗ рдПрдХ рд╕реЗрдХрдВрдб рдХреЗ рдЕрдВрд╢реЛрдВ рдореЗрдВ) рдкрдХрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЖрдорддреМрд░ рдкрд░ рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред PostgreSQL рдРрд╕реЗ рддрд╛рд▓реЗ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ - рдЖрдкрдХреЛ рдмрд╕ рдЙрдирдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд▓рдШреБ рддрд╛рд▓реЛрдВ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдиреНрдпреВрдирддрдо рдореЛрдб (рдЕрдирдиреНрдп рдФрд░ рд╕рд╛рдЭрд╛) рдФрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рд╕реЗ рд╣реЛрддреА рд╣реИред рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдирд┐рдЧрд░рд╛рдиреА рдЙрдкрдХрд░рдг рднреА рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
PostgreSQL рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рддрд╛рд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрддрд░ рдкрд░ рддрд╛рд▓реЗ рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рд╣реИрдВ, "рд╣реИрд╡реАрд╡реЗрдЯ"
рддрд╛рд▓реЗ ред рдпрд╣рд╛рдВ рдХреЗ рд╕рдВрд╕рд╛рдзрди рд╕рдВрдмрдВрдз рдФрд░ рдЕрдиреНрдп рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВред рдпрджрд┐ рдкрд╛рда рдореЗрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рдЕрд╡рд░реБрджреНрдз рд╢рдмреНрдж рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдРрд╕реЗ "рд╕рд╛рдорд╛рдиреНрдп" рдЕрд╡рд░реЛрдз рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред
рд▓рдВрдмреЗ рд╕рдордп рддрдХ рддрд╛рд▓реЗ рдХреЗ рдмреАрдЪ,
рдкрдВрдХреНрддрд┐-рд╕реНрддрд░реАрдп рддрд╛рд▓реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЦрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВред рдЙрдирдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЙрдирдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рд╢рд╛рд▓ рд╕рдВрдЦреНрдпрд╛ (рдПрдХ рд▓реЗрдирджреЗрди рдореЗрдВ рдПрдХ рд▓рд╛рдЦ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдХрд▓реНрдкрдирд╛) рдХреЗ рдХрд╛рд░рдг рдЕрдиреНрдп рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рддрд╛рд▓реЛрдВ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рддрд╛рд▓реЗ рдкрд░ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред
рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рддреАрд╕рд░рд╛ рд▓реЗрдЦ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрддрд░ рдкрд░ рд╢реЗрд╖ рддрд╛рд▓реЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реЛрдЧрд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде
рд╡рд┐рдзреЗрдп рддрд╛рд▓реЗ (рдЪреВрдВрдХрд┐ рдЗрди рд╕рднреА рддрд╛рд▓реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЙрд╕реА рддрд░рд╣ рд░реИрдо рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреА рд╣реИ)ред
рд▓рдШреБ рддрд╛рд▓реЛрдВ рдореЗрдВ
рд░реИрдо рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрд╛рд▓реЗ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЪрдХреНрд░ рдХреЗ рдЕрдВрддрд┐рдо рд▓реЗрдЦ рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред
рд╡рд╕реНрддреБ рддрд╛рд▓реЗ
рддреЛ, рд╣рдо рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрддрд░ рдХреЗ рддрд╛рд▓реЗ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ, рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЛ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░
рд╕рдВрдмрдВрдзреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН рдЯреЗрдмрд▓, рдЗрдВрдбреЗрдХреНрд╕, рдЕрдиреБрдХреНрд░рдо, рднреМрддрд┐рдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡, рд▓реЗрдХрд┐рди рдХреБрдЫ рдЕрдиреНрдп рд╕рдВрд╕реНрдерд╛рдПрдВ рднреАред рдпреЗ рддрд╛рд▓реЗ рдЖрдорддреМрд░ рдкрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдмрджрд▓рдиреЗ рд╕реЗ рдпрд╛ рд╡рд╕реНрддреБ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рджреМрд░рд╛рди рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╕реЗ рдмрдЪрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП рднреАред
рдзреБрдБрдзрд▓реА рдХреАрдбрд╝рд╛? рдпрд╣ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рд╕рдореВрд╣ рдХреЗ рддрд╛рд▓реЗ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдпреЛрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдХреНрдпрд╛ рдПрдХрдЬреБрдЯ рдХрд░рддрд╛ рд╣реИ, рдХреИрд╕реЗ рдЙрдирдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХреА рдЬрд╛рддреА рд╣реИред
рдпреБрдХреНрддрд┐
рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реЙрдХ рд╕рд░реНрд╡рд░ рдХреА рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВред рдЙрдирдХреА рд╕рдВрдЦреНрдпрд╛ рджреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдЙрддреНрдкрд╛рдж рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рд╣реИ:
max_locks_per_transaction ├Ч
max_connections ред
рд▓реЙрдХ рд▓реЗрди-рджреЗрди рд╕рднреА рд▓реЗрди-рджреЗрди рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╣реИ, рдЕрд░реНрдерд╛рдд, рдПрдХ рд▓реЗрди-рджреЗрди
max_locks_per_transaction рд╕реЗ рдЕрдзрд┐рдХ рддрд╛рд▓реЛрдВ рдХреЛ рдкрдХрдбрд╝ рд╕рдХрддрд╛ рд╣реИ: рдпрд╣ рдХреЗрд╡рд▓ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХреБрд▓ рддрд╛рд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реАрдорд╛ рд╕реЗ рдЕрдзрд┐рдХ рди рд╣реЛред рдкреВрд▓ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рджреЛрдиреЛрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рд░рд┐рдмреВрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рд╕рднреА рддрд╛рд▓реЗ pg_locks рджреГрд╢реНрдп рдореЗрдВ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдпрджрд┐ рд╕рдВрд╕рд╛рдзрди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрд╕рдВрдЧрдд рдореЛрдб рдореЗрдВ рдмрдВрдж рд╣реИ, рддреЛ рдЗрд╕ рд╕рдВрд╕рд╛рдзрди рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд▓реЗрди-рджреЗрди рдХрддрд╛рд░рдмрджреНрдз рд╣реИ рдФрд░ рд▓реЙрдХ рдЬрд╛рд░реА рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИред рд▓рдВрдмрд┐рдд рд▓реЗрдирджреЗрди рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрднреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ: рд╕рдВрдмрдВрдзрд┐рдд рд╕реЗрд╡рд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ "рд╕реЛ рдЬрд╛рддреЗ рд╣реИрдВ" рдФрд░ рд╕рдВрд╕рд╛рдзрди рдЬрд╛рд░реА рд╣реЛрдиреЗ рдкрд░ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдЙрдарддрд╛ рд╣реИред
рдПрдХ
рдЧрддрд┐рд░реЛрдз рдХреА рд╕реНрдерд┐рддрд┐ рд╕рдВрднрд╡ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд▓реЗрди-рджреЗрди рдХреЛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рджреВрд╕рд░реЗ рд▓реЗрдирджреЗрди рдХреЗ рдХрдмреНрдЬреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╕рд╛рдзрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рджреВрд╕рд░реЗ рдХреЛ рдкрд╣рд▓реЗ (рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдПрдХ рдЧрддрд┐рд░реЛрдз рдФрд░ рджреЛ рд╕реЗ рдЕрдзрд┐рдХ рд▓реЗрдирджреЗрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ) рджреНрд╡рд╛рд░рд╛ рдХрдмреНрдЬрд╛ рдХрд┐рдП рдЧрдП рд╕рдВрд╕рд╛рдзрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░рддреАрдХреНрд╖рд╛ рдЕрдирд┐рд╢реНрдЪрд┐рдд рдХрд╛рд▓ рддрдХ рдЬрд╛рд░реА рд░рд╣реЗрдЧреА, рдЗрд╕рд▓рд┐рдП PostgreSQL рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдФрд░ рд▓реЗрдирджреЗрди рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдирд┐рд░рд╕реНрдд рдХрд░ рджреЗрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЕрдиреНрдп рд▓реЛрдЧ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦ рд╕рдХреЗрдВред (рд╣рдо рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдЧрддрд┐рд░реЛрдзреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред)
рд╡рд╕реНрддреБ рдкреНрд░рдХрд╛рд░
рдпрд╣рд╛рдВ рддрд╛рд▓реЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рджреА рдЧрдИ рд╣реИ (рдпрд╛, рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ, рддреЛ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдкреНрд░рдХрд╛рд░) рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдЗрд╕ рдФрд░ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рджреЗрдЦреЗрдВрдЧреЗред рдирд╛рдо pg_locks рджреГрд╢реНрдп рдХреЗ рд▓реЙрдХрдЯрд╛рдЗрдк рдХреЙрд▓рдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рджрд┐рдП рдЧрдП рд╣реИрдВред
- рд╕рдВрдмрдВрдз
рд░рд┐рд╢реНрддреЗ рдХреЛ рддрд╛рд▓реЗред
- рд▓реЗрди-рджреЗрди рдФрд░ virtualxid
рдПрдХ рд▓реЗрдирджреЗрди рд╕рдВрдЦреНрдпрд╛ (рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдпрд╛ рдЖрднрд╛рд╕реА) рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рдирд╛ред рдкреНрд░рддреНрдпреЗрдХ рд▓реЗрдирджреЗрди рдореЗрдВ рд╕реНрд╡рдпрдВ рдЕрдкрдиреЗ рдирдВрдмрд░ рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓реЙрдХ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдРрд╕реЗ рд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд▓реЗрдирджреЗрди рдХреЗ рдЕрдВрдд рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
- рдЯрдкрд▓
рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдВрд╕реНрдХрд░рдг рд▓реЙрдХред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдПрдХ рд╣реА рдкрдВрдХреНрддрд┐ рдХреЛ рд▓реЙрдХ рдХрд░рдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рд▓реЗрдирджреЗрди рдХреЗ рдмреАрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╣рдо рдЪрдХреНрд░ рдореЗрдВ рддреАрд╕рд░реЗ рд▓реЗрдЦ рддрдХ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рддрд╛рд▓реЗ рдХреА рдЪрд░реНрдЪрд╛ рдХреЛ рд╕реНрдердЧрд┐рдд рдХрд░ рджреЗрдВрдЧреЗред рдЙрди рд╕рднреА рдХреЛ рдпрд╛ рддреЛ рдХреЗрд╡рд▓ рдЕрд╕рд╛рдзрд╛рд░рдг рдореЛрдб рдореЗрдВ, рдпрд╛ рдЕрдирдиреНрдп рдФрд░ рд╕рд╛рдЭрд╛ рдореЗрдВ рдХреИрдкреНрдЪрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рд╡рд┐рд╕реНрддрд╛рд░
рдХрд┐рд╕реА рднреА рд░рд┐рд╢реНрддреЗ рдХреА рдлрд╛рдЗрд▓ рдореЗрдВ рдкреЗрдЬ рдЬреЛрдбрд╝рддреЗ рд╕рдордп рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рд╡рд╕реНрддреБ
рдЙрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд▓реЙрдХ рдХрд░рдирд╛ рдЬреЛ рд░рд┐рд╢реНрддреЗ рдирд╣реАрдВ рд╣реИрдВ (рдбреЗрдЯрд╛рдмреЗрд╕, рд╕реНрдХреАрдорд╛, рд╕рджрд╕реНрдпрддрд╛, рдЖрджрд┐)ред
- рдкреЗрдЬ
рдкреГрд╖реНрда рд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╛рд░-рдмрд╛рд░ рдФрд░ рдХреЗрд╡рд▓ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрдХреНрд░рдорд┐рдд рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рд╕рд▓рд╛рд╣рдХрд╛рд░
рдЕрдиреБрд╢рдВрд╕рд┐рдд рдЕрд╡рд░реБрджреНрдз, рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рддред
рд░рд┐рд╢реНрддреЗ рдХреЛ рддрд╛рд▓реЗ
рд╕рдВрджрд░реНрдн рди рдЦреЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЪрд┐рддреНрд░ рдХреЛ рдЙрди рдкреНрд░рдХрд╛рд░ рдХреЗ рддрд╛рд▓реЛрдВ рдкрд░ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реВрдВрдЧрд╛, рдЬрд┐рдирдХреА рдЪрд░реНрдЪрд╛ рдмрд╛рдж рдореЗрдВ рдХреА рдЬрд╛рдПрдЧреАред

рдореЛрдб
рдпрджрд┐ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рддреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдмрд╕реЗ "рд╢рд╛рдЦрд╛" рдЕрд╡рд░реБрджреНрдз - рдЕрд╡рд░реБрджреНрдз рд╕рдВрдмрдВрдз рд╣реИред рдЙрд╕рдХреЗ рд▓рд┐рдП, 8 рд╡рд┐рднрд┐рдиреНрди рдореЛрдб рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЗрддрдиреА рдорд╛рддреНрд░рд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рд╕рдмрд╕реЗ рдмрдбрд╝реА рд╕рдВрднрд╡ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдПрдХ рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред
рдЗрди рддрд░реАрдХреЛрдВ рдХреЛ рджрд┐рд▓ рд╕реЗ рд╕реАрдЦрдиреЗ рдпрд╛ рдЙрдирдХреЗ рдирд╛рдореЛрдВ рдХреЗ рдЕрд░реНрде рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ; рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╕рд╣реА рд╕рдордп рдкрд░ рдЖрдкрдХреА рдЖрдВрдЦреЛрдВ рдХреЗ рд╕рд╛рдордиреЗ рдПрдХ
рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдЯрдХрд░рд╛рд╡ рдХреЛ рдХреМрди рд░реЛрдХрддрд╛ рд╣реИред рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЙрдкрдпреБрдХреНрдд рд▓реЙрдХрд┐рдВрдЧ рд╕реНрддрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╡рд╛рд▓реЗ рдХрдорд╛рдВрдб рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдпрд╣рд╛рдВ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
рдХреБрдЫ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ:
- рдкрд╣рд▓реЗ 4 рдореЛрдб рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рд╕рд╛рде рдбреЗрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рдФрд░ рдЕрдЧрд▓реЗ 4 рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
- рдкрд╣рд▓рд╛ рдореЛрдб (рдПрдХреНрд╕реЗрд╕ рд╢реЗрдпрд░) рд╕рдмрд╕реЗ рдХрдордЬреЛрд░ рд╣реИ, рдпрд╣ рдкрд┐рдЫрд▓реЗ (рдПрдХреНрд╕реЗрд╕ рдПрдХреНрд╕рдХреНрд▓реВрд╕рд┐рд╡) рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реИред рдпрд╣ рдЕрдВрддрд┐рдо рдореЛрдб рдЕрдирдиреНрдп рд╣реИ, рдпрд╣ рдХрд┐рд╕реА рднреА рдореЛрдб рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИред
- ALTER TABLE рдХрдорд╛рдВрдб рдореЗрдВ рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдХреЛ рд▓реЙрдХ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕реНрддрд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдЯреНрд░рд┐рдХреНрд╕ рдореЗрдВ, рдпрд╣ рдХрдорд╛рдВрдб рд╡рд┐рднрд┐рдиреНрди рд▓рд╛рдЗрдиреЛрдВ рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдФрд░ рддрд╛рд░рд╛рдВрдХрди рдЪрд┐рд╣реНрди рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рд╣реЛрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдВред рдЕрдЧрд░ рдореИрдВ CREATE INDEX рдХрдорд╛рдВрдб рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?
рд╣рдо рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдпрд╣ рдХрдорд╛рдВрдб рд╢реЗрдпрд░ рдореЛрдб рдореЗрдВ рд▓реЙрдХ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣рдо рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХрдорд╛рдВрдб рд╕реНрд╡рдпрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реИ (рдЕрд░реНрдерд╛рдд, рдЖрдк рдПрдХ рд╕рд╛рде рдХрдИ рдЗрдВрдбреЗрдХреНрд╕ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ) рдФрд░ рд░реАрдбрд┐рдВрдЧ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рдеред рдЗрд╕ рдкреНрд░рдХрд╛рд░, SELECT рдХрдорд╛рдВрдб рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдЧрд╛, рд▓реЗрдХрд┐рди UPDATE, DELETE, INSERT рдХрдорд╛рдВрдб рдмреНрд▓реЙрдХ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред
рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд - рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдкреВрд░реНрдг рд▓реЗрдирджреЗрди рдХреНрд░рд┐рдПрдЯ рдЗрдВрдбреЗрдХреНрд╕ рдХрдорд╛рдВрдб рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд░реЛрдХ рджреЗрдВрдЧреЗред рдЗрд╕рд▓рд┐рдП, рдХрдорд╛рдВрдб рдХрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реИ - рдХреНрд░реЗрдЯ рдЗрдВрдбреЗрдХреНрд╕ рд╕рд╣рдорддрд┐ред рдпрд╣ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдФрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рднреА рдЧрд┐рд░ рд╕рдХрддрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдПрдХ рд╕рд╛рде рдбреЗрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЗрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдо
рдкрд╣рд▓реЗ рдЪрдХреНрд░ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд "рдмреИрдВрдХ" рдЦрд╛рддреЛрдВ
рдХреА рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЦрд╛рддрд╛ рд╕рдВрдЦреНрдпрд╛ рдФрд░ рд░рд╛рд╢рд┐ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВрдЧреЗред
=> CREATE TABLE accounts( acc_no integer PRIMARY KEY, amount numeric ); => INSERT INTO accounts VALUES (1,1000.00), (2,2000.00), (3,3000.00);
рджреВрд╕рд░реЗ рд╕рддреНрд░ рдореЗрдВ, рд▓реЗрдирджреЗрди рд╢реБрд░реВ рдХрд░реЗрдВред рд╣рдореЗрдВ рдПрдХ рд╕реЗрд╡рд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдВрдЦреНрдпрд╛ рдЪрд╛рд╣рд┐рдПред
| => SELECT pg_backend_pid();
| pg_backend_pid | ---------------- | 4746 | (1 row)
рдирдП рд╢реБрд░реВ рдХрд┐рдП рдЧрдП рд▓реЗрди-рджреЗрди рдореЗрдВ рдХреНрдпрд╛ рддрд╛рд▓реЗ рд╣реИрдВ? рд╣рдо pg_locks рдореЗрдВ рджрд┐рдЦрддреЗ рд╣реИрдВ:
=> SELECT locktype, relation::REGCLASS, virtualxid AS virtxid, transactionid AS xid, mode, granted FROM pg_locks WHERE pid = 4746;
locktype | relation | virtxid | xid | mode | granted ------------+----------+---------+-----+---------------+--------- virtualxid | | 5/15 | | ExclusiveLock | t (1 row)
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛ рдерд╛, рдПрдХ рд▓реЗрдирджреЗрди рд╣рдореЗрд╢рд╛ рдЕрдкрдиреЗ рдирдВрдмрд░ рдХрд╛ рдПрдХ рдЕрдирдиреНрдп (рдПрдХреНрд╕рдХреНрд▓реВрд╕рд┐рд╡рд▓реЙрдХ) рд▓реЙрдХ рд░рдЦрддрд╛ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдЖрднрд╛рд╕реАред рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рдЕрдиреНрдп рддрд╛рд▓реЗ рдирд╣реАрдВ рд╣реИрдВред
рдЕрдм рдЯреЗрдмрд▓ рд░реЛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред рдХреИрд╕реЗ рдмрджрд▓реЗрдЧреА рд╕реНрдерд┐рддрд┐?
| => UPDATE accounts SET amount = amount + 100 WHERE acc_no = 1;
=> \g
locktype | relation | virtxid | xid | mode | granted ---------------+---------------+---------+--------+------------------+--------- relation | accounts_pkey | | | RowExclusiveLock | t relation | accounts | | | RowExclusiveLock | t virtualxid | | 5/15 | | ExclusiveLock | t transactionid | | | 529404 | ExclusiveLock | t (4 rows)
рдЕрдм рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрд┐рдд рддрд╛рд▓рд┐рдХрд╛ рдФрд░ рд╕реВрдЪрдХрд╛рдВрдХ (рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рдмрдирд╛рдИ рдЧрдИ) рдкрд░ рддрд╛рд▓реЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ UPDATE рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреЛрдиреЛрдВ рддрд╛рд▓реЗ RowExclusiveLock рдореЛрдб рдореЗрдВ рд▓рд┐рдП рдЧрдП рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓реЗрдирджреЗрди рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЕрд╡рд░реЛрдз рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ (рдЬреЛ рдХрд┐ рдЬреИрд╕реЗ рд╣реА рд▓реЗрдирджреЗрди рдбреЗрдЯрд╛ рдХреЛ рдмрджрд▓рдирд╛ рд╢реБрд░реВ рд╣реБрдЖ) рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред
рдЕрдм рджреВрд╕рд░реЗ рд╕рддреНрд░ рдореЗрдВ рд╣рдо рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдкрд░ рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред
|| => SELECT pg_backend_pid();
|| pg_backend_pid || ---------------- || 4782 || (1 row)
|| => CREATE INDEX ON accounts(acc_no);
рдЖрджреЗрд╢ рд╕рдВрд╕рд╛рдзрди рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рдкреНрд░рддреНрдпрд╛рд╢рд╛ рдореЗрдВ рдЬрдорд╛ рджреЗрддрд╛ рд╣реИред рд╡рд╣ рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рддрд╛рд▓рд╛ рдкрдХрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ? рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:
=> SELECT locktype, relation::REGCLASS, virtualxid AS virtxid, transactionid AS xid, mode, granted FROM pg_locks WHERE pid = 4782;
locktype | relation | virtxid | xid | mode | granted ------------+----------+---------+-----+---------------+--------- virtualxid | | 6/15 | | ExclusiveLock | t relation | accounts | | | ShareLock | f (2 rows)
рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд▓реЗрдирджреЗрди ShareLock рдореЛрдб рдореЗрдВ рдЯреЗрдмрд▓ рд▓реЙрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди (= f) рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЕрд╡рд░реЛрдзрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрдИ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдореЗрдВ, 9.6 рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ (рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдореБрдЭреЗ pg_locks рдХреА рд╕рднреА рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЛ рдзреНрдпрд╛рди рд╕реЗ рджреЗрдЦрдХрд░ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рдирд╛ рдерд╛):
=> SELECT pg_blocking_pids(4782);
pg_blocking_pids ------------------ {4746} (1 row)
рдФрд░ рдлрд┐рд░, рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╕рддреНрд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдкрд╛рдП рдЧрдП рдирдВрдмрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
=> SELECT * FROM pg_stat_activity WHERE pid = ANY(pg_blocking_pids(4782)) \gx
-[ RECORD 1 ]----+------------------------------------------------------------ datid | 16386 datname | test pid | 4746 usesysid | 16384 usename | student application_name | psql client_addr | client_hostname | client_port | -1 backend_start | 2019-08-07 15:02:53.811842+03 xact_start | 2019-08-07 15:02:54.090672+03 query_start | 2019-08-07 15:02:54.10621+03 state_change | 2019-08-07 15:02:54.106965+03 wait_event_type | Client wait_event | ClientRead state | idle in transaction backend_xid | 529404 backend_xmin | query | UPDATE accounts SET amount = amount + 100 WHERE acc_no = 1; backend_type | client backend
рд▓реЗрдирджреЗрди рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рддрд╛рд▓реЗ рдЬрд╛рд░реА рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╕реВрдЪрдХрд╛рдВрдХ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
| => COMMIT;
| COMMIT
|| CREATE INDEX
рдХрддрд╛рд░ рдореЗрдВ! ..
рдПрдХ рдЕрд╕рдВрдЧрдд рд▓реЙрдХ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреНрдпрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рдХреА рдмреЗрд╣рддрд░ рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рджреМрд░рд╛рди VACUUM FULL рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдкрд░ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред
рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдорд╛рди рдкрд╣рд▓реЗ рд╣рдорд╛рд░реА рдореЗрдЬ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрд╕реЗ рдПрдХреНрд╕реЗрд╕ рд╢реЗрдпрд░ рдХреЗ рд╕рдмрд╕реЗ рдХрдордЬреЛрд░ рд╕реНрддрд░ рдкрд░ рддрд╛рд▓рд╛ рдорд┐рд▓рддрд╛ рд╣реИред рд▓реЙрдХ рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рдордп рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд▓реЗрди-рджреЗрди рдХреЗ рдЕрдВрджрд░ рдЗрд╕ рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ - рдЬрдм рддрдХ рд▓реЗрдирджреЗрди рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛, рддрдм рддрдХ рд▓реЙрдХ рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХрдИ рдХрдорд╛рдВрдб рдЯреЗрдмрд▓ рдХреЛ рдкрдврд╝ (рдФрд░ рд╕рдВрд╢реЛрдзрд┐рдд) рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдХреБрдЫ рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рдХрд╛рдлреА рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред
=> BEGIN; => SELECT * FROM accounts;
acc_no | amount --------+--------- 2 | 2000.00 3 | 3000.00 1 | 1100.00 (3 rows)
=> SELECT locktype, mode, granted, pid, pg_blocking_pids(pid) AS wait_for FROM pg_locks WHERE relation = 'accounts'::regclass;
locktype | mode | granted | pid | wait_for ----------+-----------------+---------+------+---------- relation | AccessShareLock | t | 4710 | {} (1 row)
рддрдм рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ VACUUM FULL рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕реЗрд╕ рдПрдХреНрд╕рдХреНрд▓реВрд╕рд┐рд╡ рд╕реНрддрд░ рд▓реЙрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдПрдХреНрд╕реЗрд╕ рд╢реЗрдпрд░ рдХреЗ рд╕рд╛рде рднреА рдХреБрдЫ рднреА рдЕрд╕рдВрдЧрддред (рд▓реЙрдХ рдЯреЗрдмрд▓ рдХрдорд╛рдВрдб рдХреЛ рднреА рдЙрд╕реА рд▓реЙрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред) рд▓реЗрди-рджреЗрди рдХреА рдХрддрд╛рд░реЗрдВред
| => BEGIN; | => LOCK TABLE accounts;
=> SELECT locktype, mode, granted, pid, pg_blocking_pids(pid) AS wait_for FROM pg_locks WHERE relation = 'accounts'::regclass;
locktype | mode | granted | pid | wait_for ----------+---------------------+---------+------+---------- relation | AccessShareLock | t | 4710 | {} relation | AccessExclusiveLock | f | 4746 | {4710} (2 rows)
рд▓реЗрдХрд┐рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрдиреБрд░реЛрдз рдЬрд╛рд░реА рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИ, рдФрд░ рдЕрдм рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ SELECT рдХрдорд╛рдВрдб рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ, рд╡рд╣ "рдлрд┐рд╕рд▓" рд╕рдХрддреА рдереА, рдЬрдмрдХрд┐ VACUUM FULL рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдирд╣реАрдВ - рд╡рд╣ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ VACUUM FULL рдХреЗ рд▓рд┐рдП рдХрддрд╛рд░ рдореЗрдВ рдЬрдЧрд╣ рд▓реЗрддреА рд╣реИред
|| => SELECT * FROM accounts;
=> SELECT locktype, mode, granted, pid, pg_blocking_pids(pid) AS wait_for FROM pg_locks WHERE relation = 'accounts'::regclass;
locktype | mode | granted | pid | wait_for ----------+---------------------+---------+------+---------- relation | AccessShareLock | t | 4710 | {} relation | AccessExclusiveLock | f | 4746 | {4710} relation | AccessShareLock | f | 4782 | {4746} (3 rows)
рд╕реЗрд▓реЗрдХреНрдЯ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдкрд╣рд▓рд╛ рдЯреНрд░рд╛рдВрдЬреЗрдХреНрд╢рди рдкреВрд░рд╛ рд╣реЛрдиреЗ рдФрд░ рд▓реЙрдХ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, VACUUM FULL рдХрдорд╛рдВрдб рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ (рдЬрд┐рд╕реЗ рд╣рдордиреЗ LOCK TABLE рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд╕рд┐рдореНрдпреБрд▓реЗрдЯреЗрдб рдХрд┐рдпрд╛ рд╣реИ)ред
=> COMMIT;
COMMIT
| LOCK TABLE
=> SELECT locktype, mode, granted, pid, pg_blocking_pids(pid) AS wait_for FROM pg_locks WHERE relation = 'accounts'::regclass;
locktype | mode | granted | pid | wait_for ----------+---------------------+---------+------+---------- relation | AccessExclusiveLock | t | 4746 | {} relation | AccessShareLock | f | 4782 | {4746} (2 rows)
рдФрд░ рдХреЗрд╡рд▓ VACUUM FULL рдЕрдкрдирд╛ рдХрд╛рдо рдкреВрд░рд╛ рдХрд░рдиреЗ рдФрд░ рд▓реЙрдХ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдХрддрд╛рд░ рдореЗрдВ рд╕рдВрдЪрд┐рдд рд╕рднреА рдХрдорд╛рдВрдб (рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╕реЗрд▓реЗрдХреНрдЯ) рд╕рдВрдмрдВрдзрд┐рдд рддрд╛рд▓реЗ (рдПрдХреНрд╕реЗрд╕ рд╢реЗрдпрд░) рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░рдиреЗ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред
| => COMMIT;
| COMMIT
|| acc_no | amount || --------+--------- || 2 | 2000.00 || 3 | 3000.00 || 1 | 1100.00 || (3 rows)
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рдЧрд▓рдд рдХрдорд╛рдВрдб рдХрдорд╛рдВрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╛рдлреА рд╕рдордп рддрдХ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдкрдВрдЧреБ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред
рдирд┐рдЧрд░рд╛рдиреА рдЙрдкрдХрд░рдг
рдмреЗрд╢рдХ, рддрд╛рд▓реЗ рд╕рд╣реА рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрд╡рд╛рдВрдЫрдиреАрдп рдЙрдореНрдореАрджреЛрдВ рдХреЛ рдЬрдиреНрдо рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреА рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдХреЛ рдЙрдирдХреЗ рдХрд╛рд░рдг рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдЧрд░рд╛рдиреА рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ рдФрд░ рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ, рдЙрдиреНрд╣реЗрдВ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдмрджрд▓рдХрд░)ред
рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╡рд┐рдзрд┐ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛ рдЧрдП рд╣реИрдВ: рдПрдХ рд▓рдВрдмреЗ рд▓реЙрдХ рдХреЗ рдХреНрд╖рдг рдореЗрдВ, рд╣рдо pg_locks рджреЗрдЦрдиреЗ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЙрдХ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдФрд░ рдЕрд╡рд░реБрджреНрдз рд▓реЗрдирджреЗрди (pg_blocking_pids рдлрд╝рдВрдХреНрд╢рди) рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ pg_stat_activity рдХреЗ рд╕рд╛рде рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛
log_lock_waits рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╕рд░реНрд╡рд░ рдХреЗ рд╕рдВрджреЗрд╢ рд▓реЙрдЧ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджрд┐рдЦрд╛рдИ рджреЗрдЧреА рдпрджрд┐ рд▓реЗрдирджреЗрди
рдбреЗрдбрд▓реЙрдХ_рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд╕реЗ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ (рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдбреЗрдбрд▓реЙрдХ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рдо рд╕рд╛рдорд╛рдиреНрдп рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ)ред
рдЪрд▓реЛ рдЗрд╕реЗ рдЖрдЬрдорд╛рдПрдБред
=> ALTER SYSTEM SET log_lock_waits = on; => SELECT pg_reload_conf();
рдбрд┐рдлрд╝реЙрд▓реНрдЯ
рдЧрддрд┐-рд╕рдордп рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рди рдПрдХ рд╕реЗрдХрдВрдб рд╣реИ:
=> SHOW deadlock_timeout;
deadlock_timeout ------------------ 1s (1 row)
рддрд╛рд▓рд╛ рдмрдЬрд╛рдУред
=> BEGIN; => UPDATE accounts SET amount = amount - 100.00 WHERE acc_no = 1;
UPDATE 1
| => BEGIN; | => UPDATE accounts SET amount = amount + 100.00 WHERE acc_no = 1;
рджреВрд╕рд░рд╛ UPDATE рдХрдорд╛рдВрдб рд▓реЙрдХ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИред рдПрдХ рджреВрд╕рд░реЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдФрд░ рдкрд╣рд▓реЗ рд▓реЗрдирджреЗрди рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдВред
=> SELECT pg_sleep(1); => COMMIT;
COMMIT
рдЕрдм рджреВрд╕рд░рд╛ рд▓реЗрди-рджреЗрди рдкреВрд░рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
| UPDATE 1
| => COMMIT;
| COMMIT
рдФрд░ рд╕рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЬрд╛рдирдХрд╛рд░реА рдкрддреНрд░рд┐рдХрд╛ рдореЗрдВ рдорд┐рд▓реА:
postgres$ tail -n 7 /var/log/postgresql/postgresql-11-main.log
2019-08-07 15:26:30.827 MSK [5898] student@test LOG: process 5898 still waiting for ShareLock on transaction 529427 after 1000.186 ms 2019-08-07 15:26:30.827 MSK [5898] student@test DETAIL: Process holding the lock: 5862. Wait queue: 5898. 2019-08-07 15:26:30.827 MSK [5898] student@test CONTEXT: while updating tuple (0,4) in relation "accounts" 2019-08-07 15:26:30.827 MSK [5898] student@test STATEMENT: UPDATE accounts SET amount = amount + 100.00 WHERE acc_no = 1;
2019-08-07 15:26:30.836 MSK [5898] student@test LOG: process 5898 acquired ShareLock on transaction 529427 after 1009.536 ms 2019-08-07 15:26:30.836 MSK [5898] student@test CONTEXT: while updating tuple (0,4) in relation "accounts" 2019-08-07 15:26:30.836 MSK [5898] student@test STATEMENT: UPDATE accounts SET amount = amount + 100.00 WHERE acc_no = 1;
рдЬрд╛рд░реА рд░рдЦрд╛ рдЬрд╛рдП ред