рд╢рд╛рдирджрд╛рд░ рд╕рд▓рд╛рд╣рдХрд╛рд░ рддрд╛рд▓реЗ рдФрд░ рдЬрд╣рд╛рдВ рд╡реЗ рд░рд╣рддреЗ рд╣реИрдВ

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



рддрд╛рд▓реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдкрдврд╝реЗрдВ

рд╕рд┐рдлрд╛рд░рд┐рд╢ рддрд╛рд▓реЗ рдХреЗ рд▓рд╛рдн


рдЗрд╕ рддрдВрддреНрд░ рдФрд░ "рд╕рд╛рдзрд╛рд░рдг" рддрд╛рд▓рд┐рдХрд╛ / рдкреГрд╖реНрда / рд░рд┐рдХреЙрд░реНрдб рд╕реНрддрд░ рдХреЗ рддрд╛рд▓реЗ рдХреЗ рдмреАрдЪ рдореВрд▓рднреВрдд рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдХрдИ рдкреНрд░рдореБрдЦ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВред

рдХрд╕реНрдЯрдо рдЖрдИрдбреА рд▓реЙрдХ


рдкреАрдЬреА рдореЗрдВ "рд╕рд╛рдорд╛рдиреНрдп" рддрд╛рд▓реЗ рд╣рдореЗрд╢рд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреЗрдЯрд╛рдмреЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ (рдЯреЗрдмрд▓, рд░рд┐рдХреЙрд░реНрдб, рдбреЗрдЯрд╛ рдкреЗрдЬ) рдФрд░ рдХрдиреЗрдХреНрд╢рди рдХреА рд╕реЗрд╡рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдмрдВрдзреЗ рд╣реЛрддреЗ рд╣реИрдВред рд╕рд▓рд╛рд╣рдХрд╛рд░ рддрд╛рд▓реЗ рднреА рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд╕реНрддреБ рдХреЗ рдмрдЬрд╛рдп, рдПрдХ рдЕрдореВрд░реНрдд рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ (bigint) рдпрд╛ (рдкреВрд░реНрдгрд╛рдВрдХ, рдкреВрд░реНрдгрд╛рдВрдХ) рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

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

рд▓реЙрдХ рдХреИрдкреНрдЪрд░ рдХреЗ рд▓рд┐рдП рдХреИрд╕ рдЪреЗрдХ рдХрд░реЗрдВ


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

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

рдЕрдкрд╡рд╛рджреЛрдВ рдФрд░ рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдХрдмреНрдЬрд╛ рдирд╣реАрдВ


"рд╕рд╛рдорд╛рдиреНрдп" рддрд╛рд▓реЗ рдореЙрдбрд▓ рдореЗрдВ рдореМрдЬреВрдж рд╣реИрдВ "рдпрджрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓реЙрдХ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рд╣реИ, рддреЛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВред рдЖрдк рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рддреЛ ( NOWAIT, statement_timeout, lock_timeout) - рдпрд╣рд╛рдБ рдПрдХ рдЕрдкрд╡рд╛рдж рд╣реИ " ред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд▓реЗрди-рджреЗрди рдХреЗ рднреАрддрд░ рдмрд╣реБрдд рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рддрдм рдЖрдкрдХреЛ рдпрд╛ рддреЛ BEGIN-EXCEPTION-ENDрдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдмреНрд▓реЙрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдпрд╛ ROLLBACKрд▓реЗрдирджреЗрди рдХреЛ рд╡рд╛рдкрд╕ рд▓реЗрдирд╛ рд╣реЛрдЧрд╛ ред

рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ SELECT ... SKIP LOCKEDрд╕рдВрд╕реНрдХрд░рдг 9.5 рдХреЗ рд╕рд╛рде рдЖрдП рдбрд┐рдЬрд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рд╕рд╛рде, рд╡рд┐рдХрд▓реНрдк "рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдХреНрдпрд╛ рдирд╣реАрдВ" рдФрд░ "рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрд╡рд░реБрджреНрдз рд╣реИ" рдЕрд╡рд┐рд╡реЗрдЪреНрдп рд╣реЛ рдЧрдпрд╛ рд╣реИред

рдХреА рд╡рдЬрд╣ рд╕реЗ рд╕рд┐рдлрд╛рд░рд┐рд╢ рддрд╛рд▓реЗ рдХреЛрд╢рд┐рд╢ рдХрд╛рд░реНрдпреЛрдВ рдмрд╕ рд▓реМрдЯрдиреЗ TRUE/FALSEред
рднреНрд░рдорд┐рдд рди рд╣реЛрдВ pg_advisory_lockрдФрд░ - рдкрд╣рд▓рд╛ рдлрд╝рдВрдХреНрд╢рди рд▓реЙрдХ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдЧрд╛ , рдФрд░ рджреВрд╕рд░рд╛ рдмрд╕ рддреБрд░рдВрдд рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ рдЗрд╕реЗ "рдЕрднреА" рдкрдХрдбрд╝рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИредpg_try_advisory_lockFALSE

рд▓реЗрди-рджреЗрди рдХреЗ рднреАрддрд░ рдФрд░ рдмрд╛рдж рдореЗрдВ рддрд╛рд▓реЗ


рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реЙрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ "рд╕рдВрд▓рдЧреНрди" рд╣реИрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рд▓реЗрдирджреЗрди рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдореМрдЬреВрдж рд╣реИрдВред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рд┐рд░реНрдл рдереЛрдкрдирд╛ - рд╕рдлрд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛:

LOCK TABLE tbl;
-- ERROR:  LOCK TABLE can only be used in transaction blocks

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

SELECT pg_advisory_lock(1);
SELECT * FROM pg_locks WHERE pid = pg_backend_pid() AND locktype = 'advisory';

-[ RECORD 1 ]------+--------------
locktype           | advisory
database           | 263911484
relation           |
page               |
tuple              |
virtualxid         |
transactionid      |
classid            | 0 <--  int4 #1    int8
objid              | 1 <--  int4 #2    int8
objsubid           | 1
virtualtransaction | 416/475768
pid                | 29264
mode               | ExclusiveLock
granted            | t
fastpath           | f

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

рд╡реАрдПрд▓рдПрд╕рдЖрдИ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг


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

рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХрд╛ рдореЛрдиреЛрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ


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

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

SELECT pg_try_advisory_lock(
  'processed_table'::regclass::oid
, -1 --   worker'
);

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

рд╕рдорд╡рд░реНрддреА рдХрддрд╛рд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг


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



рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдПрдХ рд╡рд┐рд╢реЗрд╖ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдЯреЗрдмрд▓ рдЖрдИрдбреА рдФрд░ рдкреАрдХреЗ рдкрд░ рддрд╛рд▓рд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВ:

SELECT
  *
FROM
  queue_table
WHERE
  pg_try_advisory_lock('queue_table'::regclass::oid, pk_id)
ORDER BY
  pk_id
LIMIT 1;

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

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

рдЬрд░реВрд░реА! рд╕рдордп-рд╕рдордп рдкрд░ рдареАрдХ рд╕реЗ рдЕрдкрдиреА рдХрддрд╛рд░ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдордд рднреВрд▓рдирд╛ !

рд╡рд┐рд╢реЗрд╖ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг


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

рдкрд╛рд░рдВрдкрд░рд┐рдХ рдореБрджреНрджреЗ


рдЙрдирдХреЗ рдмрд┐рдирд╛ рдХрд╣рд╛рдБ! рд▓рдЧрднрдЧ рд╕рднреА рдПрдХ рдмрд╛рдд рдкрд░ рдЙрдмрд▓рддреЗ рд╣реИрдВ : рдЙрдиреНрд╣реЛрдВрдиреЗ рддрд╛рд▓рд╛ рдирд╣реАрдВ рдЦреЛрд▓рд╛ ред

рдПрдХ рд╕рд▓рд╛рд╣рдХрд╛рд░ рд▓реЙрдХ рдХрд╛ рдмрд╣реБ-рдУрд╡рд░рд▓реЗ


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

рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рддрд╛рд▓реЗ рд▓рдЧрд╛рдПрдВ




рдЙрдирдореЗрдВ рд╕реЗ рд╣рдЬрд╛рд░реЛрдВ! рдореИрдиреБрдЕрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрдврд╝реЗрдВ :
рджреЛрдиреЛрдВ рд╕рд▓рд╛рд╣рдХрд╛рд░ рдФрд░ рдирд┐рдпрдорд┐рдд рддрд╛рд▓реЗ рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдЖрдХрд╛рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдорд╛рдкрджрдВрдбреЛрдВ max_locks_per_transactionрдФрд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ max_connectionsред рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдпрд╣ рдореЗрдореЛрд░реА рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреНрдпрдерд╛ рд╕рд░реНрд╡рд░ рдХрд┐рд╕реА рднреА рд▓реЙрдХ рдХреЛ рдЬрд╛рд░реА рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЕрдиреБрд╢рдВрд╕рд┐рдд рддрд╛рд▓реЗ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЬреЛ рд╕рд░реНрд╡рд░ рдЬрд╛рд░реА рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЖрдорддреМрд░ рдкрд░ рд╕рд░реНрд╡рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рджрд╕рд┐рдпреЛрдВ рдпрд╛ рд╕реИрдХрдбрд╝реЛрдВ рд╣рдЬрд╛рд░реЛрдВ рддрдХ рд╕реАрдорд┐рдд рд╣реЛрддрд╛ рд╣реИред

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

рд░рд┐рдХреЙрд░реНрдбреНрд╕ рдХреЛ рдЫрд╛рдирддреЗ рд╣реБрдП рд▓реАрдХ


рдпрд╣рд╛рдВ рд╣рдо рдкрд┐рдЫрд▓реЗ рдЕрдиреБрд░реЛрдз рдХреЛ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рд╕рдорд░рд╕рддрд╛ рд╕реНрдерд┐рддрд┐ рдЬреИрд╕реЗ рдХрд┐ рд╕рдорддрд╛ рдЪреЗрдХ рдЖрдИрдбреА - рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ AND pk_id % 2 = 0ред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рд▓рд┐рдП рджреЛрдиреЛрдВ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рдПрдЧреА ! рдирддреАрдЬрддрди, рдпрд╣ pg_try_advisory_lockрдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рдерд╛ , рддрд╛рд▓рд╛ рд╕реБрдкрд░рд┐рдореНрдкреЛрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдлрд┐рд░ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рд╕рдорддрд╛ рджреНрд╡рд╛рд░рд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред



рдпрд╛ рдореИрдиреБрдЕрд▓ рд╕реЗ рдПрдХ рд╡рд┐рдХрд▓реНрдк:
SELECT pg_advisory_lock(id) FROM foo WHERE id = 12345; -- ok
SELECT pg_advisory_lock(id) FROM foo WHERE id > 12345 LIMIT 100; -- !

рд╡рд╣ рд╕рдм рд╣реИ - рдЕрд╡рд░реЛрдзрдХ рдмрдирд╛ рд╣реБрдЖ рд╣реИ , рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕рд╣реА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐ рдореЗрдВ - pg_advisory_unlock_allред

рдУрд╣, рднреНрд░рдорд┐рдд!


рд╢реИрд▓реА рдХреЗ рдХреНрд▓рд╛рд╕рд┐рдХреНрд╕ ...

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

pg_try_advisory_lockpg_try_advisory_xact_lock

Pgbouncer рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░реЗрдВ


рдпрд╣ рдХрдИ рдХреЗ рд▓рд┐рдП рджрд░реНрдж рдХрд╛ рдПрдХ рдЕрд▓рдЧ рд╕реНрд░реЛрдд рд╣реИ, рдЬрдм рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд▓реЗрдирджреЗрди рдореЛрдб рдореЗрдВ pgbouncer рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИ ред

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



рдХреБрдЫ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:

  • рдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╕реАрдзреЗ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирд╛
  • рдпрд╛ рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╕рднреА рд╕рд▓рд╛рд╣рдХрд╛рд░ рддрд╛рд▓реЗ рдХреЗрд╡рд▓ рд▓реЗрдирджреЗрди рдХреЗ рднреАрддрд░ рд╣реЛрдВ (xact)

рдЕрднреА рдХреЗ рд▓рд┐рдП рдЗрддрдирд╛ рд╣реАред

All Articles