рд╢реБрдн рджреЛрдкрд╣рд░, рд╕рдореБрджрд╛рдпред
рдЬрд┐рд╕рдиреЗ рднреА MySQL рдЦрд░реАрджрд╛ рд╣реИ, рд╡рд╣ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╣рдорд╛рд░реЗ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЖрдкрдХреЗ рд╕рд╛рде рдЙрддреНрд╕рд╛рд╣рд┐рдд рдХрд░реЗрдЧрд╛ - рдФрд░ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИред
рдПрдХ рдЯреЗрдмрд▓ рд╣реИ
CREATE TABLE test (id INT, value VARCHAR(255)) ENGINE=InnoDB;
рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрд╡реЗрд░реА рдХреНрдпрд╛ рджрд┐рдЦрд╛рдПрдЧреА?
START TRANSACTION; INSERT INTO test(id, value) VALUES (1, 'test'), (2, 'test 2'); SELECT * FROM test; COMMIT; SELECT * FROM test;
рдФрд░ рд╡рд░реНрддрдорд╛рди рд▓реЗрдирджреЗрди рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЪрдпрди рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП рд╡реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдирд┐рдпрдо рд▓реЗрдХрд░ рдЖрдПред
рдкрд╣рд▓реЗ
рдкрдврд╝реЗ рд▓рд┐рдЦреЗрдКрдкрд░ рдХреЗ рд▓реЗрди-рджреЗрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред INSERT рдХреЗ рдмрд╛рдж, рдбреЗрдЯрд╛ рддреБрд░рдВрдд рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╛рдиреА, рдЯреНрд░рд╛рдВрдЬреИрдХреНрд╢рди рдХреЗ рдмрд╛рд╣рд░ COMMIT рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдк рдбреЗрдЯрд╛ рдХреЛ рд╕рд┐рд░реНрдл рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдВрдЧреНрд░реЗрдЬреА рд╕рд╛рд╣рд┐рддреНрдп рдореЗрдВ, рдЗрд╕реЗ рдЧрдВрджрд╛ рд░реАрдб рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕реНрддрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рд╢рд╛рдпрдж рд╣реА рдХреЛрдИ рдЗрди рд╕рдорд╛рди рд╕реНрддрд░реЛрдВ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИред
рджреВрд╕рд░рд╛
рдкрдврд╝реЗрдВ рдЯрд┐рдкреНрдкрдгреАрдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк COMMIT рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рдбреЗрдЯрд╛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрди-рджреЗрди рдХреЗ рдЕрдВрджрд░ рдХрд╛ рдбреЗрдЯрд╛ рднреА рдЕрднреА рддрдХ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред
рдпрджрд┐ рдЖрдк рдКрдкрд░ рдХреЗ рд▓реЗрди-рджреЗрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкрд╣рд▓рд╛ рдЪрдпрди рдХреБрдЫ рднреА рдирд╣реАрдВ рд▓реМрдЯрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рддрд╛рд▓рд┐рдХрд╛ рдЕрднреА рднреА рдЦрд╛рд▓реА рд╣реИ рдФрд░ рд▓реЗрдирджреЗрди рдХреА рдкреБрд╖реНрдЯрд┐ рдирд╣реАрдВ рд╣реБрдИ рд╣реИред
рддреАрд╕рд░реА
рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрдврд╝реЗрдВрдЗрд╕ рд╕реНрддрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ MySQL рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рджреВрд╕рд░реЗ рд╕реЗ рдЕрд▓рдЧ рд╣реИ рдХрд┐ рдирдП рдЬреЛрдбрд╝реЗ рдЧрдП рдбреЗрдЯрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓реЗрдирджреЗрди рдХреЗ рднреАрддрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдмрд╛рд╣рд░ рд╕реЗ рдкреБрд╖реНрдЯрд┐ рд╣реЛрдиреЗ рддрдХ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред
рдпрд╣рд╛рдВ "рдкреНрд░реЗрдд рдкрдврд╝рдиреЗ" рдХреА рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИред рдЬрдм рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рд▓реЗрди-рджреЗрди рдХреЗ рдЕрдВрджрд░ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рд╕рдордп рдПрдХ рдФрд░ рд▓реЗрдирджреЗрди рдирдП рдбреЗрдЯрд╛ рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкрд╣рд▓рд╛ рд▓реЗрдирджреЗрди рдЙрд╕реА рдбреЗрдЯрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрдврд╝рддрд╛ рд╣реИред
рдФрд░ рдЕрдВрддрд┐рдо
рдЕрдиреБрдХреНрд░рдорд┐рдХрдЗрд╕ рд╕реНрддрд░ рдкрд░, MySQL рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рдмреНрд▓реЙрдХ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдХреЛрдИ рднреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд╕реЗ "рдкреНрд░реЗрдд" рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЖрднрд╛рд╕ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рд╕реНрддрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ InnoDB рдФрд░ рдХрдо рд▓реЛрдХрдкреНрд░рд┐рдп рдлрд╛рд▓реНрдХрди рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВред
рд╡рд░реНрддрдорд╛рди рдЕрд▓рдЧрд╛рд╡ рд╕реНрддрд░ рджреЗрдЦреЗрдВ
SHOW VARIABLES LIKE '%tx_isolation%';
рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
рдпрд╣ рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рдЖрдо рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдкреНрд░рдпрд╛рд╕ рд╣реИред
рдЖрдкрдХрд╛ рдзрдиреНрдпрд╡рд╛рдж
рд╕рдорд╕реНрдпрд╛:
CREATE TABLE one(id INT, value VARCHAR(12)) ENGINE = MyISAM; CREATE TABLE two(id INT, value VARCHAR(12)) ENGINE = InnoDB; START TRANSACTION; INSERT INTO one (id, value) VALUES (1, 'test'); INSERT INTO two (id, value) VALUES (1, 'test'); ROLLBACK; SELECT * FROM one; SELECT * FROM two;
рдкрд╣рд▓реА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрдЧрд╛, рдФрд░ рджреВрд╕рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?
рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдлрд╛рд▓реНрдХрди рдФрд░ PBXT рдЗрдВрдЬрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред