概述
初步学习事务的隔离
select @@global.autocommit;
set @@global.autocommit=0; //关闭后当前会话不受影响,以后打开的会话为关闭自动提交
select @@session.autocommit; //关闭后当前会话为关闭自动提交
select @@autocommit;
set @@session.autocommit=0; set @@autocommit=0;
begin;//开启会话后,自动成为非自动提交,但autocommit值不变。一但事务结束,自动提交的情况恢复到事务前。
查看隔离参数
db1>select @@global.tx_isolation;
db1>select @@session.tx_isolation;
db1>select @@tx_isolation;
+---------------------------------+
| @@session.tx_isolation |
+---------------------------------+
| REPEATABLE-READ |
+---------------------------------+
db1>help isolation;
SET [GLOBAL | SESSION] TRANSACTION ISOLATION LEVEL
{
REPEATABLE READ 可重复读
| READ COMMITTED 读取以提交数据
| READ UNCOMMITTED 读取未提交数据
| SERIALIZABLE 串行运行
}
修改事务的隔离级别,要求在事务开启前执行。
- READ UNCOMMITTED 读取未提交数据 脏读
本事务设置为这个隔离级别后,可以读到别的事务未提交的数据。这样非常不好。因为那些修改还没有真正生效,可能会被撤回。
- READ COMMITTED 读取已经提交数据 幻读
可以读到别的事务已经提交的数据。可以在工作中使用。
在事务中后一次查询到了前一次没有查询到的数据(新增)。
别的事务删除数据后本事务也会受到影响。
- REPEATABLE READ 可重复读
a事务中增加数据后,b事务中虽然看不到,但自动增长值会受到影响。如果a事务回滚,用过的自动增长值就会被废弃。
最后
以上就是现代鞋垫为你收集整理的初步学习事务的隔离的全部内容,希望文章能够帮你解决初步学习事务的隔离所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复