MySQL数据库innodb_rollback_on_timeout参数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL数据库innodb_rollback_on_timeout参数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含8847字,纯文字阅读大概需要13分钟。
内容图文
![MySQL数据库innodb_rollback_on_timeout参数](/upload/InfoBanner/zyjiaocheng/521/e6c27de2ac4e4dcba1b513d8e337459e.jpg)
mysql> use testdb; Database changed mysql> create table test1(id int primary key,name varchar(20)); Query OK, 0 rows affected (0.01 sec) mysql> insert into test1 values(1,‘1wdrt5‘); Query OK, 1 row affected (0.00 sec) mysql> select * from test1; +----+--------+ | id | name | +----+--------+ | 1 | 1wdrt5 | +----+--------+ 1 row in set (0.00 sec)
下面将根据不同的隔离级别及innodb_rollback_on_timeout启停情况进行测试。
2. 测试过程
2.1 隔离级别REPEATABLE-READ & innodb_rollback_on_timeout =OFF
a) 测试过程:
session A | session B |
mysql> begin;
mysql> select * from test1; |
mysql> begin; mysql> select * from test1;
|
b) 测试结果:
隔离级别REPEATABLE-READ & innodb_rollback_on_timeout =OFF (2个参数均为默认值)的情况下,即使事务中有超时回滚报错,超时前的sql不会回滚,依旧执行成功。
2.2 隔离级别为READ-COMMITTED & innodb_rollback_on_timeout =OFF
a) 测试过程
session A | session B |
mysql> show global variables like ‘transaction_isolation‘;
mysql> commit; mysql> select * from test1; |
mysql> begin;
|
b)测试结果:
隔离级别为READ-COMMITTED & innodb_rollback_on_timeout =OFF 情况下,即使事务中有超时回滚报错,超时前的sql不会回滚,依旧执行成功,同2者均为默认值的情况。
2.3 隔离级别REPEATABLE-READ & innodb_rollback_on_timeout =ON
注: innodb_rollback_on_timeout不能在线修改,需要修改配置文件后重启生效
测试过程:
a) 修改配置文件,重启数据库
在my.cnf文件里添加innodb_rollback_on_timeout=on 再重启数据库即可生效
mysql> show global variables like ‘transaction_isolation‘; +-----------------------+-----------------+ | Variable_name | Value | +-----------------------+-----------------+ | transaction_isolation | REPEATABLE-READ | +-----------------------+-----------------+ 1 row in set (0.00 sec) mysql> show global variables like ‘innodb_rollback_on_timeout‘; +----------------------------+-------+ | Variable_name | Value | +----------------------------+-------+ | innodb_rollback_on_timeout | ON | +----------------------------+-------+ 1 row in set (0.00 sec)
b) 事务测试过程
session A | session B |
mysql> select * from test1;
mysql> commit; |
mysql> use testdb; |
c) 测试结果:
隔离级别REPEATABLE-READ & innodb_rollback_on_timeout =ON 的情况下,事务中有超时回滚报错时,超时前sql也会回滚。
2.4 隔离级别为READ-COMMITTED & innodb_rollback_on_timeout =ON
a) 参数调整
mysql> set global transaction_isolation=‘READ-COMMITTED‘; mysql> exit # 重新登录 mysql> show global variables like ‘transaction_isolation‘; +-----------------------+----------------+ | Variable_name | Value | +-----------------------+----------------+ | transaction_isolation | READ-COMMITTED | +-----------------------+----------------+ 1 row in set (0.00 sec) mysql> show global variables like ‘innodb_rollback_on_timeout‘; +----------------------------+-------+ | Variable_name | Value | +----------------------------+-------+ | innodb_rollback_on_timeout | ON | +----------------------------+-------+ 1 row in set (0.00 sec)
b) 测试过程
session A | session B |
mysql> use testdb;
mysql> commit; |
mysql> use testdb; |
c) 测试结果
隔离级别为READ-COMMITTED & innodb_rollback_on_timeout =ON的情况下,即使事务中有超时回滚报错,超时前的sql不会回滚,依旧执行成功,同2者均为默认值的情况。
3. 小结
在MySQL8.0 中,仅有在隔离级别为READ-COMMITTED & innodb_rollback_on_timeout =ON情况下,事务中有超时回滚报错时,超时前sql也会回滚。
隔离级别 | innodb_rollback_on_timeout | 结果 |
REPEATABLE-READ | OFF | 超时回滚前的SQL不会自动回滚 |
READ-COMMITTED | OFF | 超时回滚前的SQL不会自动回滚 |
REPEATABLE-READ | ON | 超时回滚前的SQL会自动回滚 |
READ-COMMITTED | ON | 超时回滚前的SQL不会自动回滚 |
TIPS:
1) 测试过程中可以查看information_schema.innodb_trx表观察事务情况,在不同的版本中事务情况不一样.例如,隔离级别REPEATABLE-READ & innodb_rollback_on_timeout=on的情况下,MySQL5.6 中整个事务回滚后会自动创建一个事务,而MySQL5.7则不会再自动创建事务。
2) 在生产环境使用中,建议将innodb_rollback_on_timeout 设置为ON。应用程序一定要做好事务控制,在一个事务出现异常时必须进行显式rollback
MySQL数据库innodb_rollback_on_timeout参数
标签:session 操作 结果 wait values for tip into str
本文系统来源:https://www.cnblogs.com/lonelyxmas/p/12500144.html
内容总结
以上是互联网集市为您收集整理的MySQL数据库innodb_rollback_on_timeout参数全部内容,希望文章能够帮你解决MySQL数据库innodb_rollback_on_timeout参数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。