MySql 隔离级别测试总结

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)

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

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

猜你喜欢

转载自blog.csdn.net/w786572258/article/details/54691516