浅谈数据库事务隔离,
分享于 点击 3249 次 点评:250
浅谈数据库事务隔离,
事务隔离主要是针对ACID中的 I 隔离性设置的,在了解这几种数据库事务之前需要先了解几个重要概念:
-
脏读 - 事务1(READ)访问了事务2(WRITE)未提交的事务
-
幻读 - 一个事务读取了2次,得到的结果不一样
-
不可重复读 - 一个事务读取同一条记录2次,得到的结果不一致
为了解决上面的三个问题,有四种数据库隔离级别
事务隔离级别越高,数据的完整性和一致性越好,但会影响并发性能。mysql默认使用 Repeatable Read 级别,而aliyun rds 默认使用 READ COMMITTED。
查看查询数据库隔离级别
select @@global.tx_isolation;
Mysql 8.0 以上需要使用
select @@transaction_isolation;
修改事务隔离级别:mysql.ini
#可选参数有:READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE.
[mysqld]
transaction-isolation = REPEATABLE-READ
当然,也可以只对当前session修改
mysql> set session transaction isolation level read uncommited;
锁机制
共享锁:由读表操作加上的锁,加锁后其他用户只能获取该表或行的共享锁,不能获取排它锁,也就是说只能读不能写
排它锁:由写表操作加上的锁,加锁后其他用户不能获取该表或行的任何锁,典型是mysql事务中的
锁的范围:
行锁: 对某行记录加上锁
表锁: 对整个表加上锁
本文由 歧途老农 创作,采用 CC BY 4.0 CN 协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。
相关文章
- 暂无相关文章
用户点评