The content of this article is about analyzing whether the update modified data in MySQL will be executed again if it is the same as the original data. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.
This article mainly tests when MySQL executes the update statement. Will the update statement that is the same as the original data (that is, not modified) be re-executed within MySQL?
parameter
root@localhost : (none) 04:53:15> show variables like 'binlog_row_image'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | binlog_row_image | FULL | +------------------+-------+ 1 row in set (0.00 sec) root@localhost : (none) 04:53:49> show variables like 'binlog_format'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | binlog_format | ROW | +---------------+-------+ 1 row in set (0.00 sec) root@localhost : test 05:15:14> show variables like 'transaction_isolation'; +-----------------------+-----------------+ | Variable_name | Value | +-----------------------+-----------------+ | transaction_isolation | REPEATABLE-READ | +-----------------------+-----------------+ 1 row in set (0.00 sec)
session1
root@localhost : test 04:49:48> begin; Query OK, 0 rows affected (0.00 sec) root@localhost : test 04:49:52> select * from test where id =1; +----+------+------+------+ | id | sid | mid | name | +----+------+------+------+ | 1 | 999 | 871 | NW | +----+------+------+------+ 1 row in set (0.00 sec) root@localhost : (none) 04:54:03> show engine innodb status\Gshow master status\G ... --- LOG --- Log sequence number 12090390 Log flushed up to 12090390 Pages flushed up to 12090390 Last checkpoint at 12090381 0 pending log flushes, 0 pending chkp writes 33 log i/o's done, 0.00 log i/o's/second *************************** 1. row *************************** File: mysql-bin.000001 Position: 154 Binlog_Do_DB: Binlog_Ignore_DB: Executed_Gtid_Set: 1 row in set (0.00 sec)
session2
root@localhost : test 04:47:45> update test set sid=55 where id =1; Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0 root@localhost : (none) 04:54:03> show engine innodb status\Gshow master status\G ... --- LOG --- Log sequence number 12091486 Log flushed up to 12091486 Pages flushed up to 12091486 Last checkpoint at 12091477 0 pending log flushes, 0 pending chkp writes 39 log i/o's done, 0.00 log i/o's/second *************************** 1. row *************************** File: mysql-bin.000001 Position: 500 Binlog_Do_DB: Binlog_Ignore_DB: Executed_Gtid_Set: 8392d215-4928-11e9-a751-0242ac110002:1 1 row in set (0.00 sec)
session1
root@localhost : test 04:49:57> update test set sid=55 where id =1; Query OK, 0 rows affected (0.00 sec) Rows matched: 1 Changed: 0 Warnings: 0 root@localhost : (none) 04:54:03> show engine innodb status\Gshow master status\G ... --- LOG --- Log sequence number 12091486 Log flushed up to 12091486 Pages flushed up to 12091486 Last checkpoint at 12091477 0 pending log flushes, 0 pending chkp writes 39 log i/o's done, 0.00 log i/o's/second *************************** 1. row *************************** File: mysql-bin.000001 Position: 500 Binlog_Do_DB: Binlog_Ignore_DB: Executed_Gtid_Set: 8392d215-4928-11e9-a751-0242ac110002:1 1 row in set (0.00 sec) root@localhost : test 04:52:05> select * from test where id =1; +----+------+------+------+ | id | sid | mid | name | +----+------+------+------+ | 1 | 999 | 871 | NW | +----+------+------+------+ 1 row in set (0.00 sec) root@localhost : test 04:52:42> commit; Query OK, 0 rows affected (0.00 sec) root@localhost : test 04:52:52> select * from test where id =1; +----+------+------+------+ | id | sid | mid | name | +----+------+------+------+ | 1 | 55 | 871 | NW | +----+------+------+------+ 1 row in set (0.00 sec)
Parameters
root@localhost : (none) 04:53:15> show variables like 'binlog_row_image'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | binlog_row_image | FULL | +------------------+-------+ 1 row in set (0.00 sec) root@localhost : (none) 05:16:08> show variables like 'binlog_format'; +---------------+-----------+ | Variable_name | Value | +---------------+-----------+ | binlog_format | STATEMENT | +---------------+-----------+ 1 row in set (0.00 sec) root@localhost : test 05:15:14> show variables like 'transaction_isolation'; +-----------------------+-----------------+ | Variable_name | Value | +-----------------------+-----------------+ | transaction_isolation | REPEATABLE-READ | +-----------------------+-----------------+ 1 row in set (0.00 sec)
session1
root@localhost : test 05:16:42> begin; Query OK, 0 rows affected (0.00 sec) root@localhost : test 05:16:44> select * from test where id =1; +----+------+------+------+ | id | sid | mid | name | +----+------+------+------+ | 1 | 111 | 871 | NW | +----+------+------+------+ 1 row in set (0.00 sec) root@localhost : (none) 05:16:51> show engine innodb status\Gshow master status\G ... --- LOG --- Log sequence number 12092582 Log flushed up to 12092582 Pages flushed up to 12092582 Last checkpoint at 12092573 0 pending log flushes, 0 pending chkp writes 45 log i/o's done, 0.00 log i/o's/second *************************** 1. row *************************** File: mysql-bin.000001 Position: 154 Binlog_Do_DB: Binlog_Ignore_DB: Executed_Gtid_Set: 1 row in set (0.00 sec)
session2
root@localhost : test 05:18:30> update test set sid=999 where id =1; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 root@localhost : (none) 05:18:47> show engine innodb status\Gshow master status\G ... --- LOG --- Log sequence number 12093678 Log flushed up to 12093678 Pages flushed up to 12093678 Last checkpoint at 12093669 0 pending log flushes, 0 pending chkp writes 51 log i/o's done, 0.14 log i/o's/second *************************** 1. row *************************** File: mysql-bin.000001 Position: 438 Binlog_Do_DB: Binlog_Ignore_DB: Executed_Gtid_Set: 8392d215-4928-11e9-a751-0242ac110002:1 1 row in set (0.00 sec)
session1
root@localhost : test 05:16:47> update test set sid=999 where id =1; Query OK, 0 rows affected (0.00 sec) Rows matched: 1 Changed: 0 Warnings: 0 root@localhost : (none) 05:20:03> show engine innodb status\Gshow master status\G ... --- LOG --- Log sequence number 12094504 Log flushed up to 12094504 Pages flushed up to 12094504 Last checkpoint at 12094495 0 pending log flushes, 0 pending chkp writes 56 log i/o's done, 0.00 log i/o's/second *************************** 1. row *************************** File: mysql-bin.000001 Position: 438 Binlog_Do_DB: Binlog_Ignore_DB: Executed_Gtid_Set: 8392d215-4928-11e9-a751-0242ac110002:1 1 row in set (0.00 sec) root@localhost : test 05:19:33> select * from test where id =1; +----+------+------+------+ | id | sid | mid | name | +----+------+------+------+ | 1 | 999 | 871 | NW | +----+------+------+------+ 1 row in set (0.00 sec) root@localhost : test 05:20:44> commit; Query OK, 0 rows affected (0.01 sec) root@localhost : test 05:20:57> select * from test where id =1; +----+------+------+------+ | id | sid | mid | name | +----+------+------+------+ | 1 | 999 | 871 | NW | +----+------+------+------+ 1 row in set (0.00 sec)
The above is the detailed content of Analyze whether update modified data in MySQL is the same as the original data and will be executed again. For more information, please follow other related articles on the PHP Chinese website!