PostgreSQL-2 рдореЗрдВ MVCCред рдХрд╛рдВрдЯреЗ, рдлрд╛рдЗрд▓реЗрдВ, рдкреЗрдЬ

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

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдбреЗрдЯрд╛ рдХреЛ рднреМрддрд┐рдХ рд░реВрдк рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдкреГрд╖реНрдареЛрдВ рдореЗрдВ рдХреИрд╕реЗ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╣рдореЗрдВ рдЕрд▓рдЧрд╛рд╡ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рд╕реЗ рджреВрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд┐рд╖рдпрд╛рдВрддрд░ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ рдХреНрдпрд╛ рд╣реИред рд╣рдореЗрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдХрд┐ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░реЗрдЬ рдХреЛ рдирд┐рдореНрди рд╕реНрддрд░ рдкрд░ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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


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

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

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

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

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

рдХрд╛рдВрдЯреЗ рдФрд░ рдлрд╛рдЗрд▓реЗрдВ


рдЖрдорддреМрд░ рдкрд░ рдХрдИ рдХрд╛рдВрдЯреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдмрдВрдз рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрддреЗ рд╣реИрдВред рдХрд╛рдВрдЯреЗ рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рдХрд╛рд░ рдХрд╛ рдбреЗрдЯрд╛ рд╣реЛрддрд╛ рд╣реИред

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

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

рдлрд╝рд╛рдЗрд▓ рдЖрдХрд╛рд░ рдХрд╛ 1 рдЬреАрдмреА рд╕реАрдорд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реБрдИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдмрдбрд╝реЗ рдЖрдХрд╛рд░ рдХреА рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдирд┐рдкрдЯ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВред PostgreSQL ( ./configure --with-segsize ) рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп рдЖрдк рдЗрд╕ рд╕реАрдорд╛ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред

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

рдПрдХ рдЯреЗрдмрд▓рд╕реНрдкреЗрд╕ рдФрд░ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рдПрдВрдЧреАред рдЖрдкрдХреЛ рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред

рдпрд╣рд╛рдВ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдлрд╛рдЗрд▓реЗрдВ, рдмрджрд▓реЗ рдореЗрдВ, рдЖрдорддреМрд░ рдкрд░ 8 KB рджреНрд╡рд╛рд░рд╛ рдкреГрд╖реНрда (рдпрд╛ рдмреНрд▓реЙрдХ ) рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛрддреА рд╣реИрдВред рд╣рдо рдкреГрд╖реНрдареЛрдВ рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдкрд░ рдереЛрдбрд╝рд╛ рдФрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗред



рдЕрдм рдлреЛрд░реНрдХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред

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

рдореБрдЦреНрдп рдХрд╛рдВрдЯреЗ рдХреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдирд╛рдо рдореЗрдВ рдХреЗрд╡рд▓ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реЛрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЙрд╕ рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдкрде рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдмрдирд╛рдпрд╛ рдерд╛:

 => SELECT pg_relation_filepath('accounts'); 
  pg_relation_filepath ---------------------- base/41493/41496 (1 row) 

рдпреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХрд╣рд╛рдБ рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВ? "рдЖрдзрд╛рд░" рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ "pg_default" рддрд╛рд▓рд┐рдХрд╛рдУрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдЕрдиреБрд░реВрдк рдЕрдЧрд▓рд╛ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛, рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рдмреНрдпрд╛рдЬ рдХреА рдлрд╝рд╛рдЗрд▓ рд╕реНрдерд┐рдд рд╣реИ:

 => SELECT oid FROM pg_database WHERE datname = 'test'; 
  oid ------- 41493 (1 row) 

 => SELECT relfilenode FROM pg_class WHERE relname = 'accounts'; 
  relfilenode ------------- 41496 (1 row) 

рдкрде рд╕рд╛рдкреЗрдХреНрд╖ рд╣реИ, рдпрд╣ рдбреЗрдЯрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ (PGDATA) рд╕реЗ рд╢реБрд░реВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд╕реНрддреБрддрдГ PostgreSQL рдХреЗ рд╕рднреА рдкрде PGDATA рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЖрдк PGDATA рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдЕрд▓рдЧ рд╕реНрдерд╛рди рдкрд░ рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ - рдХреБрдЫ рднреА рдЗрд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ LD_LIBRARY_PATH рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкрде рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ:

 postgres$ ls -l --time-style=+ /var/lib/postgresql/11/main/base/41493/41496 
 -rw------- 1 postgres postgres 8192 /var/lib/postgresql/11/main/base/41493/41496 

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

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

 => ALTER TABLE accounts SET UNLOGGED; => SELECT pg_relation_filepath('accounts'); 
  pg_relation_filepath ---------------------- base/41493/41507 (1 row) 

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

рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрд╛рдВрдЯрд╛ рдХрд╛ рдореБрдЦреНрдп рдХрд╛рдВрдЯрд╛ рдХреЗ рд╕рдорд╛рди рдирд╛рдо рд╣реИ, рд▓реЗрдХрд┐рди "_init" рдкреНрд░рддреНрдпрдп рдХреЗ рд╕рд╛рде:

 postgres$ ls -l --time-style=+ /var/lib/postgresql/11/main/base/41493/41507_init 
 -rw------- 1 postgres postgres 0 /var/lib/postgresql/11/main/base/41493/41507_init 

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

рдореБрдХреНрдд рд╕реНрдерд╛рди рдХреЗ рдирдХреНрд╢реЗ рдХрд╛ рдирд╛рдо "_fsm" рдкреНрд░рддреНрдпрдп рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдлрд╝рд╛рдЗрд▓ рддреБрд░рдВрдд рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдХрдЯ рд╣реЛрддреА рд╣реИред рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд╡реИрдХреНрдпреВрдо рдХрд░рдирд╛ рд╣реИ (рд╣рдо рд╕рдордп рдЖрдиреЗ рдкрд░ рдмрддрд╛рдПрдВрдЧреЗ рдХрд┐ рдХреНрдпреЛрдВ рд╣реИ):

 => VACUUM accounts; 

 postgres$ ls -l --time-style=+ /var/lib/postgresql/11/main/base/41493/41507_fsm 
 -rw------- 1 postgres postgres 24576 /var/lib/postgresql/11/main/base/41493/41507_fsm 

рджреГрд╢реНрдпрддрд╛ рдорд╛рдирдЪрд┐рддреНрд░ рдПрдХ рдХрд╛рдВрдЯрд╛ рд╣реЛрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдкреГрд╖реНрда рдЬрд┐рдирдореЗрдВ рдХреЗрд╡рд▓ рдЕрдк-рдЯреВ-рдбреЗрдЯ рдкрдВрдХреНрддрд┐ рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрддреЗ рд╣реИрдВ, рд╡реЗ рдПрдХ рдмрд┐рдЯ рджреНрд╡рд╛рд░рд╛ рдЪрд┐рд╣реНрдирд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдореЛрдЯреЗ рддреМрд░ рдкрд░, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЬрдм рдХреЛрдИ рд▓реЗрдирджреЗрди рдРрд╕реЗ рдкреГрд╖реНрда рд╕реЗ рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдкрдВрдХреНрддрд┐ рдХреЛ рдЗрд╕рдХреА рджреГрд╢реНрдпрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд┐рдП рдмрд┐рдирд╛ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдЧрд▓реЗ рд▓реЗрдЦреЛрдВ рдореЗрдВ, рд╣рдо рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рд╣реЛрддрд╛ рд╣реИред

 postgres$ ls -l --time-style=+ /var/lib/postgresql/11/main/base/41493/41507_vm 
 -rw------- 1 postgres postgres 8192 /var/lib/postgresql/11/main/base/41493/41507_vm 

рдкреЗрдЬ


рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдлрд╛рдЗрд▓реЗрдВ рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рдкреГрд╖реНрдареЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИрдВред

рдПрдХ рдкреГрд╖реНрда рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ 8 KB рдХрд╛ рдЖрдХрд╛рд░ рд╣реЛрддрд╛ рд╣реИред рдЖрдХрд╛рд░ рдХреЛ рдХреБрдЫ рд╕реАрдорд╛рдУрдВ (16 KB рдпрд╛ 32 KB) рдХреЗ рднреАрддрд░ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдирд┐рд░реНрдорд╛рдг ( ./configure --with-blocksize ) рдХреЗ рджреМрд░рд╛рдиред рдПрдХ рдирд┐рд░реНрдорд┐рдд рдФрд░ рд░рди рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдЖрдХрд╛рд░ рдХреЗ рдкреГрд╖реНрдареЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред

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

рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рд╡рд┐рднрд╛рдЬрди рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рднрд╛рдЬрди рд╣реЛрддреЗ рд╣реИрдВ:

        реж + ----------------------------------- +
           |  рд╣реЗрдбрд░ |
       24 + ----------------------------------- +
           |  рдкрдВрдХреНрддрд┐ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреА рд╕рд░рдгреА |
    рдирд┐рдЪрд▓рд╛ + ----------------------------------- +
           |  рдЦрд╛рд▓реА рд╕реНрдерд╛рди |
    рдКрдкрд░реА + ----------------------------------- +
           |  рдкрдВрдХреНрддрд┐ рд╕рдВрд╕реНрдХрд░рдг |
  рд╡рд┐рд╢реЗрд╖ + ----------------------------------- +
           |  рд╡рд┐рд╢реЗрд╖ рд╕реНрдерд╛рди |
 рдкреЗрдЬрд╛рдЗрдЬрд╝ + ----------------------------------- +

рдЖрдк "рд╢реЛрдз" рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреЗрдЬрд┐рдВрд╕реНрдкреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрди рд╡рд┐рднрд╛рдЬрдиреЛрдВ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ:

 => CREATE EXTENSION pageinspect; => SELECT lower, upper, special, pagesize FROM page_header(get_raw_page('accounts',0)); 
  lower | upper | special | pagesize -------+-------+---------+---------- 40 | 8016 | 8192 | 8192 (1 row) 

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

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

рд╡рд┐рд╢реЗрд╖ рд╕реНрдерд╛рди рдХреЗ рдмрд╛рдж, рдкрдВрдХреНрддрд┐ рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд┐рдд рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, рдмрд╣реБрдд рд╣реА рдбреЗрдЯрд╛ рдЬрд┐рд╕реЗ рд╣рдо рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХреБрдЫ рдЖрдВрддрд░рд┐рдХ рдЬрд╛рдирдХрд╛рд░реАред

рд╢реАрд░реНрд╖ рд▓реЗрдЦ рдХреЗ рдареАрдХ рдмрд╛рдж рдПрдХ рдкреГрд╖реНрда рдХреЗ рд╢реАрд░реНрд╖ рдкрд░, рд╕рд╛рдордЧреНрд░реА рдХреА рддрд╛рд▓рд┐рдХрд╛ рд╣реЛрддреА рд╣реИ: рдкреГрд╖реНрда рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдмрд┐рдВрджреБрдУрдВ рдХреА рд╕рд░рдгреА ред

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

рд╕рдВрдХреЗрдд


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

рдкреНрд░рддреНрдпреЗрдХ рдкреЙрдЗрдВрдЯрд░ рдореЗрдВ рдЪрд╛рд░ рдмрд╛рдЗрдЯреНрд╕ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЗрдирдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВ:

  • рдкрдВрдХреНрддрд┐ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рд╕рдВрджрд░реНрдн
  • рдЗрд╕ рдкрдВрдХреНрддрд┐ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЖрдХрд╛рд░
  • рдкрдВрдХреНрддрд┐ рд╕рдВрд╕реНрдХрд░рдг рдХреА рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдмрд╛рдЗрдЯреНрд╕

рдбреЗрдЯрд╛ рдкреНрд░рд╛рд░реВрдк


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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, X86 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ, рдмрд╛рдЗрдЯ рдСрд░реНрдбрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдЗрдЯреНрд╕ (рд▓рд┐рдЯрд┐рд▓-рдПрдВрдбрд┐рдпрди) рд╕реЗ рдХрдо рд╕реЗ рдХрдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, z / рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╡реНрдпреБрддреНрдХреНрд░рдо рдСрд░реНрдбрд░ (рдмрд┐рдЧ-рдПрдВрдбрд┐рдпрди) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдПрдЖрд░рдПрдо рдореЗрдВ рдСрд░реНрдбрд░ рдХреЛ рд╕реНрд╡реИрдк рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХрдИ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдорд╢реАрди рд╢рдмреНрджреЛрдВ рдХреА рд╕реАрдорд╛рдУрдВ рдкрд░ рдбреЗрдЯрд╛ рд╕рдВрд░реЗрдЦрдг рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 32-рдмрд┐рдЯ x86 рд╕рд┐рд╕реНрдЯрдо рдкрд░, рдкреВрд░реНрдгрд╛рдВрдХ рд╕рдВрдЦреНрдпрд╛ (рдкреНрд░рдХрд╛рд░ "рдкреВрд░реНрдгрд╛рдВрдХ", рдЬреЛ 4 рдмрд╛рдЗрдЯреНрд╕ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рддреА рд╣реИ) рдХреЛ 4-рдмрд╛рдЗрдЯ рд╢рдмреНрджреЛрдВ рдХреА рд╕реАрдорд╛ рдкрд░ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЙрд╕реА рддрд░рд╣ рдЬреИрд╕реЗ рдХрд┐ рдбрдмрд▓-рд╕рдЯреАрдХ рд╕рдВрдЦреНрдпрд╛ (рдЯрд╛рдЗрдк "рдбрдмрд▓ рд╕рдЯреАрдХ" , рдЬреЛ 8 рдмрд╛рдЗрдЯреНрд╕ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рддрд╛ рд╣реИ)ред рдФрд░ 64-рдмрд┐рдЯ рд╕рд┐рд╕реНрдЯрдо рдкрд░, 8-рдмрд╛рдЗрдЯ рд╢рдмреНрджреЛрдВ рдХреА рд╕реАрдорд╛ рдкрд░ рдбрдмрд▓-рд╕рдЯреАрдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдПрдХ рдФрд░ рдЕрд╕рдВрдЧрддрд┐ рдХрд╛рд░рдг рд╣реИред

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

рдкрдВрдХреНрддрд┐ рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдЯреЛрд╕реНрдЯ


рд╣рдо рдЕрдЧрд▓реА рдмрд╛рд░ рдкрдВрдХреНрддрд┐ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╡рд┐рд╡рд░рдг рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рдЬрд╛рдирдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдПрдХ рдкреГрд╖реНрда рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдлрд┐рдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП: рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдХреНрдпреВрдПрд▓ рдХреЗ рдкрд╛рд╕ рдЕрдЧрд▓реЗ рдкреГрд╖реНрда рдкрд░ рдкрдВрдХреНрддрд┐ рдХреЛ "рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд" рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдУрд╡рд░рд╕рд╛рдЗрдЬрд╝реНрдб рдПрдЯреНрд░реАрдмреНрдпреВрдЯреНрд╕ рд╕реНрдЯреЛрд░реЗрдЬ рддрдХрдиреАрдХ (рдЯреЛрд╕реНрдЯ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд╛рдо рд╣реА рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рд╡рд┐рд╕реНрдлреЛрдЯ рдореЗрдВ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

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

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

рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХреЛ рд╕реНрддрдВрдн рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдк psql рдореЗрдВ \d+ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдиреНрд╣реЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдпрд╣ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдХрдИ рдЕрдиреНрдп рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИ, рд╣рдо рд╕рд┐рд╕реНрдЯрдо рдХреИрдЯрд▓реЙрдЧ рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░реЗрдВрдЧреЗ:

 => SELECT attname, atttypid::regtype, CASE attstorage WHEN 'p' THEN 'plain' WHEN 'e' THEN 'external' WHEN 'm' THEN 'main' WHEN 'x' THEN 'extended' END AS storage FROM pg_attribute WHERE attrelid = 'accounts'::regclass AND attnum > 0; 
  attname | atttypid | storage ---------+----------+---------- id | integer | plain number | text | extended client | text | extended amount | numeric | main (4 rows) 

рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХреЗ рдирд╛рдо рдХрд╛ рдЕрд░реНрде рд╣реИ:

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

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИред PostgreSQL рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдХрдо рд╕реЗ рдХрдо рдЪрд╛рд░ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдПрдХ рдкреГрд╖реНрда рдкрд░ рдлрд┐рдЯ рдХрд░рдирд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдкрдВрдХреНрддрд┐ рдХрд╛ рдЖрдХрд╛рд░ рдкреГрд╖реНрда рдХреЗ рдПрдХ рд╣рд┐рд╕реНрд╕реЗ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ рд╣реЗрдбрд░ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ (2040 рдмрд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдорд┐рдд 8K- рдкреГрд╖реНрда), TOAST рдХреЛ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдПрдХ рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдо рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рдЖрджреЗрд╢ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЬреИрд╕реЗ рд╣реА рдкрдВрдХреНрддрд┐ рдереНрд░реЗрд╢реЛрд▓реНрдб рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрддреА рд╣реИ, рд░реБрдХ рдЬрд╛рддреЗ рд╣реИрдВ:

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

рдХрднреА-рдХрднреА рдпрд╣ рдХреБрдЫ рд╕реНрддрдВрднреЛрдВ рдХреЗ рд▓рд┐рдП рд░рдгрдиреАрддрд┐ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдЬреНрдЮрд╛рдд рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЙрд▓рдо рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдкреАрдбрд╝рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП "рдмрд╛рд╣рд░реА" рд░рдгрдиреАрддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдореЗрдВ рдмреЗрдХрд╛рд░ рд╕рдВрдкреАрдбрд╝рди рдкреНрд░рдпрд╛рд╕реЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдмрдЪрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 => ALTER TABLE accounts ALTER COLUMN number SET STORAGE external; 

рдХреНрд╡реЗрд░реА рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдирд╛, рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ:

  attname | atttypid | storage ---------+----------+---------- id | integer | plain number | text | external client | text | extended amount | numeric | main 

рдЯреЛрд╕реНрдЯ рдЯреЗрдмрд▓ рдФрд░ рдЗрдВрдбреЗрдХреНрд╕ рдЕрд▓рдЧ-рдЕрд▓рдЧ pg_toast рд╕реНрдХреАрдорд╛ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВ рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЖрдорддреМрд░ рдкрд░ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред рдЕрд╕реНрдерд╛рдпреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, "pg_toast_temp_ N " рд╕реНрдХреАрдорд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд╛рдорд╛рдиреНрдп "pg_temp_ N " рдХреЗ рд╕рдорд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

 => SELECT relnamespace::regnamespace, relname FROM pg_class WHERE oid = ( SELECT reltoastrelid FROM pg_class WHERE relname = 'accounts' ); 
  relnamespace | relname --------------+---------------- pg_toast | pg_toast_33953 (1 row) 

 => \d+ pg_toast.pg_toast_33953 
 TOAST table "pg_toast.pg_toast_33953" Column | Type | Storage ------------+---------+--------- chunk_id | oid | plain chunk_seq | integer | plain chunk_data | bytea | plain 

рдпрд╣ рдЙрдЪрд┐рдд рд╣реИ рдХрд┐ "рд╕рд╛рджреЗ" рд░рдгрдиреАрддрд┐ рдХреЛ рдЯреЛрд╕реНрдЯреНрд╕ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкрдВрдХреНрддрд┐ рдХрдЯрд╛ рд╣реБрдЖ рд╣реИ: рдХреЛрдИ рджреВрд╕рд░реА-рд╕реНрддрд░реАрдп рдЯреЛрд╕реНрдЯ рдирд╣реАрдВ рд╣реИред

PostgreSQL рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдЫрд┐рдкрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдвреВрдВрдврдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ:

 => SELECT indexrelid::regclass FROM pg_index WHERE indrelid = ( SELECT oid FROM pg_class WHERE relname = 'pg_toast_33953' ); 
  indexrelid ------------------------------- pg_toast.pg_toast_33953_index (1 row) 

 => \d pg_toast.pg_toast_33953_index 
 Unlogged index "pg_toast.pg_toast_33953_index" Column | Type | Key? | Definition -----------+---------+------+------------ chunk_id | oid | yes | chunk_id chunk_seq | integer | yes | chunk_seq primary key, btree, for table "pg_toast.pg_toast_33953" 

"рдХреНрд▓рд╛рдЗрдВрдЯ" рдХреЙрд▓рдо "рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд" рд░рдгрдиреАрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ: рдЗрд╕рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рдВрдХреБрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдЗрдП рджреЗрдЦреЗрдВ:

 => UPDATE accounts SET client = repeat('A',3000) WHERE id = 1; => SELECT * FROM pg_toast.pg_toast_33953; 
  chunk_id | chunk_seq | chunk_data ----------+-----------+------------ (0 rows) 

рдЯреЛрд╕реНрдЯ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ: рджреЛрд╣рд░рд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдг рдареАрдХ рд╕рдВрдХреБрдЪрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рд╕рдВрдкреАрдбрд╝рди рдХреЗ рдмрд╛рдж рдорд╛рди рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рддрд╛рд▓рд┐рдХрд╛ рдкреГрд╖реНрда рдкрд░ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИред

рдФрд░ рдЕрдм рдЧреНрд░рд╛рд╣рдХ рдХрд╛ рдирд╛рдо рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╡рд░реНрдгреЛрдВ рд╕реЗ рдорд┐рд▓рдХрд░ рдмрдирддрд╛ рд╣реИ:

 => UPDATE accounts SET client = ( SELECT string_agg( chr(trunc(65+random()*26)::integer), '') FROM generate_series(1,3000) ) WHERE id = 1 RETURNING left(client,10) || '...' || right(client,10); 
  ?column? ------------------------- TCKGKZZSLI...RHQIOLWRRX (1 row) 

рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЛ рд╕рдВрдХреБрдЪрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЯреЛрд╕реНрдЯ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИ:

 => SELECT chunk_id, chunk_seq, length(chunk_data), left(encode(chunk_data,'escape')::text, 10) || '...' || right(encode(chunk_data,'escape')::text, 10) FROM pg_toast.pg_toast_33953; 
  chunk_id | chunk_seq | length | ?column? ----------+-----------+--------+------------------------- 34000 | 0 | 2000 | TCKGKZZSLI...ZIPFLOXDIW 34000 | 1 | 1000 | DDXNNBQQYH...RHQIOLWRRX (2 rows) 

рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдбреЗрдЯрд╛ 2000-рдмрд╛рдЗрдЯ рд╡рд┐рдЦрдВрдбреВ рдореЗрдВ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИред

рдЬрдм рдХреЛрдИ рд▓рдВрдмрд╛ рдорд╛рди рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ PostgreSQL рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдФрд░ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдкрд╛рд░рджрд░реНрд╢реА рд░реВрдк рд╕реЗ рдореВрд▓ рдореВрд▓реНрдп рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред

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

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

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ TOAST рдХреЗрд╡рд▓ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдиреБрдХреНрд░рдорд┐рдд рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред рдпрд╣ рдХреБрдВрдЬреА рдХреЗ рдЕрдиреБрдХреНрд░рдорд┐рдд рд╣реЛрдиреЗ рдХреЗ рдЖрдХрд╛рд░ рдкрд░ рдПрдХ рд╕реАрдорд╛ рд▓рдЧрд╛рддрд╛ рд╣реИред
рдЖрдВрддрд░рд┐рдХ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдкрд░ рдкрдврд╝реЗрдВ ред

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


All Articles