mysql之tcl语言(事务控制语言)
事务
一个或者一组sql组成,在这个单元中,每个sql都是相互依赖的,要么全部成功,要么全部失败。
事务的ACID属性
- 1.原子性
原子性是指事务是一个不可分割的工作单位,事务中的操作要么发生,要么都不发生。 - 2.一致性
事务必须使数据库从一个一致性状态转变到另外一个一致性状态。 - 3.隔离性
事务的隔离性是指一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。 - 4.持久性
持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来的其他操作和数据库故障不应该对其有任何影响。
事务的创建
隐式事务:事务没有明显的开启和结束的标记。
show variables like 'autocommit';
显式事务
-- 开始事务
set autocommit =0;
start transaction ;
-- 编写sql语句
-- 。。。。
-- 结束事务
commit ; -- 提交事务
rollback ; -- 回滚事务
出现的问题
脏读:对于两个事务t1,t2,t1读取了已经被t2更新但是还没有被提交的字段之后,或t2回滚,t1读取的内容就是临时无效的。
不可重复度:对于两个事务t1,t2,t1读取了一个字段,然后t2更新了该字段,之后,t1再次读取这个字段,值就不同了。
幻读:对于两个事务t1,t2,t1读取了一个字段,然后t2在该表中插入了一些新的行,之后,如果t1再次读取同一个表,就会多出几行。
事务的隔离级别

read uncommited:脏读、幻读、不可重复读
read commited:不能脏读、幻读、不可重复读
repeatable read:不能脏读、不能幻读、不可重复读
serializable:不能脏读、不能幻读、不能不可重复读
mysql中的默认隔离级别为第三个:repeatable read
oracle中的默认隔离级别是:read commited
查看隔离级别:
select @@tx_isolcation
设置隔离级别:
set session|global transaction isolation level 隔离级别;
本文来自博客园,作者:King-DA,转载请注明原文链接:https://www.cnblogs.com/qingmuchuanqi48/articles/15970222.html

浙公网安备 33010602011771号