事务
事务
-
事务的简介
事务是一组操作的合集,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体,一起向系统提交或撤销操作请求,这些操作只有同时成功、同时失败;
事务的操作
-
查看、设置事务提交方式
-- 查看事务的提交方式(若为“1”则是自动提交,若为“0”则是手动提交) select @@autocommit; -- 设置事务为手动提交 set @@autocommit = 0; -
提交事务
commit; -
回滚事务
rollback; -
开启事务
start transaction; begin;
事务的四大特性(ACID)
-
原子性(Atomicity)
事务是不可分割的最小操作单元,要么全部成功要么全部失败;
-
一致性(Consistency)
事务完成时,必须使所有的数据都保持一致的状态;
-
隔离性(Isolation)
数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行;
-
持久性(Durability)
事务一旦提交或回滚,它对数据库中的数据大的改变就是永久的;
并发事务问题
问题 | 描述 |
---|---|
脏读 | 一个事务读到另一个事务还没有提交的数据; |
不可重复读 | 一个事务先后读取同一条记录,但两次读取的数据不同; |
幻读 | 一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在; |
事务的隔离级别
隔离级别 | 脏读 | 不可重复读 | 幻读 |
---|---|---|---|
Read uncommitted | Y | Y | Y |
Read committed | N | Y | Y |
Repeatable Read | N | N | Y |
Serializable | N | N | N |
(注意:Repeatable Read 为MySQL的默认隔离级别;)
-
查看事务隔离级别
select @@transaction_isolation; -
设置事务隔离级别
set session\global transaction isolation level 隔离级别; (注意:session为针对当前客户端窗口有效;global为针对所有客户端的窗口有效;)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!