mysql04-事务
为什么需要事务:
当多线程操作一组数据时,为保持数据一致性,提出了事务的概念
事务的特性:
原子性(atomicity)
事务视为不可分割的最小单位,要么都提交,不可部分提交
一致性(consistency)
数据从一种一致性转化成另一种一致性
持久性(durability)
一旦事务提交,数据永久保存到数据库中,
隔离性(isolation)
未提交
已提交
可重复读
串行化
事务并发问题:
脏读:事务A读了事务B更新后的数据,事务B回滚了;
不可重复度:事务A多次读取同一数据,事务B修改了这些数据,导致事务A多次夺取的值不一样
幻读:事务A修改了一批数据,在这个是时候事务b插入了一条数据,事务A完成后检查数据发线多了一条
其中已提交解决了脏读;
可重复读解决了不可重复读和幻读,通过间隙锁,间隙锁是左开又闭原则,具体看 https://www.jianshu.com/p/32904ee07e56
查看数据库是否支持事务:
show engines;
查看 mysql 当前默认的存储引擎?
show variables like '%storage_engine%';
查看某张表的存储引擎?
show create table 表名 ;
对于表的存储结构的修改?
建立 InnoDB 表:Create table .... type=InnoDB; Alter table table_name type=InnoDB;
事务的语法:
事务回滚 rollback
提交 commit
还原点
savepoint
show variables like '%autocommit%'; 自动提交事务是开启的
set autocommit=0;
insert into testdemo values(5,5,5);
savepoint s1;
insert into testdemo values(6,6,6);
savepoint s2;
insert into testdemo values(7,7,7);
savepoint s3;
select * from testdemo
rollback to savepoint s2
rollback
不恋尘世浮华,不写红尘纷扰
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
2019-12-09 leetcode-二叉树