ITPub博客

首页 > Linux操作系统 > Linux操作系统 > innodb 的 redo log,不会对未引起数据块变化的sql做记录的

innodb 的 redo log,不会对未引起数据块变化的sql做记录的

原创 Linux操作系统 作者:bulletming 时间:2019-04-13 17:51:06 0 删除 编辑

下边的实验简单说明上边的问题:


再做一个简单的实验:

mysql> select * from a;

+------+------+

| a | b |

+------+------+

| 10 | 2 |

| 10 | 3 |

| 10 | 101 |

+------+------+

3 rows in set (0.00 sec)

mysql> update a set b = 100;

Query OK, 3 rows affected (0.00 sec)

Rows matched: 3 Changed: 3 Warnings: 0

mysql> update a set b = 100;

Query OK, 0 rows affected (0.00 sec)

Rows matched: 3 Changed: 0 Warnings: 0

mysql> update a set b = 100 where a = 10;

Query OK, 0 rows affected (0.00 sec)

Rows matched: 3 Changed: 0 Warnings: 0

红色语句是不会产生innodb redo log write I/O的,因为update前后的值相同,更重要的是不会写innodb redo log的,这样其实就不受innodb_flush_log_at_trx_commit参数影响,这个通过status 变量Innodb_log_write_requests,Innodb_log_writes没有变化,和redo log文件修改时间没变,得到验证

中间相同的update语句没有引起数据块的变化,Innodb_rows_updated这个状态变量是不会发生变化。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/82392/viewspace-144704/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2004-05-31

  • 博文量
    121
  • 访问量
    106598