mysql 模拟闪回补丁_在MySQL上实现闪回查询

author:sufei

版本:MySQL 8.0.18

说明:本文仅仅是测试MySQL闪回查询的效果

一、新引入两个系统变量

allow_flash_period

全局只读变量,单位为ms,用于表示是否开启了闪回查询功能(0表示未开启),以及控制purge线程清理undo表空间,确保从当前时刻到该变量设置的时间段内的undo表空间不被清理。即如果allow_flash_period设置为3600000,则系统执行闪回查询,只能查询1小时范围内,超过该范围的unlog 可能被清理了。

flashtime

会话变量,字符串类型,用于表示该回话是否设置了闪回查询以及闪回查询的时刻。

二、实验情况

整个操作情况如下:

1、查看原始数据

2、2021-02-06 16:26:30后,执行插入

3、2021-02-06 16:27:07后,执行更新操作

4、2021-02-06 16:28:07后,执行删除操作

5、闪回查询验证

mysql> select * from test_flash; ## 现在数据如下

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

| id | name | age |

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

| 1 | dog | 12 |

| 2 | lion | 15 |

| 3 | sheep | 3 |

| 4 | rabbit | 2 |

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

4 rows in set (0.02 sec)

mysql> select now();

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

| now() |

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

| 2021-02-06 16:26:30 |

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

1 row in set (0.00 sec)

mysql> insert into test_flash values(5,'pig',3);

Query OK, 1 row affected (0.01 sec)

mysql> select now();

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

| now() |

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

| 2021-02-06 16:27:07 |

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

1 row in set (0.00 sec)

mysql> update test_flash set name='duck';

Query OK, 5 rows affected (0.01 sec)

Rows matched: 5 Changed: 5 Warnings: 0

mysql> select now();

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

| now() |

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

| 2021-02-06 16:28:07 |

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

1 row in set (0.00 sec)

mysql> delete from test_flash where id = 4;

Query OK, 1 row affected (0.01 sec)

mysql> select * from test_flash; ## 最终数据

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

| id | name | age |

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

| 1 | duck | 12 |

| 2 | duck | 15 |

| 3 | duck | 3 |

| 5 | duck | 3 |

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

4 rows in set (0.00 sec)

下面则是闪回查询执行效果

85a418bd26da

闪回查询结果

闪回模式下dml操作验证

mysql> set flashtime = '2021-02-06 16:28:07';

Query OK, 0 rows affected (0.00 sec)

mysql> insert into test_flash values(6,'snake',5);

ERROR 3655 (HY000): DML operation is disallowed on when flashtime is not NULL .

相应dml操作报错,表明此时会话在闪回模式下,无法进行dml操作。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值