Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
为确保数据完整性,必须能确定数据库中的信息在哪些状态下是一致的。下面的示例可以很好地说明一致性的概念:
假设您使用数据库来管理财务帐户,并且要将资金从一位客户的帐户转到另一位客户的帐户上。转帐前后数据库都处于一致状态;但在将资金从一个帐户中划出尚未存入另一个帐户之前,数据库处于不一致状态。转帐过程中,当客户帐户上的总金额与转帐前的总金额相同时,数据库就处于一致状态。但在转帐过程进行到一半时,数据库处于不一致状态。取款和存款操作必须都执行,或都不执行。
事务是一个逻辑工作单元。每个事务都是一系列在逻辑上相关的语句,用于执行一项任务,并将数据库从一种一致状态转换到另一种一致状态。什么样的状态是一致状态取决于您的数据库。
事务内的语句被视为不可分的单元:或者所有语句都执行,或者都不执行。在每个事务的末尾,需要提交所做更改,将这些更改永久应用到数据库中。如果由于某种原因事务中的一些语句未正确得到处理,则任何中间更改都会被撤消,或回退。这种特性有另外一个说法,即事务是原子的。
将语句组合成事务对于保护数据的一致性(即使在出现介质故障或系统故障时)和管理并发数据库操作都非常关键。可以安全地交错执行事务,并且每个事务的完成都标志着一个时间点,在该时间点数据库中的信息处于一致状态。每个事务的设计宗旨都是执行一项将数据库从一个一致状态更改为另一个一致状态的任务。
在正常运行期间,如果出现系统故障或数据库崩溃,SQL Anywhere 将在下次启动数据库时自动恢复数据。自动恢复过程将恢复所有已完成的事务,并回退在发生故障时任何尚未提交的事务。事务的原子特性可以确保将数据库恢复到一个一致状态。
事务并发事务内的保存点隔离级别和一致性事务阻塞和死锁锁定的工作方式有关选择隔离级别的原则隔离级别教程主键生成和并发数据定义语句和并发小结