PostgreSQL рдореЗрдВ рддрд╛рд▓реЗ: 1. рд╕рдВрдмрдВрдз рддрд╛рд▓реЗ

рд▓реЗрдЦреЛрдВ рдХреА рдкрд┐рдЫрд▓реА рджреЛ рд╢реНрд░реГрдВрдЦрд▓рд╛рдУрдВ рдиреЗ рдЕрд▓рдЧрд╛рд╡ рдФрд░ рдмрд╣реБрд╕рдВрд╕реНрдХреГрддрд┐рд╡рд╛рдж рдФрд░ рдЬрд░реНрдирд▓рд┐рдВрдЧ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИред

рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рд╣рдо рддрд╛рд▓реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред рдореИрдВ рдЗрд╕ рд╢рдмреНрдж рдХрд╛ рдкрд╛рд▓рди рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рд╕рд╛рд╣рд┐рддреНрдп рдореЗрдВ рдПрдХ рдФрд░ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: рдорд╣рд▓ ред

рдЪрдХреНрд░ рдореЗрдВ рдЪрд╛рд░ рднрд╛рдЧ рд╣реЛрдВрдЧреЗ:

  1. рд░рд┐рд╢реНрддреЗ рдХреЗ рддрд╛рд▓реЗ (рдпрд╣ рд▓реЗрдЦ);
  2. рдкрдВрдХреНрддрд┐ рддрд╛рд▓реЗ ;
  3. рдЕрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЗ рддрд╛рд▓реЗ рдФрд░ рд╡рд┐рдзреЗрдп рддрд╛рд▓реЗ;
  4. рд░реИрдо рдореЗрдВ рддрд╛рд▓реЗ ред

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



рддрд╛рд▓реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рдирдХрд╛рд░реА


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

рд╕рд╛рдЭрд╛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рддрдХ рд╕рдорд╡рд░реНрддреА рдкрд╣реБрдВрдЪ рдХреЛ рд╕реБрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд╛рд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдкрд╣реБрдВрдЪ рд╕реЗ рддрд╛рддреНрдкрд░реНрдп рдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдПрдХ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рд╕реЗ рд╣реИред рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕реНрд╡рдпрдВ рд╕рдорд╛рдирд╛рдВрддрд░ (рдпрджрд┐ рдЙрдкрдХрд░рдг рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ) рдФрд░ рд╕рдордп-рд╕рд╛рдЭрд╛рдХрд░рдг рдореЛрдб рдореЗрдВ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рджреЛрдиреЛрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред

рдпрджрд┐ рдХреЛрдИ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рддрд╛рд▓реЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд╛рдЭрд╛ рдмрдлрд░ рдХреИрд╢ рдореЗрдВ рддрд╛рд▓реЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╕реНрдерд╛рдиреАрдп рд╡реНрдпрдХреНрддрд┐ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)ред

рдХрд┐рд╕реА рд╕рдВрд╕рд╛рдзрди рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЙрд╕ рд╕рдВрд╕рд╛рдзрди рд╕реЗ рдЬреБрдбрд╝реЗ рд▓реЙрдХ рдХрд╛ рдЕрдзрд┐рдЧреНрд░рд╣рдг рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣реА рд╣реИ, рд╣рдо рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрдиреБрд╢рд╛рд╕рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ: рдЬрдм рддрдХ рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рд╕рд╛рдЭрд╛ рд╕рдВрд╕рд╛рдзрди рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдкрд┐рдд рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреА рд╣реИрдВ, рддрдм рддрдХ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдбреАрдмреАрдПрдордПрд╕ рддрд╛рд▓реЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕реНрд╡рдпрдВ рдЖрджреЗрд╢ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддрд╛ рд╣реИ; рдпрджрд┐ рдЖрд╡реЗрджрди рджреНрд╡рд╛рд░рд╛ рдЕрд╡рд░реБрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рджрд╛рдпрд┐рддреНрд╡ рдЙрд╕ рдкрд░ рдкрдбрд╝рддрд╛ рд╣реИред

рдирд┐рдореНрди рд╕реНрддрд░ рдкрд░, рдПрдХ рд▓реЙрдХ рдХреЛ рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рдХреЗ рдПрдХ рдЦрдВрдб рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рдиреЛрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд▓реЙрдХ рдореБрдлреНрдд рд╣реИ рдпрд╛ рдХрдмреНрдЬрд╛ рдХрд░ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдФрд░, рд╕рдВрднрд╡рддрдГ, рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рджрд░реНрдЬ рдХреА рдЧрдИ рд╣реИ: рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдВрдЦреНрдпрд╛, рдХреИрдкреНрдЪрд░ рд╕рдордп, рдЖрджрд┐)ред

рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рд╛рдЭрд╛ рдХреА рдЧрдИ рдореЗрдореЛрд░реА рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдПрдХ рд╕рдВрд╕рд╛рдзрди рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛рддреНрдордХ рдкрд╣реБрдВрдЪ рд╕рдВрднрд╡ рд╣реИред рдпрджрд┐ рд╣рдо рдиреАрдЪреЗ рдПрдХ рд╕реНрддрд░ рдиреАрдЪреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдУрдПрд╕ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╡рд┐рд╢реЗрд╖ рд╕рд╣рд╛рдпрдХ рдкреНрд░рд╛рдЗрдореЗрдЯрд┐рд╡ (рдЬреИрд╕реЗ рдХрд┐ рд╕реЗрдореАрдлреЛрд░реНрд╕ рдпрд╛ рдореНрдпреВрдЯреЗрдХреНрд╕) рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХреНрд╕реЗрд╕ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрдирдХрд╛ рдЕрд░реНрде рдпрд╣ рд╣реИ рдХрд┐ рд╕рд╛рдЭрд╛ рд╕рдВрд╕рд╛рдзрди рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреЛ рдПрдХ рд╕рдордп рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдирд┐рдореНрдирддрдо рд╕реНрддрд░ рдкрд░, рдпреЗ рдкреНрд░рд╛рдЗрдорд┐рдЯрд┐рд╡ рдкрд░рдорд╛рдгреБ рдкреНрд░реЛрд╕реЗрд╕рд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ (рдЬреИрд╕реЗ рдХрд┐ рдкрд░реАрдХреНрд╖рдг-рдФрд░-рд╕реЗрдЯ рдпрд╛ рддреБрд▓рдирд╛-рдФрд░-рд╕реНрд╡реИрдк) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рд▓реЙрдХ рдХреЛ рд░рд┐рд▓реАрдЬрд╝ рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЕрдиреНрдп рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВред

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

рдХрднреА-рдХрднреА рдЕрдиреНрдп рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрд╣реБ- рд╕рдВрд╕реНрдХрд░рдг рддрдВрддреНрд░ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдПрдХ-рджреВрд╕рд░реЗ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд┐рдП рдмрд┐рдирд╛ рдбреЗрдЯрд╛ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдПрдХ рд╕рдВрд░рдХреНрд╖рд┐рдд рд╕рдВрд╕рд╛рдзрди рдХреБрдЫ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрджрд┐ рдХреЗрд╡рд▓ рдЗрд╕ рд╕рдВрд╕рд╛рдзрди рдХреЛ рдЕрд╡рд░реБрджреНрдз рдкрддреЗ рдХреЗ рд╕рд╛рде рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд╣рдЪрд╛рдирд╛ рдФрд░ рдорд┐рд▓рд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

рддрд╛рд▓реЛрдВ рдХреА рдкреНрд░рднрд╛рд╡рд╢реАрд▓рддрд╛ рдХрдИ рдХрд╛рд░рдХреЛрдВ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрддреА рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╣рдо рджреЛ рдХреЛ рдЕрд▓рдЧ рдХрд░рддреЗ рд╣реИрдВред

  • рдпрджрд┐ рд╕рдВрд╕рд╛рдзрди рдПрдХ рдкрджрд╛рдиреБрдХреНрд░рдо рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЧреНрд░реИрдиреНрдпреБрд▓реИрд░рд┐рдЯреА (рдЧреНрд░реИрдиреНрдпреБрд▓реИрд░рд┐рдЯреА) рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

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

    рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рддрд╛рд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реЛрддреА рд╣реИ (рдЬрд╛рдирдХрд╛рд░реА рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реНрдореГрддрд┐ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП)ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рддрд╛рд▓реЗ рдХреЗ рд╕реНрддрд░ (рд╡реГрджреНрдзрд┐) рдореЗрдВ рд╡реГрджреНрдзрд┐ рд▓рд╛рдЧреВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ: рдЬрдм рдирд┐рдореНрди-рд╕реНрддрд░ рдХреА рд╕рдВрдЦреНрдпрд╛, рджрд╛рдиреЗрджрд╛рд░ рддрд╛рд▓реЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реАрдорд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреЗ рдПрдХ рд▓реЙрдХ рдХреЗ рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рддрд╛рд▓реЗ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореЛрдб рдореЗрдВ рдХреИрдкреНрдЪрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

    рдореЛрдб рдХреЗ рдирд╛рдо рдмрд┐рд▓реНрдХреБрд▓ рдордирдорд╛рдиреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдЙрдирдХреА рд╕рдВрдЧрддрддрд╛ рдХрд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдХрд┐рд╕реА рднреА рдореЛрдб рдХреЗ рд╕рд╛рде рдЕрд╕рдВрдЧрдд рдПрдХ рдореЛрдб (рд╕реНрд╡рдпрдВ рдХреЗ рд╕рд╛рде) рдХреЛ рдЖрдорддреМрд░ рдкрд░ рдЕрдирдиреНрдп рдпрд╛ рдЕрдирдиреНрдп рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдореЛрдб рд╕рдВрдЧрдд рд╣реИрдВ, рддреЛ рдПрдХ рд╕рд╛рде рдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рд▓реЙрдХ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ; рдРрд╕реЗ рдореЛрдб рдХреЛ рд╕рд╛рдЭрд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдЕрдзрд┐рдХ рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХреЛ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЕрдзрд┐рдХ рдЕрд╡рд╕рд░ рд╕рдорд╛рдирддрд╛ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рдордп рдХреЗ рдЕрдиреБрд╕рд╛рд░, рддрд╛рд▓реЗ рдХреЛ рд▓рдВрдмреЗ рдФрд░ рдЫреЛрдЯреЗ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

  • рд▓рдВрдмреЗ рд╕рдордп рддрдХ рддрд╛рд▓реЗ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ (рдЖрдорддреМрд░ рдкрд░ рд▓реЗрдирджреЗрди рдХреЗ рдЕрдВрдд рддрдХ) рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдХреНрд╕рд░ рддрд╛рд▓рд┐рдХрд╛рдУрдВ (рд░рд┐рд╢реНрддреЛрдВ) рдФрд░ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдЬреИрд╕реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрддрд╛ рд╣реИред PostgreSQL рдЖрдорддреМрд░ рдкрд░ рдЗрди рддрд╛рд▓реЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рдХреБрдЫ рдирд┐рдпрдВрддреНрд░рдг рд╣реЛрддрд╛ рд╣реИред

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

    рд▓рдШреБ рддрд╛рд▓реЛрдВ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдиреНрдпреВрдирддрдо рдореЛрдб (рдЕрдирдиреНрдп рдФрд░ рд╕рд╛рдЭрд╛) рдФрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рд╕реЗ рд╣реЛрддреА рд╣реИред рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдирд┐рдЧрд░рд╛рдиреА рдЙрдкрдХрд░рдг рднреА рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

PostgreSQL рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рддрд╛рд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрддрд░ рдкрд░ рддрд╛рд▓реЗ рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рд╣реИрдВ, "рд╣реИрд╡реАрд╡реЗрдЯ" рддрд╛рд▓реЗ ред рдпрд╣рд╛рдВ рдХреЗ рд╕рдВрд╕рд╛рдзрди рд╕рдВрдмрдВрдз рдФрд░ рдЕрдиреНрдп рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВред рдпрджрд┐ рдкрд╛рда рдореЗрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рдЕрд╡рд░реБрджреНрдз рд╢рдмреНрдж рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдРрд╕реЗ "рд╕рд╛рдорд╛рдиреНрдп" рдЕрд╡рд░реЛрдз рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред

рд▓рдВрдмреЗ рд╕рдордп рддрдХ рддрд╛рд▓реЗ рдХреЗ рдмреАрдЪ, рдкрдВрдХреНрддрд┐-рд╕реНрддрд░реАрдп рддрд╛рд▓реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЦрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВред рдЙрдирдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЙрдирдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рд╢рд╛рд▓ рд╕рдВрдЦреНрдпрд╛ (рдПрдХ рд▓реЗрдирджреЗрди рдореЗрдВ рдПрдХ рд▓рд╛рдЦ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдХрд▓реНрдкрдирд╛) рдХреЗ рдХрд╛рд░рдг рдЕрдиреНрдп рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рддрд╛рд▓реЛрдВ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рддрд╛рд▓реЗ рдкрд░ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред

рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рддреАрд╕рд░рд╛ рд▓реЗрдЦ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрддрд░ рдкрд░ рд╢реЗрд╖ рддрд╛рд▓реЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реЛрдЧрд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╡рд┐рдзреЗрдп рддрд╛рд▓реЗ (рдЪреВрдВрдХрд┐ рдЗрди рд╕рднреА рддрд╛рд▓реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЙрд╕реА рддрд░рд╣ рд░реИрдо рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреА рд╣реИ)ред

рд▓рдШреБ рддрд╛рд▓реЛрдВ рдореЗрдВ рд░реИрдо рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрд╛рд▓реЗ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЪрдХреНрд░ рдХреЗ рдЕрдВрддрд┐рдо рд▓реЗрдЦ рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред

рд╡рд╕реНрддреБ рддрд╛рд▓реЗ


рддреЛ, рд╣рдо рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрддрд░ рдХреЗ рддрд╛рд▓реЗ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ, рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЛ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рд╕рдВрдмрдВрдзреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН рдЯреЗрдмрд▓, рдЗрдВрдбреЗрдХреНрд╕, рдЕрдиреБрдХреНрд░рдо, рднреМрддрд┐рдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡, рд▓реЗрдХрд┐рди рдХреБрдЫ рдЕрдиреНрдп рд╕рдВрд╕реНрдерд╛рдПрдВ рднреАред рдпреЗ рддрд╛рд▓реЗ рдЖрдорддреМрд░ рдкрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдмрджрд▓рдиреЗ рд╕реЗ рдпрд╛ рд╡рд╕реНрддреБ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рджреМрд░рд╛рди рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╕реЗ рдмрдЪрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП рднреАред

рдзреБрдБрдзрд▓реА рдХреАрдбрд╝рд╛? рдпрд╣ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рд╕рдореВрд╣ рдХреЗ рддрд╛рд▓реЗ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдпреЛрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдХреНрдпрд╛ рдПрдХрдЬреБрдЯ рдХрд░рддрд╛ рд╣реИ, рдХреИрд╕реЗ рдЙрдирдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХреА рдЬрд╛рддреА рд╣реИред

рдпреБрдХреНрддрд┐


рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реЙрдХ рд╕рд░реНрд╡рд░ рдХреА рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВред рдЙрдирдХреА рд╕рдВрдЦреНрдпрд╛ рджреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдЙрддреНрдкрд╛рдж рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рд╣реИ: max_locks_per_transaction ├Ч max_connections ред

рд▓реЙрдХ рд▓реЗрди-рджреЗрди рд╕рднреА рд▓реЗрди-рджреЗрди рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╣реИ, рдЕрд░реНрдерд╛рдд, рдПрдХ рд▓реЗрди-рджреЗрди max_locks_per_transaction рд╕реЗ рдЕрдзрд┐рдХ рддрд╛рд▓реЛрдВ рдХреЛ рдкрдХрдбрд╝ рд╕рдХрддрд╛ рд╣реИ: рдпрд╣ рдХреЗрд╡рд▓ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХреБрд▓ рддрд╛рд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реАрдорд╛ рд╕реЗ рдЕрдзрд┐рдХ рди рд╣реЛред рдкреВрд▓ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рджреЛрдиреЛрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рд░рд┐рдмреВрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рд╕рднреА рддрд╛рд▓реЗ pg_locks рджреГрд╢реНрдп рдореЗрдВ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдпрджрд┐ рд╕рдВрд╕рд╛рдзрди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрд╕рдВрдЧрдд рдореЛрдб рдореЗрдВ рдмрдВрдж рд╣реИ, рддреЛ рдЗрд╕ рд╕рдВрд╕рд╛рдзрди рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд▓реЗрди-рджреЗрди рдХрддрд╛рд░рдмрджреНрдз рд╣реИ рдФрд░ рд▓реЙрдХ рдЬрд╛рд░реА рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИред рд▓рдВрдмрд┐рдд рд▓реЗрдирджреЗрди рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрднреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ: рд╕рдВрдмрдВрдзрд┐рдд рд╕реЗрд╡рд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ "рд╕реЛ рдЬрд╛рддреЗ рд╣реИрдВ" рдФрд░ рд╕рдВрд╕рд╛рдзрди рдЬрд╛рд░реА рд╣реЛрдиреЗ рдкрд░ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдЙрдарддрд╛ рд╣реИред

рдПрдХ рдЧрддрд┐рд░реЛрдз рдХреА рд╕реНрдерд┐рддрд┐ рд╕рдВрднрд╡ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд▓реЗрди-рджреЗрди рдХреЛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рджреВрд╕рд░реЗ рд▓реЗрдирджреЗрди рдХреЗ рдХрдмреНрдЬреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╕рд╛рдзрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рджреВрд╕рд░реЗ рдХреЛ рдкрд╣рд▓реЗ (рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдПрдХ рдЧрддрд┐рд░реЛрдз рдФрд░ рджреЛ рд╕реЗ рдЕрдзрд┐рдХ рд▓реЗрдирджреЗрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ) рджреНрд╡рд╛рд░рд╛ рдХрдмреНрдЬрд╛ рдХрд┐рдП рдЧрдП рд╕рдВрд╕рд╛рдзрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░рддреАрдХреНрд╖рд╛ рдЕрдирд┐рд╢реНрдЪрд┐рдд рдХрд╛рд▓ рддрдХ рдЬрд╛рд░реА рд░рд╣реЗрдЧреА, рдЗрд╕рд▓рд┐рдП PostgreSQL рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдФрд░ рд▓реЗрдирджреЗрди рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдирд┐рд░рд╕реНрдд рдХрд░ рджреЗрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЕрдиреНрдп рд▓реЛрдЧ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦ рд╕рдХреЗрдВред (рд╣рдо рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдЧрддрд┐рд░реЛрдзреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред)

рд╡рд╕реНрддреБ рдкреНрд░рдХрд╛рд░


рдпрд╣рд╛рдВ рддрд╛рд▓реЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рджреА рдЧрдИ рд╣реИ (рдпрд╛, рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ, рддреЛ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдкреНрд░рдХрд╛рд░) рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдЗрд╕ рдФрд░ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рджреЗрдЦреЗрдВрдЧреЗред рдирд╛рдо pg_locks рджреГрд╢реНрдп рдХреЗ рд▓реЙрдХрдЯрд╛рдЗрдк рдХреЙрд▓рдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рджрд┐рдП рдЧрдП рд╣реИрдВред

  • рд╕рдВрдмрдВрдз

    рд░рд┐рд╢реНрддреЗ рдХреЛ рддрд╛рд▓реЗред
  • рд▓реЗрди-рджреЗрди рдФрд░ virtualxid

    рдПрдХ рд▓реЗрдирджреЗрди рд╕рдВрдЦреНрдпрд╛ (рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдпрд╛ рдЖрднрд╛рд╕реА) рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рдирд╛ред рдкреНрд░рддреНрдпреЗрдХ рд▓реЗрдирджреЗрди рдореЗрдВ рд╕реНрд╡рдпрдВ рдЕрдкрдиреЗ рдирдВрдмрд░ рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓реЙрдХ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдРрд╕реЗ рд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд▓реЗрдирджреЗрди рдХреЗ рдЕрдВрдд рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
  • рдЯрдкрд▓

    рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдВрд╕реНрдХрд░рдг рд▓реЙрдХред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдПрдХ рд╣реА рдкрдВрдХреНрддрд┐ рдХреЛ рд▓реЙрдХ рдХрд░рдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рд▓реЗрдирджреЗрди рдХреЗ рдмреАрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╣рдо рдЪрдХреНрд░ рдореЗрдВ рддреАрд╕рд░реЗ рд▓реЗрдЦ рддрдХ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рддрд╛рд▓реЗ рдХреА рдЪрд░реНрдЪрд╛ рдХреЛ рд╕реНрдердЧрд┐рдд рдХрд░ рджреЗрдВрдЧреЗред рдЙрди рд╕рднреА рдХреЛ рдпрд╛ рддреЛ рдХреЗрд╡рд▓ рдЕрд╕рд╛рдзрд╛рд░рдг рдореЛрдб рдореЗрдВ, рдпрд╛ рдЕрдирдиреНрдп рдФрд░ рд╕рд╛рдЭрд╛ рдореЗрдВ рдХреИрдкреНрдЪрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

  • рд╡рд┐рд╕реНрддрд╛рд░

    рдХрд┐рд╕реА рднреА рд░рд┐рд╢реНрддреЗ рдХреА рдлрд╛рдЗрд▓ рдореЗрдВ рдкреЗрдЬ рдЬреЛрдбрд╝рддреЗ рд╕рдордп рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рд╡рд╕реНрддреБ

    рдЙрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд▓реЙрдХ рдХрд░рдирд╛ рдЬреЛ рд░рд┐рд╢реНрддреЗ рдирд╣реАрдВ рд╣реИрдВ (рдбреЗрдЯрд╛рдмреЗрд╕, рд╕реНрдХреАрдорд╛, рд╕рджрд╕реНрдпрддрд╛, рдЖрджрд┐)ред
  • рдкреЗрдЬ

    рдкреГрд╖реНрда рд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╛рд░-рдмрд╛рд░ рдФрд░ рдХреЗрд╡рд▓ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрдХреНрд░рдорд┐рдд рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рд╕рд▓рд╛рд╣рдХрд╛рд░

    рдЕрдиреБрд╢рдВрд╕рд┐рдд рдЕрд╡рд░реБрджреНрдз, рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рддред

рд░рд┐рд╢реНрддреЗ рдХреЛ рддрд╛рд▓реЗ


рд╕рдВрджрд░реНрдн рди рдЦреЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЪрд┐рддреНрд░ рдХреЛ рдЙрди рдкреНрд░рдХрд╛рд░ рдХреЗ рддрд╛рд▓реЛрдВ рдкрд░ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реВрдВрдЧрд╛, рдЬрд┐рдирдХреА рдЪрд░реНрдЪрд╛ рдмрд╛рдж рдореЗрдВ рдХреА рдЬрд╛рдПрдЧреАред



рдореЛрдб


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

рдЗрди рддрд░реАрдХреЛрдВ рдХреЛ рджрд┐рд▓ рд╕реЗ рд╕реАрдЦрдиреЗ рдпрд╛ рдЙрдирдХреЗ рдирд╛рдореЛрдВ рдХреЗ рдЕрд░реНрде рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ; рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╕рд╣реА рд╕рдордп рдкрд░ рдЖрдкрдХреА рдЖрдВрдЦреЛрдВ рдХреЗ рд╕рд╛рдордиреЗ рдПрдХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдЯрдХрд░рд╛рд╡ рдХреЛ рдХреМрди рд░реЛрдХрддрд╛ рд╣реИред рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЙрдкрдпреБрдХреНрдд рд▓реЙрдХрд┐рдВрдЧ рд╕реНрддрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╡рд╛рд▓реЗ рдХрдорд╛рдВрдб рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдпрд╣рд╛рдВ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

рд▓реЙрдХ рдореЛрдбрдХреЗ рд░реВрдк рдореЗрдВрд░реБрдкрдпреЗрдЖрд░рдИрд╕реНрдпреВрдПрд╕рдПрд╕рдЖрд░рдИрдПрдПрдИрдирдореВрдирд╛ SQL рдЖрджреЗрд╢
рдкрд╣реБрдВрдЪ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВрдПрдХреНрд╕рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
рдкрдВрдХреНрддрд┐ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВрдПрдХреНрд╕рдПрдХреНрд╕рдЕрджреНрдпрддрди / рд╢реЗрдпрд░ рдХреЗ рд▓рд┐рдП рдЪрдпрди рдХрд░реЗрдВ
рдкрдВрдХреНрддрд┐ рд╡рд┐рд╢реЗрд╖рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕INSERT, UPDATE, DELETE
рд╢реЗрдпрд░ рдЕрдкрдбреЗрдЯ рдПрдХреНрд╕рдХреНрд▓реВрд╕рд┐рд╡рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рд╡реИрдХреБрдо, рдЕрдиреНрдп рддрд╛рд▓рд┐рдХрд╛ * , рднрд╛рд░рдд рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдмрдирд╛рдПрдБ
рд╢реЗрдпрд░рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдкреИрджрд╛ рдХрд░рдирд╛
рд╢реЗрдпрд░ рдПрдХреНрд╕рдХреНрд▓реВрд╕рд┐рд╡рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдмрдирд╛рдиреЗ рдХрд╛ рдХрд╛рдо, рдмреЗрд╣рддрд░ рдЯреЗрдмрд▓ *
рдЕрдирдиреНрдпрдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рд░реЗрдлрд░реА рдореЗрдЯред рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рджреЗрдЦреЗрдВ
рдЕрдирдиреНрдп рдкрд╣реБрдБрдЪрдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕DROP, TRUNCATE, VACUUM FULL, LOCK TABLE, ALTER TABLE * , REFRESH MATред рджреЗрдЦреЗрдВ

рдХреБрдЫ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ:

  • рдкрд╣рд▓реЗ 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; --  VACUUM FULL 

 => 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; 

рдЬрд╛рд░реА рд░рдЦрд╛ рдЬрд╛рдП ред

Source: https://habr.com/ru/post/hi462877/


All Articles