构成单一逻辑工做单元的操做集合称做事务(transaction)。数据库
即便有故障,数据库系统也必须保证事务的正确执行--要么执行整个事务,要么属于该事务的操做一个也不执行。编程
事务一般由高级数据操纵语言或编程语言经过JDBC或ODBC嵌入式数据库访问书写的用户程序的执行所引发。并发
四大特性:原子性、隔离性、一致性、持久性编程语言
原子性:若是一个事务开始执行,可是因为某些缘由失败,则事务对数据库形成的任何可能的修改都要撤销。不管事务自己是否失败,或者操做系统崩溃,或者计算机中止运行,这项操做都要成立。操作系统
隔离性:数据库系统必须采起特殊处理来确保事务正常执行而不被来自并发执行的数据库语句所干扰。事务
持久性:即便系统崩溃后事务的操做也必须是永久的。内存
一致性:隔离执行事务时保持数据库的一致性。ci
ACID特性:Atomicity, Consistency, Isolation, Durabilityit
易失性存储器:易失性存储器中的信息一般在系统崩溃后不会幸存。这种存储器的例子包括主存储器和高速缓冲存储器。易失性存储器的访问很是快,一方面是由于内存访问自己的速度,另外一方面是由于能够直接访问易失性存储器中的任何数据项。io
非易失性存储器:非易失性存储器会在系统崩溃后幸存。非易失性存储器的例子包括用于在线存储的二级存储设备(如磁盘和闪存),以及用于存档存储的三级存储设备(如光介质和磁带)。
稳定性存储器:永远不会丢失。
事务的状态:
活动的(active):初始状态,事务执行时处于这个状态。
部分提交的(partially committed):最后一条语句执行后。
失败的(failed):发现正常的执行不能继续后。
停止的(aborted):事务回滚而且数据库已恢复到事务开始执行前的状态后。
提交的(committed):成功完成后。
可恢复性调度知足:对于每队事务Ti和Tj,若是Tj读取了以前有Ti所写的数据项,则Ti先于Tj提交。
无级联调度知足:对于每队事务Ti和Tj,若是Tj读取了先前由Ti所写的数据项,则Ti必须在Tj这一读操做前提交。
两阶段封锁协议:一阶段只获取锁不释放锁;另外一阶段只释放锁不获取锁。
共享锁:许多事务能够同时持有一个数据项的共享锁
排它锁:只有其余事务在一个数据项上没有持有锁(不管共享锁仍是排它锁)时,一个事务才容许获取排它锁。
对于同一个数据项,系统持有两个时间戳,最大读时间戳和最大写时间戳。
当不可能访问时,违例事务将会停止,并会被分配给一个最新的时间戳从新开始。
每一个事务开始时持有其自身数据库版本的副本,事务从这个私有数据库版本中读取数据,所以和其余数据库操做隔离开,更新只出如今私有数据库操做中而不会影响实际数据库。当事务提交时,和更新有关的信息会保存,被写会真正的数据库中。