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)

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

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

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!