问题的提出
关于数据库的原子性问题在前面资金转帐例子中已经提到:几个操作要么都完成要么根本不发生。除此之外,资金转帐还必须保持数据库的一致性,也就是说转帐之后钱的总数还应该保持不变,这种对数据库值的正确性要求称作一致性。当资金转帐成功结束后,不管发生什么事情,包括系统故障,帐户A和B的钱数也应该保持不变,这种对数据库的值保持不变的要求称作持久性。
保证数据的正确性是数据库的生命。注意这里的正确性主要是指:如果数据库中的数据一开始是正确的,那么经过一系列操作之后它还应该是正确的;数据的一致性还包括能够防止某些错误的操作对数据库中数据的修改,当然,完全防止是不可能的,例如在输入一个人的性别的时候,数据库是不可能知道某个人是”男”的还是”女”的。
事务的定义
事务是数据库应用中完成单一逻辑功能的操作集合,是一个既具原子性又具一致性的逻辑执行单元。事务的定义不能违反任何的数据库一致性要求。从上面的讨论中可知一个事务应具有原子性,应使数据库保持一致性和持久性。在事务的并发执行中,事务还应该保持其隔离性,这在第十章”事务”里会详细讨论。
事务管理器
对于一个事务来说:IF 事务执行前数据库是一致的在事务执行的过程中允许暂时的不一致,但此时发生故障将会产生不可预测的问题THEN 事务成功执行之后数据库也应该是一致的事务的定义应使之能保持数据库的一致性,这一点是由数据库程序员在定义事务时保证的。而事务的原子性和持久性则是由数据库管理系统保证的,具体地说,是事务管理器的任务。
显然,事务管理器就是用来管理事务的,它能够保证事务的ACID四个基本特性。
并发控制管理器
当多个事务同时执行时,即使每个单独的事务都正确执行完毕,数据的一致性也可能被破坏。并发控制管理器就是用来控制并发事务间的相互影响,把它们在逻辑上隔离开,以保证数据库的一致性。
Sorry, the comment form is closed at this time.
No comments yet.