MySQL执行更新语句和原数据相同会再次执行吗

  


  

  

本文主要测试MySQL执行更新语句时,针对与原数据(即未修改)相同的更新语句会在MySQL内部重新执行吗?

  


  

  
      <李> MySQL5.7.25李   <李> Centos 7.4   
  


  

  

<强>参数

        04:53:15> root@localhost:(一);显示变量如“binlog_row_image”;   + - - - - - - - - - - - - - - - - - - - - - - - - - + +   | | Variable_name |值   + - - - - - - - - - - - - - - - - - - - - - - - - - + +   | binlog_row_image | |   + - - - - - - - - - - - - - - - - - - - - - - - - - + +   1行集(0.00秒)      04:53:49> root@localhost:(一);显示变量如“binlog_format”;   + - - - - - - - - - - - - - - - - - - - - - - - - - +   | | Variable_name |值   + - - - - - - - - - - - - - - - - - - - - - - - - - +   | | binlog_format |行   + - - - - - - - - - - - - - - - - - - - - - - - - - +   1行集(0.00秒)      root@localhost:测试05:15:14>显示变量如“transaction_isolation”;   + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - +   | | Variable_name |值   + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - +   | transaction_isolation |可重复读|   + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - +   1行集(0.00秒)      

<强>测试步骤
  

  

session1         root@localhost:测试04:49:48>开始;   查询好,0行影响(0.00秒)      root@localhost:测试04:49:52>select *从测试id=1;   + - - - + - - - + - - - - - - - - - - - - + +   | | id sid | | |中期的名字   + - - - + - - - + - - - - - - - - - - - - + +   | 1 | 999 | 871 | NW |   + - - - + - - - + - - - - - - - - - - - - + +   1行集(0.00秒)      04:54:03> root@localhost:(一);显示引擎innodb状态\ Gshow主人地位\ G   …   ---   日志   ---   日志序列号12090390   日志刷新到12090390   页面刷新到12090390   最后一个检查点在12090381   等待日志刷新、0等待chkp写道   33日志i/o完成,0.00日志i/o/秒      * * * * * * * * * * * * * * * * * * * * * * * * * * * 1。行 ***************************   文件:mysql-bin.000001   位置:154   Binlog_Do_DB:   Binlog_Ignore_DB:   Executed_Gtid_Set:   1行集(0.00秒)      中

<强> session2

        root@localhost:测试04:47:45>更新测试集sid=55 id=1;   查询好了,1行影响(0.01秒)   行匹配:1改变:1警告:0      04:54:03> root@localhost:(一);显示引擎innodb状态\ Gshow主人地位\ G   …   ---   日志   ---   日志序列号12091486   日志刷新到12091486   页面刷新到12091486   最后一个检查点在12091477   等待日志刷新、0等待chkp写道   39日志i/o完成,0.00日志i/o/秒      * * * * * * * * * * * * * * * * * * * * * * * * * * * 1。行 ***************************   文件:mysql-bin.000001   位置:500   Binlog_Do_DB:   Binlog_Ignore_DB:   d215 Executed_Gtid_Set: 8392 - 4928 - 11 - e9 a751 - 0242 ac110002:1   1行集(0.00秒)      

<强> session1

        root@localhost:测试04:49:57>更新测试集sid=55 id=1;   查询好,0行影响(0.00秒)   行匹配:1改变:0警告:0      04:54:03> root@localhost:(一);显示引擎innodb状态\ Gshow主人地位\ G   …   ---   日志   ---   日志序列号12091486   日志刷新到12091486   页面刷新到12091486   最后一个检查点在12091477   等待日志刷新、0等待chkp写道   39日志i/o完成,0.00日志i/o/秒      * * * * * * * * * * * * * * * * * * * * * * * * * * * 1。行 ***************************   文件:mysql-bin.000001   位置:500   Binlog_Do_DB:   Binlog_Ignore_DB:   d215 Executed_Gtid_Set: 8392 - 4928 - 11 - e9 a751 - 0242 ac110002:1   1行集(0.00秒)      root@localhost:测试04:52:05>select *从测试id=1;   + - - - + - - - + - - - - - - - - - - - - + +   | | id sid | | |中期的名字   + - - - + - - - + - - - - - - - - - - - - + +   | 1 | 999 | 871 | NW |   + - - - + - - - + - - - - - - - - - - - - + +   1行集(0.00秒)      root@localhost:测试04:52:42>提交;   查询好,0行影响(0.00秒)      root@localhost:测试04:52:52>select *从测试id=1;   + - - - + - - - + - - - - - - - - - - - - + +   | | id sid | | |中期的名字   + - - - + - - - + - - - - - - - - - - - - + +   西北55 | 1 | | 871 | |   + - - - + - - - + - - - - - - - - - - - - + +   1行集(0.00秒)

MySQL执行更新语句和原数据相同会再次执行吗