菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
2355
0

MySQL 隔离级别测试总结

原创
05/13 14:22
阅读数 1492

MySql 隔离设置相关命令

show variables like 'tx_isolation' 
select @@global.tx_isolation;  

set global tx_isolation='READ-UNCOMMITTED'; 未提交读
set global tx_isolation='READ-COMMITTED';  
set global tx_isolation='REPEATABLE-READ';
set global tx_isolation='SERIALIZABLE';

隔离级别

一、未提交读(READ-UNCOMMITTED)

操作类型 事务提交前其他人是否可以看到 其他人更新记录后是否影响这次事务结果 后果
插入 可以 脏读,不可重复读、幻读
更新 可以
删除 看不到记录了

结论:安全性最低,性能最快,一般不用这个级别,会导致很多问题。

二、提交读/不可重复读(READ-COMMITTED/NOREPEATABLE READ)

操作类型 事务提交前其他人是否可以看到 其他人更新记录后是否影响这次事务结果 后果
插入 不可以 不可重复读、幻读
更新 不可以
删除 还能看到记录

结论:安全性略低,性能一般,很多数据用这个级别(mysql不是)。

三、可重复读(REPEATABLE-READ)

操作类型 事务提交前其他人是否可以看到 其他人更新记录后是否影响这次事务结果 后果
插入 不可以 不会 幻读(实际数据没了或改变了,但这个事务的数据未提交前不会变化)
更新 不可以 不会
删除 还能看到记录 不会

结论:安全性一般,性能较快,mysql默认这个级别

四、串行化(SERIALIZABLE)

操作类型 事务提交前其他人是否可以看到 其他人更新记录后是否影响这次事务结果 后果
插入 不可以 阻塞 安全性最高,性能最差
更新 不可以 阻塞
删除 还能看到记录 阻塞

结论:应用于安全度很高的项目

发表评论

0/200
2355 点赞
0 评论
收藏
为你推荐 换一批