首页 新闻 会员 周边

数据库事务隔离级别选择

0
[待解决问题]

Mysql事务隔离级别,我听了很多概念,各种锁的概念,MVCC,undolog,read view等等

那么问题是我知道这些概念,那么我如何选择事务隔离级别呢?

网络上大部分回答都是使用可提交,也就是RC级别,然后诉说了各种好处。

那么我想问可重复读级别有什么用呢?

我们在什么时候应该使用RR呢?

KeBoom的主页 KeBoom | 菜鸟二级 | 园豆:202
提问于:2023-04-06 21:33
< >
分享
所有回答(2)
0
ycyzharry | 园豆:25653 (高人七级) | 2023-04-06 22:47
1

MySQL提供了四种事务隔离级别:读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)和串行化(Serializable)。选择事务隔离级别需要根据实际情况来决定,下面是一些考虑因素:

并发性需求:读未提交级别会造成数据不一致的情况,而串行化级别会完全锁定表,因此通常情况下应该选择读已提交或可重复读级别,以兼顾并发性和数据准确性。

数据的业务特点:有些业务数据可能需要高度一致性,对数据一致性要求高的业务适合使用可重复读或串行化隔离级别。

事务的读写比例:事务的读写比例越大,可重复读级别的优势就越明显,因为可重复读级别可以避免不必要的锁定和读取。

应用的实际情况:不同的应用需要的隔离级别也不同,需要根据实际情况进行选择。

RR(可重复读)隔离级别的主要优点是可以避免幻读,即在一个事务中读取的所有行都保持不变,不受其他事务的干扰,这对于需要对数据进行多次读取和计算的场景非常有用,同时也可以提高数据的一致性。

使用RR隔离级别的场景包括:

需要多次读取同一批数据进行计算的场景,例如统计分析类应用。

对于多表关联查询,如果查询中包含的表中有新增、删除、更新操作,则需要使用RR隔离级别,否则会出现幻读。

需要注意的是,RR隔离级别会引入一些不必要的锁定和读取,可能会影响并发性能,因此需要根据具体情况进行选择。

Technologyforgood | 园豆:5686 (大侠五级) | 2023-04-07 21:49

后面的场景很有用,谢谢!!

支持(0) 反对(0) KeBoom | 园豆:202 (菜鸟二级) | 2023-04-07 22:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册