【MySQL】事务

MySQL(六)事务

一、事务的特性

1.原子性

2.一致性

3.持久性

4.隔离性

4.1无隔离

4.1.1隔离级别

4.1.2执行效果

4.2写加锁

4.2.1隔离级别

4.2.2脏读解决

4.2.3执行效果

4.3读加锁

4.3.1不一致解决

4.3.2执行效果

4.4读写加锁

4.4.1隔离级别

4.4.2不可重复读解决

4.4.3执行效果

4.5串行化

4.5.1隔离级别

4.5.2幻读解决

4.5.3执行效果

二、事务的使用

1.开启

2.主动回滚

3.结束


一、事务的特性

1.原子性

事务里的sql,执行成功 则往下继续执行,执行失败 则全部回滚回 未执行,确保了 事务整体执行成功的++正确性++ ,事务局部执行错误的++避免性++


2.一致性

事务 通过++数据库的约束++ 以及一系列的++检查机制++ 保证事务执行前后的数据 都不会离谱 ,事务提交前后,永远只可能存在 事物提交前的状态 和事物提交后的状态,从一个一致性的状态 到另一个一致性状态,而不可能出现 中间的过程态


3.持久性

事务做出的修改 都是在硬盘上持久保存的,即使重启服务器,也不影响事务的接着执行


4.隔离性

数据库并发执行多个事务时,要通过 隔离 保证事务之间 数据传递关联互达的 ++准确性++

4.1无隔离

无隔离,事务之间 可随时互插 地执行

4.1.1隔离级别

read uncommitted(读未提交)

4.1.2执行效果

事务 完全并发性、没有隔离性、效率最高 ,数据准确性最低


4.2写加锁

写加锁,主执行写事务时 完全隔离地 无法插入执行读事务 地进行

4.2.1隔离级别

read committed(读已提交)

4.2.2脏读解决

解决了 主写事务时 次读事务 会读取 前后变化且过时无效数据的 脏读问题

4.2.3执行效果

事务 并发性降低、隔离性提高、效率降低 ,数据准确性提高


4.3读加锁

读加锁,主执行读事务时 半隔离地 无法插入执行 修改已读取数据的写事务,但可插入执行 写入与已读取数据无关的 写事务

4.3.1不一致解决

读加锁,解决了 主读事务时 次写事务 去修改已读取数据 导致已读取数据 前后变化不一致的问题

4.3.2执行效果

事务 并发性降低、隔离性提高、效率降低 ,数据准确性提高


4.4读写加锁

读写加锁,主执行写事务时 完全隔离地 无法进行读事务、主执行读事务时 半隔离地 无法插入执行 修改已读取数据的写事务,但可插入执行 写入与读取数据无关的 写事务

4.4.1隔离级别

repeatable read (可重复读),mysql默认使用的隔离级别

4.4.2不可重复读解决

读写加锁,两锁共同约束 能完整保护 读取到数据的准确性 ,解决了 读事务的 脏读 、不可重复读问题

4.4.3执行效果

事务 并发性降低、隔离性提高、效率降低 ,数据准确性提高


4.5串行化

串行化,写事务与读事务 互相完全隔离地 串排队进行

4.5.1隔离级别

serializable(串行化)

4.5.2幻读解决

解决了 读事务的 脏读 、不可重复读 ,读事务也完全隔离 解决了 读加锁半隔离进行时 次写事务去写入 与读取数据无关数据 也导致 读取对象整体的结果集改变 的幻读问题

4.5.3执行效果

事务 完全没有并发性、隔离性最高、效率最低 ,数据准确性最高


二、事务的使用

1.开启

sql 复制代码
start transaction;

开启事务


2.主动回滚

sql 复制代码
rollback;

回滚即 sql遇到失败 往回全部翻新回 未执行,可以被动回滚,也可以主动回滚


3.结束

sql 复制代码
commit;

运行到结束即 sql全部成功

相关推荐
黄鹂鸟科技13 分钟前
进销存系统设计要点:从采购计划、库存监控到成本核算
后端·物联网·系统架构
遇印记16 分钟前
应用层,网络管理
运维·网络·windows·学习·安全
撸串-研究生26 分钟前
基于Spring Boot的智慧社区垃圾分类与回收系统的设计与实现【附源码】
spring boot·后端·分类·垃圾分类·社区管理
ly768940 分钟前
PostgreSQL 流复制与高可用切换:主从延迟、同步提交与 Spring Boot 读写分离的边界
数据库·spring boot·postgresql·读写分离·流复制·高可用切换
技术小结-李爽1 小时前
【工具】怎么在终端中启动springboot项目?
java·spring boot·后端·maven
l1t1 小时前
修改两处,让SQLite求解数独SQL在datafusion上运行
服务器·数据库·sql
data analyse 4561 小时前
服务端统计时区切换的日期归并
大数据·前端·数据库·人工智能·数据分析
要开心吖ZSH1 小时前
《通过SeaTunnel 把 MySQL 的数据搬进 Doris》番外篇:容量、切分与速度——Doris 能扛多少,比 MySQL 快多少
mysql·性能优化·doris·分区·分表·分桶
乌暮1 小时前
从 `println` 到生产级日志:Spring Boot 日志体系完全指南
java·开发语言·jvm·spring boot·后端·学习·面试
远方16092 小时前
108-ORA-00600 [kdsgrp1-qetlbr] 内部错误排查与 RMAN 块级恢复
大数据·linux·数据库·oracle