1.事务的定义
用户定义的一组操作序列的集合,数据恢复和并发控制的基本单位。数据库系统在执行事务时,要么执行事务中全部操作,要么一个操作都不执行。
2.事务的特性(简称ACID)
原子性(Atomicity):一个事务是不可分割的数据库逻辑工作单位,事务中包括的所有操作要么都做,要么都不做。
一致性(Consistency):事务执行前后,数据从一个合法性状态变到
另一个合法性状态。(语义上的)
隔离性(Isolation):一个事务的执行不能被其它事务干扰。
持续性(Durability),也称持久性(Permanence):指一个事务一旦提交,它对数据库中数据的改变应该是永久性的,其它操作或故障不对其产生任何影响。(通过事务日志来保证)
3.封锁技术
基本封锁类型
① 排它锁(eXclusive locks)又称X锁:如果某事务T对某数据建立了排它锁,则该事务能对该数据对象进行读、修改、插入和删除等操作,而其它事务则不能。
② 共享锁 (Shared locks)又称S锁:如果某事务对某数据建立了共享锁,则该事务能对该数据对象进行读操作,但不能进行修改等更新操作,而其它事务只能对该数据对象加S锁,而不能加X锁,即其它事务只能对该数据对象进行读操作。
注意:要使用这两种锁,必须关闭自动提交(autocommit),或者明确开启一个事务
4.封锁协议
① 一级封锁协议
某事务T若要修改某个数据对象,则必须先对该数据对象加X锁,直到事务结束才释放,它可防止“丢失修改”所产生的数据不一致性问题。
② 二级封锁协议
一级封锁协议加上某事务T若要读取某个数据对象之前,则必须先对该数据对象加S锁,读完后即可释放S锁,这样可进一步防止“读脏数据”的问题。
③ 三级封锁协议
一级封锁协议加上某事务T若要读取某个数据对象之前,则必须先对该数据对象加S锁,且直到该事务结束后才释放S锁,这样可进一步防止数据“不可重复读”的问题。