MySQL事务隔离整理
事务:保证一组数据库操作,要么全部成功,要么全部失败。MySQL中事务支持在引擎层实现。MySQL是一个支持多引擎的系统,不是所有的MySQL引擎都支持事务。
1.事务ACID原则
Atomicity,Consistency,Isolation,Durability
2.事务隔离级别(多事务数据处理)
读未提交:可读取到另一个未提交的事务数据变更,会出现脏读,不可重复读。
读提交:只有事务提交之后,其他事务才可读取到它的值;另一个意思:一旦事务提交,其他事务就能读取到它的值。会出现不可重复读。
可重复读:一个事务看到的值,与这个事务启动时看到的值是一致的。另一个意思:其他事务提交了,如果当前事务没提交,其他事务的提交对当前事务来讲无意义。会出现幻读:比如一个事务要更新所有的数据,但是另一个事务新增了一条数据,那么操作第一个事务的人会发现表中还存在没有修改的一行数据。
串行化:对于同一行数据,事务操作严格按顺序执行。读数据加读锁,写数据加写锁。
事务隔离级别由上往下性能从高到底,安全性由低到高变化。一般MySQL隔离基本为可重复读。
3.事务隔离怎么实现的?
每次数据修改都记录一条回滚日志,如果某个事物需要回滚,会严格按照记录的回滚日志依次回滚。
4.长事务,短事务。
如果一个事务很长时间不提交,即为长事务,长事务会导致回滚日志不删除,所以尽量不要使用。
5.事务启动方式
(1)显示启动:begin transaction,存在多一次交互问题,即begin语句的开销,可以使用commit work and chain语法优化。
(2)set autocommit=0。将自动提交关闭,执行select语句时就开启了事务,需要手动提交事务,否则可能导致长事务问题。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix