mysql的事务隔离级别

一.事务的特性
1.原子性
事务要么全部成功,要么全部回滚

2.一致性
事务的完整性约束没有被破坏,如果遇到违反约束的情况会回滚

3.隔离性
每个事务不会受其他事务的影响

4.持久性
事务一旦提交就会永久生效。

支持事务的引擎:innodb,NDBCluster,TokuDB
不支持事务的引擎:MyISAM,MEMORY

二. 事务的隔离级别


1)read uncommitted : 读取尚未提交的数据 :哪个问题都不能解决
2)read committed:读取已经提交的数据 :可以解决脏读 ---- oracle默认的
3)repeatable read:重读读取:可以解决脏读 和 不可重复读 幻读 ---mysql默认的
4)serializable:串行化:可以解决 脏读 不可重复读 和 虚读---相当于锁表

脏读: 事务T1修改了1行数据,事务T2在事务T1提交之前读到了该行数据
幻读: 事务T1读取了满足某条件的一个数据集,事务T2插入了一行或者多行数据满足了T1的选择条件,导致事务T1再次使用同样的选择条件读取的时候,得到了比第一次读取更多的数据集。
不可重复读:事务T1读取了一行数据,事务T2接着修改或者删除了该行数据,当T1再次读取同一行数据的时候,读到的数据时修改之后的或者发现已经被删除

1. 修改数据库隔离级别
-查看事务级别
mysql> show variables like 'tx_isolation%';
+---------------+----------------+
| Variable_name | Value          |
+---------------+----------------+
| tx_isolation  | READ-COMMITTED |
+---------------+----------------+ 

- seesion级别修改
set session transaction isolation level read uncommitted;
set session transaction isolation level read committed;
set session transaction isolation level repeatable read;

- global级别修改
set global transaction isolation level read uncommitted;
set global transaction isolation level read committed;
set global transaction isolation level repeatable read;

mysql默认的事务是自动提交
关闭自动提交:set autocommit=0;

2.事务隔离级别实验
mysql> select * from t3;
+----+------+
| id | name |
+----+------+
|  4 | mxt2 |
|  5 | mxt3 |
|  6 | mxt4 |
+----+------+
3 rows in set (0.00 sec)

mysql> set autocommit=0;
Query OK, 0 rows affected (0.00 sec)



虽然可重复读仍然可以看到session1 修改前的数据,但是以该条件进行更新时,没有任何数据被修改。

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

转载于:http://blog.itpub.net/15412087/viewspace-2152465/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值