既然 MySQL 有四个隔离级别,那其他三个隔离级别现在会有人在用吗?
如果没有人用,那他们存在的意义在哪里呢?求问
1
aircjm 2021-06-01 19:19:45 +08:00 via Android
这个看你使用场景啊 有的比较严苛的场景会使用更高的隔离级别
|
2
symons OP 银行 /钱包的场景应该是比较严苛的,但是也不用最高级别( SERIALIZABLE ),用 REPEATABLE READ 完全可以,很难想象出来(没见过) READ UNCOMMITED 和 SERIALIZABLE 这俩级别在哪里会用到
对于 READ UNCOMMITED 的话,读非常多,写非常少这种场景可能会用到,不过如果这种场景,在 MySQL 前加一个缓存不是也能解决吗? 对于 SERIALIZABLE 这个级别,真的比较难想象,哪里会用到,太严格了 |
3
quiet1991 2021-06-01 19:28:57 +08:00 1
确实没碰到用其他 3 种隔离级别的情况
|
4
zjqzxc 2021-06-01 19:34:47 +08:00
READ UNCOMMITED 用的多,统计数据又没有离线库可以用的时候,可以降低到这个隔离级别避免锁表影响线上业务
|
5
fkdog 2021-06-01 20:03:03 +08:00
mysql 默认是 RR 级别。
对于读多得应用降一级成 RC 也是可以得。 RU 应该没人用吧。。? |
6
qiyue0726 2021-06-01 22:23:40 +08:00
不是说 mysql 的可重复读也可以达到可串行化的效果吗
|
7
ericls 2021-06-01 22:55:13 +08:00 via iPhone
只用过 read committed 场景不同
|
8
Leviathann 2021-06-01 23:30:38 +08:00 via iPhone
@qiyue0726 嗯 加写锁的话可以突破快照的镜像
|
9
chenshun00 2021-06-02 09:04:53 +08:00
默认用的是 rc
|
10
symons OP 从我之前的工作经验来看,没遇见过有需要调整隔离级别的情况,更多的是从缓存上做文章,区分主库,从库,离线库这样子。所以很奇怪,但是从存在即正确的角度来看,也想不出来场景。
另外现在面试的时候,大多数都会问数据库的四种隔离级别,如果其他三种使用频率很低的话,问完了又有什么用呢,在在日常工作中根本不用用到,在规模较大的公司有专门的 DBA 来管理数据库,研发是碰不到数据库资源的。 我把问题抛出来,如果有人遇见了这个问题,请不吝赐教。 |
11
quiet1991 2021-06-03 17:31:38 +08:00
其实感觉其他三种只是为了理论完整以及特殊情况下而搞出来的, [业务系统] 本身就是 [强事务] 系统,如果是 [统计、报表、OLAP 之类] 的需求,本身就不需要事务,那就没必要用事务。
|