事务
2020年5月6日
12:46
1、事务特点
Acid
原子性:一个事务不可再分割,要么都执行或者都不执行
一致性:一个事务会使数据从一种一致状态到另一种一致状态
隔离性:一个事务的执行不受其他事务的干扰(需要特别的隔离等级)
持久性:一个事务的执行完成后其影响是永久的
事务的支持需要存储引擎innodb的支持,
2、事物的使用步骤
-
事务的创建
- 隐私事务:默认一条语句就是一个事务,
-
显示事务:具有明显的开启和关闭标志
显示事务的开启需要关闭系统自动选择为事务的功能,
#开启事务
set autocommit = 0; start transaction; UPDATE bank SET money = 500 WHERE id=1; UPDATE bank SET money = 1500 WHERE id=2; commit;
-
delete和truncate区别
- delete可回滚
set autocommit=0; start transaction; DELETE FROM bank; rollback ; SELECT * FROM bank;
- truncate不可回滚
3、事物的并发问题
-
脏读
对于同一个数据有两个事务T1、T2同时操作,当T1更改后未提交,T2就读到了数据,但此时T1回滚了操作,T2读取的数据就是临时的无效的
-
不可重复读
对于同一个数据有两个事务T1、T2同时操作,T1读取了一个字段,T2更新了数据,T1再读数据就不一样了
-
幻读
对于同一个数据有两个事务T1、T2同时操作,T1读取了字段,T2插入了新的字段,T1再操作数据就多了几行。
4、事物的隔离级别
MySQL中默认的隔离级别:repeatable read
Oracle中默认的隔离级别;read committed
设置隔离级别常用的SQL语句
select @@transaction_isolation;#查看当前的隔离等级 set session transaction isolation level read committed;#设置当前窗口隔离等级 set global transaction isolation level read committed; #设置系统的隔离等级