рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ django рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ postgresql рдХреЗ рд▓рд┐рдП рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдХреАрдорд╛ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдирд╛

рдкрд░рд┐рдЪрдп


рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░!


рдореИрдВ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдФрд░ django рдХреЗ рд▓рд┐рдП рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд▓рд┐рдЦрдиреЗ рдХрд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, django рдпрд╣рд╛рдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдореЙрдбрд▓ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдбреЗрдЯрд╛ рдпреЛрдЬрдирд╛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╣реИ, рдЕрд░реНрдерд╛рдд, рдЗрд╕ рдпреЛрдЬрдирд╛ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рд╕рдВрдЪрд╛рд▓рди рдХреА рдПрдХ рдкреВрд░реА рд╕реВрдЪреА рд╣реИред Django рдХреЛ рдХрд┐рд╕реА рднреА рдкрд╕рдВрджреАрджрд╛ рдврд╛рдВрдЪреЗ / рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдорд╛рди рд╣реЛрдЧрд╛ред


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


рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВ рдЖрдЧреЗ рдЬрд╛рдКрдВ, рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдзрд╛рд░рдгрд╛рдПрдВ рдмрдирд╛рдиреЗ рджреЗрдВред


рдЖрдк рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реНрдХ рдХреЛ 3 рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


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

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


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


рд░реЛрд▓ рдЖрдЙрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛


рдмрд╛рд╣рд░ рд░реЛрд▓ рдХрд░рддреЗ рд╕рдордп рдореБрдЦреНрдп рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ:


  1. рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЖрдзрд╛рд░ рд╣реИред
  2. рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрдИ рдорд╢реАрдиреЗрдВ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдШреВрдорддрд╛ рд╣реИред
  3. рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдХрд╛рд░реЗрдВ рдмреИрд▓реЗрдВрд╕рд░ рдХреЗ рдкреАрдЫреЗ рдЫрд┐рдкреА рд╣реБрдИ рд╣реИрдВред
  4. рд╣рдорд╛рд░рд╛ рдЖрд╡реЗрджрди рдкрд╣рд▓реЗ, рдЙрд╕рдХреЗ рджреМрд░рд╛рди рдФрд░ рдмрд╛рдж рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрд╢рди (рдкреБрд░рд╛рдиреЗ рдХреЛрдб рдкреБрд░рд╛рдиреЗ рдФрд░ рдирдП рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдХреАрдорд╛ рдХреЗ рд╕рд╛рде рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ) рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
  5. рд╣рдорд╛рд░рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛рд░реЛрдВ рдкрд░ рдХреЛрдб рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рджреМрд░рд╛рди, рдЙрд╕рдХреЗ рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдкреБрд░рд╛рдиреЗ рдФрд░ рдирдП рдХреЛрдб рд╡рд░реНрддрдорд╛рди рдбреЗрдЯрд╛рдмреЗрд╕ рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ)ред

рдпрджрд┐ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЗрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЛрд▓рдЖрдЙрдЯ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрди рд╢рд░реНрддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЫреЛрдЯреЗ рд░реЛрд▓рдЖрдЙрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдбрд╛рдЙрдирдЯрд╛рдЗрдо рд╣реИред


рдкреНрд░рддреНрдпрдХреНрд╖ рд░реЛрд▓рд┐рдВрдЧ рдЖрджреЗрд╢:


  1. рдкреНрд░рд╡рд╛рд╕ рдореЗрдВ рдмрд╛рдврд╝;
  2. рдмреИрд▓реЗрдВрд╕рд░ рд╕реЗ рдПрдХ рдорд╢реАрди рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛, рдорд╢реАрди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдФрд░ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛, рдорд╢реАрди рдХреЛ рдмреИрд▓реЗрдВрд╕рд░ рдХреЛ рд▓реМрдЯрд╛ рджрд┐рдпрд╛;
  3. рд╕рднреА рдХрд╛рд░реЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдХреЛ рджреЛрд╣рд░рд╛рдпрд╛ред

рд░рд┐рд╡рд░реНрд╕ рд░реЛрд▓-рдЖрдЙрдЯ рдСрд░реНрдбрд░ рдЯреЗрдмрд▓ рдФрд░ рдХреЙрд▓рдореЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ, рдЬрдм рд╣рдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ CI рдХреЗ рд╕рднреА рдорд╛рдЗрдЧреНрд░реЗрд╢рдиреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рдорд╛рдиреНрдп рдХрд░рддреЗ рд╣реИрдВ:


  1. рдмреИрд▓реЗрдВрд╕рд░ рд╕реЗ рдПрдХ рдорд╢реАрди рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛, рдорд╢реАрди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдФрд░ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛, рдорд╢реАрди рдХреЛ рдмреИрд▓реЗрдВрд╕рд░ рдХреЛ рд▓реМрдЯрд╛ рджрд┐рдпрд╛;
  2. рд╕рднреА рдХрд╛рд░реЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдХреЛ рджреЛрд╣рд░рд╛рдпрд╛;
  3. рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдореЗрдВ рдмрд╛рдврд╝ рдЖ рдЧрдИред

рд╕рд┐рджреНрдзрд╛рдВрдд


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


рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдореЗрдВ рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рддрд╛рд▓реЗ рд╣реЛрддреЗ рд╣реИрдВ, рдЖрдк рдпрд╣рд╛рдВ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд┐рд╖рдп рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдХреЗрд╡рд▓ рдЯреЗрдмрд▓ рдХреЛ рдХрд╡рд░ рдХрд░реВрдВрдЧрд╛ рдФрд░ рддрд╛рд▓реЗ рд▓рд┐рдЦреВрдВрдЧрд╛ред


рдЯреЗрдмрд▓ рд╕реНрддрд░ рдХреЗ рддрд╛рд▓реЗ


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


ACCESS SHAREROW SHAREROW EXCLUSIVESHARE UPDATE EXCLUSIVESHARESHARE ROW EXCLUSIVEEXCLUSIVEACCESS EXCLUSIVE
ACCESS SHAREрдПрдХреНрд╕
ROW SHAREрдПрдХреНрд╕рдПрдХреНрд╕
ROW EXCLUSIVEрдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕
SHARE UPDATE EXCLUSIVEрдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕
SHAREрдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕
SHARE ROW EXCLUSIVEрдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕
EXCLUSIVEрдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕
ACCESS EXCLUSIVEрдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ALTER TABLE tablename ADD COLUMN newcolumn integer рдФрд░ SELECT COUNT(*) FROM tablename рдХреЛ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рд╕рдЦреНрддреА рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рд╣рдо рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ COUNT(*) рдкрд░ рд▓реМрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реЗ рдХреЙрд▓рдо рд╣реИрдВред


Django рдХреЗ рдорд╛рдЗрдЧреНрд░реЗрд╢рди (рдиреАрдЪреЗ рдкреВрд░реА рд╕реВрдЪреА) рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдСрдкрд░реЗрд╢рди рдФрд░ рдЙрдирдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рддрд╛рд▓реЗ рд╣реИрдВ:


рдЕрд╡рд░реБрджреНрдзрд╕рдВрдЪрд╛рд▓рди
ACCESS EXCLUSIVECREATE SEQUENCE , DROP SEQUENCE , CREATE TABLE , DROP TABLE , рдЕрдиреНрдп ALTER TABLE , DROP INDEX
SHARECREATE INDEX
SHARE UPDATE EXCLUSIVECREATE INDEX CONCURRENTLY , DROP INDEX CONCURRENTLY , ALTER TABLE VALIDATE CONSTRAINT

рд╕рднреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ, рд╕рднреА ALTER TABLE рдореЗрдВ рдПрдХ рд╕рдорд╛рди рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓реЙрдХ рдирд╣реАрдВ рд╣реИ, рд╕рд╛рде рд╣реА django рдХреЗ рдорд╛рдЗрдЧреНрд░реЗрд╢рдиреЛрдВ рдореЗрдВ CREATE INDEX CONCURRENTLY рдФрд░ ALTER TABLE VALIDATE CONSTRAINT , рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рдорд╛рдирдХ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд┐рдП рдЗрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред


рдпрджрд┐ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ рдереНрд░реЗрдб рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рдм рдХреБрдЫ рдЕрдЪреНрдЫрд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХрд┐рд╕реА рдЕрдиреНрдп рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рд╕рдВрдШрд░реНрд╖ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░рд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдФрд░ рд╕рдВрдШрд░реНрд╖ рдХреЗ рджреМрд░рд╛рди рд╣реА рдХрд╛рдо рдХрд░реЗрдЧрд╛ред


рдЕрд╡рд░реБрджреНрдзрд╕рдВрдЪрд╛рд▓рдирддрд╛рд▓реЗ рдХреЗ рд╕рд╛рде рд╕рдВрдШрд░реНрд╖рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╕рд╛рде рд╡рд┐рд░реЛрдз
ACCESS SHARESELECTACCESS EXCLUSIVEALTER TABLE , DROP INDEX
ROW SHARESELECT FOR UPDATEACCESS EXCLUSIVE , EXCLUSIVEALTER TABLE , DROP INDEX
ROW EXCLUSIVEINSERT , UPDATE , DELETEACCESS EXCLUSIVE , EXCLUSIVE , SHARE ROW EXCLUSIVE , SHAREALTER TABLE , DROP INDEX , CREATE INDEX

рдпрд╣рд╛рдВ рджреЛ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


  1. рдЕрдЧрд░ рдЖрд╕рд╛рди рд▓реЙрдХрд┐рдВрдЧ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ CREATE INDEX рдФрд░ CREATE INDEX CONCURRENTLY рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  2. рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рд╕реНрдХреАрдорд╛ рд╕рдВрдШрд░реНрд╖ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдорд╛рдЗрдЧреНрд░реЗрд╢рди, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡реЗ ACCESS EXCLUSIVE рд╕рд╛рде рд╕рдВрдШрд░реНрд╖ рдХрд░рддреЗ рд╣реИрдВ, ACCESS EXCLUSIVE , рд╣рдо рдЗрд╕ рд▓реЙрдХ рдХреЛ рдкрдХрдбрд╝рддреЗ рд╕рдордп рднреА SELECT рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рд╕рдВрднрд╡рддрдГ рдпрд╣рд╛рдВ рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЬрдм рдпрд╣ рдСрдкрд░реЗрд╢рди рддреБрд░рдВрдд рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╣рдорд╛рд░рд╛ рдбрд╛рдЙрдирдЯрд╛рдЗрдо рд╣реЛрдЧрд╛ рдХреБрдЫ рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдПред

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


рд░рд┐рдХреЙрд░реНрдб рддрд╛рд▓реЗ


рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд╕реНрддрд░ рдкрд░, рд╡рд╣рд╛рдБ рднреА рддрд╛рд▓реЗ рд╣реИрдВ https://www.postgresql.org/docs/current/static/explicit-locking.html#LOCKING-ROWS , рд╡реЗ рднреА рд╕рдВрдШрд░реНрд╖ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдХреЗрд╡рд▓ рд╣рдорд╛рд░реЗ рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:


FOR KEY SHAREFOR SHAREFOR NO KEY UPDATEFOR UPDATE
FOR KEY SHAREрдПрдХреНрд╕
FOR SHAREрдПрдХреНрд╕рдПрдХреНрд╕
FOR NO KEY UPDATEрдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕
FOR UPDATEрдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕

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


рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдХреНрд░рдо


рдПрдХ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЬреНрдЮрд╛рди рд╣реИ рдХрд┐ рдСрдкрд░реЗрд╢рди рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХрдм рдФрд░ рдХреИрд╕реЗ рд╡реЗ рддрд╛рд▓реЗ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЬрд╛рд░реА рдХрд░рддреЗ рд╣реИрдВ:


рдЫрд╡рд┐


рдпрд╣рд╛рдБ рдЖрдк рдирд┐рдореНрди рдорджреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


  1. рдСрдкрд░реЗрд╢рди рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рд╕рдордп - рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдпрд╣ рд▓реЙрдХ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХрд╛ рд╕рдордп рд╣реЛрддрд╛ рд╣реИ, рдЕрдЧрд░ рд╣реЗрд╡реА рд▓реЙрдХ рдХреЛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдбрд╛рдЙрдирдЯрд╛рдЗрдо рд╣реЛрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ CREATE INDEX рдпрд╛ ALTER TABLE ADD COLUMN SET DEFAULT рд╕рд╛рде рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдкреЛрд╕реНрдЯрдЧреНрд░рд╛рд╕ 11 рдореЗрдВ рдпрд╣ рдмреЗрд╣рддрд░ рд╣реИ)ред
  2. рдкрд░рд╕реНрдкрд░ рд╡рд┐рд░реЛрдзреА рддрд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп - рдЕрд░реНрдерд╛рдд, рдкреНрд░рд╡рд╛рд╕рди рддрдм рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рд╕рднреА рдкрд░рд╕реНрдкрд░ рд╡рд┐рд░реЛрдзреА рдЕрдиреБрд░реЛрдз рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕ рд╕рдордп рдирдП рдЕрдиреБрд░реЛрдз рд╣рдорд╛рд░реЗ рдкреНрд░рд╡рд╛рд╕рди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВрдЧреЗ, рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдЕрдиреБрд░реЛрдз рдпрд╣рд╛рдВ рдмрд╣реБрдд рдЦрддрд░рдирд╛рдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рддреЛ рдХреЗрд╡рд▓ рдЗрд╖реНрдЯрддрдо рдпрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреЗ рджреМрд░рд╛рди рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдкрд▓рд╛рдпрдиред
  3. рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ - рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдХрдИ рдЕрдиреБрд░реЛрдз рд╣реИрдВ, рддреЛ рдореБрдлреНрдд рдХрдиреЗрдХреНрд╢рди рдЬрд▓реНрджреА рд╕реЗ рд╕рдорд╛рдкреНрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╕реНрдерд╛рди рдХреЗ рдмрдЬрд╛рдп, рдкреВрд░рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдореЗрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рд╕реБрдкрд░рд╕реБрдЕрд░ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдХрдиреЗрдХреНрд╢рди рд╕реАрдорд╛ рд╣реЛрдЧреА), рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдзреАрдореА рдЕрдиреБрд░реЛрдзреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдо рдХрд░реЗрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдиреНрдпреВрдирддрдо рд▓реЛрдб рдХреЗ рджреМрд░рд╛рди рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╢реБрд░реВ рдХрд░реЗрдВ, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рд╡рд┐рднрд┐рдиреНрди рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдШрдЯрдХреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░реЗрдВред
  4. рдПрдХ рд▓реЗрди-рджреЗрди рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЗ рдХрдИ рд╕рдВрдЪрд╛рд▓рди рд╣реЛрддреЗ рд╣реИрдВ - рдПрдХ рд▓реЗрдирджреЗрди рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдВрдЪрд╛рд▓рди, рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд▓реЙрдХ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рднрд╛рд░реА рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ, рдПрдХ рднрд╛рд░реА рд▓реЙрдХ рдХреЗ рд╕рд╛рде рдПрдХ рд▓реЗрди-рджреЗрди рдореЗрдВ рдХреЛрдИ рдбреЗрдЯрд╛ ALTER TABLE VALIDATE CONSTRAINT рдбреЗрдЯрд╛ рдпрд╛ рдбреЗрдЯрд╛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдирд╣реАрдВред

рд╕рдордп рд╕рдорд╛рдкреНрддрд┐


lock_timeout рдореЗрдВ lock_timeout рдФрд░ statement_timeout рдЬреИрд╕реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╣реИрдВ, рдЬреЛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреА рд╢реБрд░реБрдЖрдд рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рдЦ рд╕рдХрддреА рд╣реИрдВ, рджреЛрдиреЛрдВ рд╣реА рдЦрд░рд╛рдм рд▓рд┐рдЦрд┐рдд рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╕реЗ рдФрд░ рдЦрд░рд╛рдм рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рд╕реЗ рдЬрд┐рдирдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрдиреНрд╣реЗрдВ рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рдФрд░ рд╡рд░реНрддрдорд╛рди рдХрдиреЗрдХреНрд╢рди рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


SET lock_timeout TO '2s' рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╕реЗ рдкрд╣рд▓реЗ рдзреАрдореЗ рдЕрдиреБрд░реЛрдзреЛрдВ / рд▓реЗрди-рджреЗрди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╕рдордп рдбрд╛рдЙрдирдЯрд╛рдЗрдо рд╕реЗ рдмрдЪ рдЬрд╛рдПрдЧрд╛: https://www.postgresql.org/docs/current/static/runtime-config-client.html##UC-LOCK-TIMEOUT ред


SET statement_timeout TO '2s' рд╣реИрд╡реА рд▓реЙрдХ рд╕реЗ рднрд╛рд░реА рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╢реБрд░реВ рдХрд░рдиреЗ рдкрд░ рдбрд╛рдЙрдирдЯрд╛рдЗрдо рд╕реЗ рдмрдЪ рдЬрд╛рдПрдЧрд╛: https://www.postgresql.org/docs/current/static/runtime-config-client.html##UC-STATEMENT-TIMEOUT ред


Dedloki


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


рд░рд┐рдХреЙрд░реНрдб рднрдВрдбрд╛рд░рдг


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


рдорд▓реНрдЯреАрд╡рд░реНрд╕рди рдХрдВрд╕реАрд╡реЗрдВрд╕реА рдХрдВрдЯреНрд░реЛрд▓ (MVCC)


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


Django рдЙрджрд╛рд╣рд░рдг


рд╣рдореЗрдВ рдЕрдм рдЗрд╕ рдмрд╛рдд рдХрд╛ рдЕрдВрджрд╛рдЬрд╛ рд╣реИ рдХрд┐ рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдХрд┐рд╕ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд╕реЗ рдХреИрд╕реЗ рдмрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреНрдЮрд╛рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ django рдХрд┐рд╕ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддрд╛ рд╣реИ ( https://github.com/django/django/blob/2.1.2.django) /db/backends/base/schema.py рдФрд░ https://github.com/django/django/blob/2.1.2/django/db/backends/postgresql/schema.py


рдЖрдкрд░реЗрд╢рди
1CREATE SEQUENCE
2DROP SEQUENCE
3CREATE TABLE
4DROP TABLE
5ALTER TABLE RENAME TO
6ALTER TABLE SET TABLESPACE
7ALTER TABLE ADD COLUMN [SET DEFAULT] [SET NOT NULL] [PRIMARY KEY] [UNIQUE]
8ALTER TABLE ALTER COLUMN [TYPE] [SET NOT NULL|DROP NOT NULL] [SET DEFAULT|DROP DEFAULT]
9ALTER TABLE DROP COLUMN
10ALTER TABLE RENAME COLUMN
11ALTER TABLE ADD CONSTRAINT CHECK
12ALTER TABLE DROP CONSTRAINT CHECK
13ALTER TABLE ADD CONSTRAINT FOREIGN KEY
14ALTER TABLE DROP CONSTRAINT FOREIGN KEY
15ALTER TABLE ADD CONSTRAINT PRIMARY KEY
16ALTER TABLE DROP CONSTRAINT PRIMARY KEY
17ALTER TABLE ADD CONSTRAINT UNIQUE
18ALTER TABLE DROP CONSTRAINT UNIQUE
19CREATE INDEX
20DROP INDEX

Django рдореЗрд░реЗ рдкреНрд░рд╡рд╛рд╕ рдХреА рдЬрд░реВрд░рддреЛрдВ рдХреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИ, рдЕрдм рд╣рдо рдЕрдкрдиреЗ рдЬреНрдЮрд╛рди рдХреЗ рд╕рд╛рде рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдХреЗ рдмрд┐рдирд╛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рдФрд░ рдЦрддрд░рдирд╛рдХ рд╕рдВрдЪрд╛рд▓рди рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рд╣рдо SHARE UPDATE EXCLUSIVE рд▓реЙрдХрд┐рдВрдЧ рдпрд╛ ACCESS EXCLUSIVE рд╕рд╛рде рд╕реБрд░рдХреНрд╖рд┐рдд рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХрд╣реЗрдВрдЧреЗ, рдЬреЛ рддреБрд░рдВрдд рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рд╣рдо SHARE рдФрд░ ACCESS EXCLUSIVE рддрд╛рд▓реЗ рдХреЗ рд╕рд╛рде рдЦрддрд░рдирд╛рдХ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХрд╣реЗрдВрдЧреЗ, рдЬрд┐рдирдореЗрдВ рдХрд╛рдлреА рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред


рдореИрдВ рдорд╣рд╛рди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛ред


рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдПрдВ рдФрд░ рд╣рдЯрд╛рдПрдВ


CREATE SEQUENCE , DROP SEQUENCE , CREATE TABLE , DROP TABLE рдХреЛ рд╕реЗрдл рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдмрд┐рдЬрдиреЗрд╕ рд▓реЙрдЬрд┐рдХ рдпрд╛ рддреЛ рдорд╛рдЗрдЧреНрд░реЗрдЯреЗрдб рдЯреЗрдмрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдлреЙрд░рд╡рд░реНрдб рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд╕рд╛рде рдЯреЗрдмрд▓ рдбрд┐рд▓реАрдЯ рдХрд░рдиреЗ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдереЛрдбрд╝рд╛ рдмрд╛рдж рдореЗрдВ рд╣реЛрдЧрд╛ред


рднрд╛рд░реА рдХрд╛рд░реНрдпрдкрддреНрд░рдХ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛


ALTER TABLE RENAME TO - рдореИрдВ рдЗрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рд╡рд╛рд╕ рдХреЗ рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рдРрд╕реА рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рддрд░реНрдХ рд▓рд┐рдЦрдирд╛ рдХрдард┐рди рд╣реИред


рдЬреИрд╕реЗ рд╣реА рдпрд╣ рд╢рд╛рд░реАрд░рд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд▓реЗрдЯ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рддрдм ALTER TABLE SET TABLESPACE - рдЕрд╕реБрд░рдХреНрд╖рд┐рдд, рдФрд░ рдпрд╣ рдПрдХ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдПрдХ рд▓рдВрдмрд╛ рд╕рдордп рд▓реЗ рд╕рдХрддрд╛ рд╣реИред


рджреВрд╕рд░реА рдУрд░, рдпреЗ рдСрдкрд░реЗрд╢рди рдмреЗрд╣рдж рджреБрд░реНрд▓рдн рд╣реИрдВ, рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдк рдПрдХ рдирдИ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдиреЗ рдФрд░ рдЙрд╕рдореЗрдВ рдбреЗрдЯрд╛ рдХреЙрдкреА рдХрд░рдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдХреЙрд▓рдо рдмрдирд╛рдПрдВ рдФрд░ рд╣рдЯрд╛рдПрдВ


ALTER TABLE ADD COLUMN , ALTER TABLE DROP COLUMN - рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (DEFAULT / NOT NULL / PRIMARY KEY / UNIQUE рдХреЗ рдмрд┐рдирд╛ рдирд┐рд░реНрдорд╛рдг), рдХреНрдпреЛрдВрдХрд┐ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдпрд╛ рддреЛ рдХрд┐рд╕реА рдорд╛рдЗрдЧреНрд░реЗрдЯреЗрдб рдХреЙрд▓рдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, FOREIGN KEY рдХреЗ рд╕рд╛рде рдХреЙрд▓рдо рд╣рдЯрд╛рдиреЗ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЕрдиреНрдп рд╕реНрдерд┐рд░рд╛рдВрдХ рдФрд░ рд╕реВрдЪрдХрд╛рдВрдХ рдмрд╛рдж рдореЗрдВ рдЖрдПрдВрдЧреЗред


ALTER TABLE ADD COLUMN SET DEFAULT , ALTER TABLE ADD COLUMN SET NOT NULL , ALTER TABLE ADD COLUMN PRIMARY KEY , ALTER TABLE ADD COLUMN UNIQUE рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╕рдВрдЪрд╛рд▓рди, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдПрдХ рдХреЙрд▓рдо рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░, рддрд╛рд▓реЗ рдЬрд╛рд░реА рдХрд┐рдП рдмрд┐рдирд╛, рдбрд┐рдлреЙрд▓реНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд╛рд░реНрдп рдХреА рддрд░рд╣ рдмрдирд╛рддреЗ рд╣реИрдВред рдЕрд╢рдХреНрдд рд╕реНрддрдВрдн рдФрд░ рдЖрдЧреЗ рдкрд░рд┐рд╡рд░реНрддрдиред


рдпрд╣ 11 SET DEFAULT рдореЗрдВ рддреЗрдЬреА рд╕реЗ SET DEFAULT рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рдЗрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ django рдореЗрдВ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ django рдХреЗрд╡рд▓ рдХреЙрд▓рдо рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП SET DEFAULT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ DROP DEFAULT рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдЕрдВрддрд░рд╛рд▓ рдФрд░ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдФрд░ рдЕрджреНрдпрддрди рдорд╢реАрдиреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ, рд░рд┐рдХреЙрд░реНрдб рдмрдирд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реЛрдЧрд╛, рдЕрд░реНрдерд╛рддреН, рдлрд┐рд░ рд╕рднреА рд╕рдорд╛рди, рдбреЗрдЯрд╛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХрд░рддреЗ рд╣реИрдВред


рд╡рд░реНрдХрд╢реАрдЯ рдкрд░ рднрд╛рд░реА рд╕рдорд░реНрдерди рд╡рд╛рд▓рд╛ рд╕рдВрдЪрд╛рд▓рди


ALTER TABLE RENAME COLUMN - рдореИрдВ рднреА рдЗрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рд╡рд╛рд╕ рдХреЗ рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕реНрддрдВрдн рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рддрд░реНрдХ рд▓рд┐рдЦрдирд╛ рдХрдард┐рди рд╣реИред рдмрд▓реНрдХрд┐, рдпрд╣ рдСрдкрд░реЗрд╢рди рднреА рдЕрдХреНрд╕рд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдирдпрд╛ рдХреЙрд▓рдо рдмрдирд╛рдиреЗ рдФрд░ рдЗрд╕реЗ рдбреЗрдЯрд╛ рдХреЙрдкреА рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рд╕реНрддрдВрдн рдкрд░рд┐рд╡рд░реНрддрди


ALTER TABLE ALTER COLUMN TYPE - рдСрдкрд░реЗрд╢рди рдЦрддрд░рдирд╛рдХ рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рджреЛрдиреЛрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╕реБрд░рдХреНрд╖рд┐рдд рдпрджрд┐ рдХреЗрд╡рд▓ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рд╣реА рд╕реНрдХреАрдо рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдбреЗрдЯрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдХрд╛рд░ рдХреЗ рдЪреЗрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:


  • varchar(LESS) рд╕реЗ varchar(MORE) рдЯрд╛рдЗрдк рдкрд░рд┐рд╡рд░реНрддрди;
  • рдкреНрд░рдХрд╛рд░ varchar(ANY) рдкрд░рд┐рд╡рд░реНрддрди varchar(ANY) рд╕реЗ text рдкрд░рд┐рд╡рд░реНрддрди;
  • numeric(LESS, SAME) рд╕реЗ numeric(LESS, SAME) рдкрд░рд┐рд╡рд░реНрддрди numeric(MORE, SAME) ред

ALTER TABLE ALTER COLUMN SET NOT NULL рдЦрддрд░рдирд╛рдХ ALTER TABLE ALTER COLUMN SET NOT NULL рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ NULL рдХреЗ рдЕрдВрджрд░ рдбреЗрдЯрд╛ рдФрд░ рдЬрд╛рдВрдЪ рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИ, рд╕реМрднрд╛рдЧреНрдп рд╕реЗ рдЗрд╕ рдирд┐рд░реНрдорд╛рдг рдХреЛ рджреВрд╕рд░реЗ CHECK IS NOT NULL рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ CHECK IS NOT NULL ред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдПрдХ рдЕрд▓рдЧ рдпреЛрдЬрдирд╛ рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рд╕рдорд╛рди рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рдеред


ALTER TABLE ALTER COLUMN DROP NOT NULL , ALTER TABLE ALTER COLUMN SET DEFAULT , ALTER TABLE ALTER COLUMN DROP DEFAULT - рд╕реБрд░рдХреНрд╖рд┐рдд рд╕рдВрдЪрд╛рд▓рдиред


рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдФрд░ рд╕реНрдерд┐рд░рд╛рдВрдХ рдмрдирд╛рдирд╛ рдФрд░ рд╣рдЯрд╛рдирд╛


ALTER TABLE ADD CONSTRAINT CHECK рдФрд░ рдкреВрд░реНрд╡ ALTER TABLE ADD CONSTRAINT FOREIGN KEY рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╕рдВрдЪрд╛рд▓рди рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ NOT VALID рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рддрдм ALTER TABLE VALIDATE CONSTRAINT NOT VALID рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


ALTER TABLE ADD CONSTRAINT PRIMARY KEY рдФрд░ ALTER TABLE ADD CONSTRAINT UNIQUE рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЕрдВрджрд░ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рд╕реВрдЪрдХрд╛рдВрдХ рдмрдирд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк CONCURRENTLY рд░реВрдк рдореЗрдВ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рд╕реВрдЪрдХрд╛рдВрдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ USING INDEX рдорд╛рдзреНрдпрдо рд╕реЗ рд░реЗрдбреА-рдореЗрдб рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕реНрдерд┐рд░рд╛рдВрдХ рдмрдирд╛рдПрдВред


CREATE INDEX рдПрдХ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдСрдкрд░реЗрд╢рди рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ CONCURRENTLY рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


ALTER TABLE DROP CONSTRAINT CHECK , ALTER TABLE DROP CONSTRAINT CHECK , ALTER TABLE DROP CONSTRAINT FOREIGN KEY ALTER TABLE DROP CONSTRAINT PRIMARY KEY , ALTER TABLE DROP CONSTRAINT UNIQUE , DROP INDEX - рд╕реБрд░рдХреНрд╖рд┐рдд рд╕рдВрдЪрд╛рд▓рдиред


рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ ALTER TABLE ADD CONSTRAINT FOREIGN KEY рдФрд░ ALTER TABLE DROP CONSTRAINT FOREIGN KEY рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рджреЛ рдЯреЗрдмрд▓ рд▓реЙрдХ рдХрд░рддреЗ рд╣реИрдВред


Django рдореЗрдВ рдЬреНрдЮрд╛рди рд▓рд╛рдЧреВ рдХрд░рдирд╛


Django рдХреЗ рдкрд╛рд╕ рдХрд┐рд╕реА рднреА SQL рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдореЗрдВ рдПрдХ рдСрдкрд░реЗрд╢рди рд╣реИ: https://docs.djangoproject.com/en/2.1/ref/migration-operations/#django.db.migrations.operations.RunSQL ред рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдЖрдк рдЖрд╡рд╢реНрдпрдХ рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЬрд┐рд╕ рд╕реНрдерд╛рди рдХреЛ рдмрджрд▓ рд░рд╣реЗ рд╣реИрдВ, рд╡рд╣ state_operations ред


рдпрд╣ рдЕрдкрдиреЗ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд▓реЗрдЦрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк db рдмреИрдХрдПрдВрдб рдкрд░ рдЧрдВрджрд╛ рдХрд╛рдо рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, https://github.com/tbicr/django-pg-zero-downtime-migrations//lob/master/django_zero_downtime_migrations_postgres_backend .py рд╡рд░реНрдгрд┐рдд рдкреНрд░рдерд╛рдУрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рд╕рдордХрдХреНрд╖реЛрдВ рдХреЗ рд╕рд╛рде рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╕рдВрдЪрд╛рд▓рди рдХреА рдЬрдЧрд╣ рд▓реЗрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛ред


рдЕрдВрдд рдореЗрдВ


рдЗрди рдкреНрд░рдерд╛рдУрдВ рдиреЗ рдореБрдЭреЗ рдмреЙрдХреНрд╕ рдХреЗ рдмрд╛рд╣рд░ django рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рдПрдХ рд╕рдорд╛рди рдпреЛрдЬрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА, рдЬрд┐рд╕рдореЗрдВ CHECK IS NOT NULL рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕реНрдерд╛рди рдкрд░ NOT NULL рдФрд░ рдХреБрдЫ рдирд┐рд░реНрдорд╛рдг рдирд╛рдо (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ALTER TABLE ADD COLUMN UNIQUE рдФрд░ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд┐рдП) рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рд╡реИрдХрд▓реНрдкрд┐рдХ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдкрд░рд┐рдЪрд╛рд▓рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреНрдп рдЯреНрд░реЗрдб-рдСрдл рдореЗрдВ рд▓реЗрди-рджреЗрди рдХреА рдХрдореА рд╣реЛ рд╕рдХрддреА рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЬрд╣рд╛рдВ CREATE INDEX CONCURRENTLY рдФрд░ ALTER TABLE VALIDATE CONSTRAINT ред


рдпрджрд┐ рдЖрдк рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЯреНрд╕ рд╕реЗ рдЖрдЧреЗ рдирд╣реАрдВ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдбреЗрдЯрд╛ рдпреЛрдЬрдирд╛ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╡реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдореЗрдВ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:


  • jsonb рдХрд╛ рдЙрдкрдпреЛрдЧ schamaless рдШреЛрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
  • рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдкрд░ рдЬрд╛рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░
  • рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдХреЗ рдмрд┐рдирд╛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛

рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╕рд╛рдордЧреНрд░реА рдпрд╛ рддреЛ рд╕рдордпреЛрдкрд░рд┐ рдмрдврд╝рд╛рдиреЗ рдпрд╛ рдЪреЗрддрдирд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╕рд╛рдмрд┐рдд рд╣реБрдИред

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


All Articles