介绍
transaction
一个最小的不可再分的工作单元
通常一个事务对应一个完整的业务,而一个完整的业务需要批量的DML语句共同完成
事务只和DML语句有关系,或者说只有DML语句才有事务
四个特征
- 原子性:事务是最小单元,不可再分
- 一致性:事务要求所有的DML语句操作的时候,必须保证同时成功或同时失效
- 隔离性:一个事务不会影响其他事务的运行
- 持久性:在事务完成之后,该事务对数据库所做的更改将持久地保存在数据库中,并不会被回滚
概念
- 开启事务:start transaction
- 结束事务:end transaction
- 提交事务:commit transaction
- 回滚事务:rollback transaction
sql语句
- commit:成功的提交,将所有的操作记录和底层硬盘文件中数据进行一次同步
- rollback:失败的结束,将所有DML操作语句操作记录全部清空
操作
1 2 3 4 |
//关闭自动提交-mysql默认自动提交 set autocommit = off; //关闭自动提交之后,进行操作之后,需要手动提交 insert into t_user(name) values('bbb'); |
示例
1 2 3 4 5 |
//手动开启事务 start transaction; insert into t_user(name) values('aaaa'); //提交 commit; |
事务隔离级别
- read uncommitted-读未提交-级别最低
事务A和事务B,事务A未提交的数据,事务B可以读取,也就是脏读 - read committed-读已提交
- 解决了脏读
- 但是不可重复读
- repeatable read-可重复读
- serializable-串行化
事务隔离级别作用范围
- 会话级-session:只对当前会话有效
- 全局级-global:对所有会话有效
事务隔离级别演示
1 2 3 4 5 6 7 8 |
//查询当前隔离级别 select @@tx_isolation; select @@tx_session.tx_isolation; //设置服务器缺省隔离级别方法一-修改my.ini [mysql] transaction-isolation = READ-COMMITTED //设置服务器缺省隔离级别方法一通过命令方式设置事务隔离级别 set transaction islolation level xxx; |
本文为原创文章,版权归Aet所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 表操作_查询-结果去重10/24
- ♥ 表操作_查询-分组 || 分组筛选10/24
- ♥ 表操作_条件查询-运算符10/23
- ♥ 数据处理函数:单行处理函数10/24
- ♥ 表_唯一约束、非空约束10/26
- ♥ union && limit10/26