MySQL 事务
mysql 中,其实是一个最小的不可分割的工作单元。事务能够保证一个业务的完整性
多条sql语句,可能会有同时成功的要求,要么就同时失败。
mysql 默认是开启事务的
select @@autocommit
默认开启的作用是什么,
当我们去执行一个sql语句的时候,效果会立刻体现出来
,且不能回滚。
无论自动或者手动commit 都撤销不了(持久性)
–rollback 事务回滚,撤销sql语句执行的效果
set commit =0 则 rollback可以生效
自动提交 @@commit=1
手动提交 commit 之后事务就结束了 。
事务回滚 rollback
其他方法默认开启事务
begin;
结束sql语句后可以rollback。
start transaction;
结束sql语句后也可以rollback。
事务 ACID 特征与使用
A 原子性 事务最小的单位 不可再分割
C 一致性 事务的要求,同意事务中sql语句,必须保持同时成功或者失败
I 隔离性 事务1 和事务2 之间是具有隔离性的
D 持久性 事务一旦结束(commit ,rollback), 就不可返回。
事务的隔离性
1 read uncommitted 读未提交的
如果 a事务在进行操作,但是事务并没有提交,这时a事务的操作可以被事务b所看见就会出现脏度。
2 read commited 读已经提交的
事务a在提交前 事务b修改了事务a要使用的数据并且提交了,因此事务a使用的数据就出现了问题。
3 repeatable 可以重复读
事务a 和事务b在同时 操作一张表的时候,事务a提交的数据,也不能被事务b督导,所以就造成幻读。
4 serializable 串行化
当表被事务所操作的时候,其他事务里面的写操作是不可以进行的 。这时其他事物会进入等待队列(串行化),知道事务结束后才会继续执行,如果超时则结束。因此性能很差
性能
readuncommitted > read commited >repeatable read(默认)>serializable
如何查看数据库的隔离级别?
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LdioUwu3-1620951787061)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210429211639802.png)]
查询 隔离级别
select @@global,transaction_isolation
修改
set global transaction isolation level read uncommitted;
obal,transaction_isolation
修改
set global transaction isolation level read uncommitted;