简短结论:SERIALIZABLE(可串行化)一般不适合高并发场景,它是正确性最高、但并发性能最低的隔离级别。
下面详细说为什么,以及什么时候可能“适合”。
SERIALIZABLE 要求:
结果:
在高并发下常见问题:
| 隔离级别 | 并发性 | 正确性 | 典型问题 |
|---|---|---|---|
| READ UNCOMMITTED | 最高 | 最低 | 脏读 |
| READ COMMITTED | 高 | 中 | 不可重复读 |
| REPEATABLE READ | 中高 | 较高 | 幻读(部分数据库已解决) |
| SERIALIZABLE | 低 | 最高 | 性能差 |
MySQL InnoDB 默认是 REPEATABLE READ,且通过 MVCC + 间隙锁已避免大部分幻读。
SERIALIZABLE 并非绝对不能用,以下情况可考虑:
通常不是“用 SERIALIZABLE”,而是:
SERIALIZABLE 是为了“绝对正确”,不是为“高并发”设计的。
如果你愿意,可以告诉我:
我可以给你更具体的隔离级别和设计方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。