开启事务 begin;
提交事务 commit;
一组SQL的集合 具有ACID特性
A原子性
保证全部执行成功或者全部执行失败。
日志系统:日志先行==》 会将日志刷新到磁盘上,则事务将要执行的操作永久的保存下来
redo log 重做日志 记录事务将要执行的每一个操作
undo log 未作日志 保存事务执行过程中的每一个执行点
日志系统解决了原子性和持久性
C一致性
事务执行前后,完整性约束不变。
I隔离性
消除事务间的互相影响。
如果没有隔离,会出现的问题:
1. 脏读
A事务读取了B事务执行过程中的结果
解决:保证事务获取不到其他事务在执行过程中的结果(不允许读取执行中)
2. 不可重复读
A事务读取了B事务执行前和执行后两个不同阶段的结果。
主要由修改操作导致的
3.幻读
A事务读取了B事务执行前和执行后两个不同阶段的结果。
由插入或删除操作导致的
四个隔离级别
- 未提交读
会出现脏读、不可重复读、幻读问题 - 已提交读
不会出现脏读,会出现不可重复读、幻读问题 - 可重复读
不会出现脏读、不可重复读、只会出现幻读问题
Mysql默认在第三级别,幻读问题由间隙锁解决。 - 可序列化
事务串行处理,不会出现并发的问题,也就不会出现问题
D持久性
保证事务执行的结果在磁盘永久的保存。