MYSQL-事务
事务
事务:把所有操作视为一个整体,要么同时成功,要么同时失败
不设置@@autocommit时@@autocommit = 0,系统会认为默认自动提交,但中间遇到错误时,导致数据不一致
方式一:
set @@autocommit = 0为手动提交,在最后用"commit"来手动提交事务,想要回滚事务,用 "rollback"
方式二:
start transaction 显式开启事务
事务的四大特性
原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。
一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。
隔离性(lsolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行
持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的,会持久化存到磁盘中。
脏读:一个事务读到另外一个事务还没有提交的数据.
不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读,
幻读:一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在,好像出现了
事物的隔离级别
隔离级别 | 脏读 | 不可重复读 | 幻读 |
---|---|---|---|
Read uncommitted | √ | √ | √ |
Read committed | × | √ | √ |
Repeatable Read (默认) | × | × | √ |
Serializable | × | × | × |
查看事务隔离级别:@@transaction_isolation |
设置:set session transaction isolation level read [uncommitted|Read committed|Repeatable Read|Repeatable Read];
存储引擎
存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。
存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型。(一个数据库下不同表,是可以使用不同的存储引擎的)
-
特点
(1)DML操作遵循ACID模型,支持事务;
(2)行级锁,提高并发访问性能;
(3)支持外键FOREIGN KEY约束,保证数据的完整性和正确性; -
存储文件:
xxx.ibd: xxx代表的是表名,innoDB引擎的每张表都会对应这样一个表空间文件,存储该表的表结构(frm、sdi) 、数据和索引。
特点 | InnoDB | MyISAM | Memory |
---|---|---|---|
存储限制 | 64TB | 有 | 有 |
事务安全 | 支持 | - | - |
锁机制 | 行锁 | 表锁 | 表锁 |
B+tree索引 | 支持 | 支持 | 支持 |
Hash索引 | - | - | 支持 |
全文索引 | 支持(5.6版本之后) | 支持 | - |
空间使用 | 高 | 低 | N/A |
内存使用 | 高 | 低 | 中等 |
批量插入速度 | 低 | 高 | 高 |
支持外键 | 支持 | - | - |
主要看innodb和myisam的区别:innodb有事务、行锁、外键,MYISAM只有表锁
存储引擎选择
InnoDB 最大的特性是支持事务,安全性高
- InnoDB :
- 是Mysql的默认存储引擎,支持事务、外键。如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包含很多的更新、删除操作,那么InnoDB存储引擎是比较合适的选择。
- MyISAM:
- 如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不是很高,那么选择这个存储引擎是非常合适的。
- MEMORY:
- 将所有数据保存在内存中,访问速度快,通常用于临时表及缓存。MEMORY的缺陷就是对表的大小有限制,太大的表无法缓存在内存中,而且无法保障数据的安全性。
层级/引擎 | 内容 |
---|---|
体系结构 | 连接层、服务层、引擎层、存储层 |
存储引擎简介 | SHOW ENGINES;\nCREATE TABLE XXXX(....) ENGINE=INNODB ; |
存储引擎特点 | INNODB:事务、外键、行级锁 |
存储引擎应用 | INNODB:存储业务系统中对于事务、数据完整性要求较高的核心数据,MYISAM:存储业务系统的非核心事务。 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~