psn

数据库学习(四)——事务处理(脏读、不可重复读、幻读全在这篇了)

泄露秘密 提交于 2019-12-03 10:45:28
目录 数据库学习(四)——事务处理 一、事务简介 二、脏读、幻读、不可重复读测试 数据库学习(四)——事务处理 @ 一、事务简介 1.正常的commit,自动提交 commit; 2.rollback delete from xxx where xx; delete from xxx where xx; savepoint sp1; delete from xxx where xx; rollback to sp1; 3.事务的ACID特性 A:原子性,操作集合不可分割 C:一致性,经过N个操作,数据状态不会改变 I:隔离性,隔离性会导致效率降低,为了提高程序效率,可以设置隔离级别 隔离级别:读未提交,读已提交,可重复度,序列化 数据不一致问题:脏读、不可重复读、幻读 D:持久性,所有数据修改持久化到介质中,不会因为程序关闭,导致丢失 4.事务的特性中,哪个是最关键的? 所有特性,都是为了保证一致性,一致性是最终的追求。 一致性是通过原子性,隔离性,持久性保证的。 5.锁的机制: 为了解决并发访问,数据不一致,加锁得考虑粒度, 锁的粒度越小,效率越高,粒度越大,效率越低,大部分都是行级锁 二、脏读、幻读、不可重复读测试 1.打开命令行 select @@autocommit set autocommit=0 2.数据准备 create database tran; use tran