目录(?)[+]
1.事务(transaction)的定义:指访问并可能更新数据库中各种数据项的一个程序执行单元(unit) 包括:SQL语句的集合,存储过程体,高级语言的事件 2.事务的状态:active partially committed failed aborted committed 活动状态 事务在执行时的状态叫活动状态。 部分提交状态 事务中最后一条语句被执行后的状态叫部分提交状态。 失败状态 事务不能正常执行的状态叫失败状态。 提交状态 事务在部分提交后,将往硬盘上写入数据,当最后一条信息写入后的状态叫提交状态。进入提交状态的事务就成功完成了。 中止状态 事务回滚并且数据库已经恢复到事务开始执行前的状态叫中止状态 3.事务具有4个属性:ACID特性 原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。 一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。 隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。 持久性(durability)。持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响 4.DBMS的事务的两个主要工作:恢复 并发控制 recovery & Concurrency control ==事务管理 5.为什么要并发控制: a.增加处理器和硬盘的利用率 d.减少平均反应时间 c. 共享资源 d.隔离性的要求 6. schedule(计划表) :一组事务的结合,并有相应事务的执行顺序 分类:serial schedule(串行计划表) equivalent schedule (等价计划表) 7.每个事务有很多变量,事务获取数据库资源通过 read() write() 8.在交叉执行事务的时候,会因为 read 和write 顺序不一样出现错误。 9.相关概念: 冲突等价转换:把相邻操作交换顺序而不引进冲突 冲突等价:可以通过冲突等价转换的两个计划表 冲突串行化:一个schedule 可以冲突等价于一个串行的schedule读取尚未由其他事务提交的修改后的数据值,这些行为称为“脏”读。
READ COMMITTED(Nonrepeatable reads)是SQL Server默认的隔离级别。该级别通过指定语句不能读取其他事务已修改但是尚未提交的数据值,禁止执行脏读。在当前事务中的各个语句执行之间,其他事务仍可以修改、插入或删除数据,从而产生无法重复的读操作,或“影子”数据。比如,事务1读取了一行,事务2修改或者删除这一行并且提交。如果事务1想再一次读取这一行,它将获得修改后的数据或者发现这一样已经被删除,因此事务的第二次读取结果与第一次读取结果不同,因此也叫不可重复读。
该级别包括READ COMMITTED,并且另外指定了在当前事务提交之前,其他任何事务均不可以修改或删除当前事务已读取的数据。并发性低于 READ COMMITTED,因为已读数据的共享锁在整个事务期间持有,而不是在每个语句结束时释放。也叫可重复读。
SERIALIZABLE 是限制性最强的隔离级别,因为该级别锁定整个范围的键,并一直持有锁,直到事务完成。该级别包括REPEATABLE READ,并增加了在事务完成之前,其他事务不能向事务已读取的范围插入新行的限制
