MySql MVCC是如何实现的-关于autocommit?
2021/8/1 19:37:54
本文主要是介绍MySql MVCC是如何实现的-关于autocommit?,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
关于autocommit
- 查看autocommit
show variables like 'autocommit';
mysql> show variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit | ON |
+---------------+-------+
1 row in set (0.00 sec)
我们可以看到autocommit的值为ON,说明MySql默认是开启了自动提交事务的。什么意思呢?我们举例说明一下:
- 新建表
CREATE TABLE `keyvalue` ( `key` int(11) NOT NULL AUTO_INCREMENT, `value` int(11) DEFAULT NULL, PRIMARY KEY (`key`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
- 在终端1中插入一条数据
insert into keyvalue(`value`)values(3);
3.在终端2中查询,这时候是可以查询到的
select * from keyvalue where `value`=3;
4.修改autocommit为OFF
set session autocommit=0;
5.重新执行2-3步骤,这时候的终端2中是查不到终端1中插入的数据的,也就是终端1中插入的数据对终端2不可见。
6.在终端1中提交事务,再次在终端2中查看,这时候就可以查看到了。
7.总结:
1.当autocommit为ON状态时,即使没有手动start transaction开启事务,mysql默认也会将用户的操作当做事务即时提交。
2.当autocommit为OFF状态时,mysql仍然会自动开启事务,但是需要用户手动提交,未提交前,A事务对数据库做的修改对B事务是不可见的。
8.思考:当autocommit为ON状态时,用户手动开启事务,mysql会不会自动提交?
答案是:不会
我们测试一下,先将autocommit设置为ON,然后在终端1手动开启一个事务,在终端2中查询,从结果来看,在未手动提交前,终端2中是查看不到的。
这篇关于MySql MVCC是如何实现的-关于autocommit?的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-15MySQL教程:初学者必备的MySQL数据库入门指南
- 2024-11-15MySQL教程:初学者必看的MySQL入门指南
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程