事务的4个特性
Transaction
-
原子性(Atomicity)
-
事务是一个原子操作,它要么全部执行,要么全部不执行。如果事务执行过程中发生错误,系统将会回滚事务到执行前的状态,以保证事务的完整性。
-
-
一致性(Consistency)
-
事务执行前后,数据库的完整性约束没有被破坏。例如,数据库中的主键、外键、唯一性约束等约束条件都必须得到满足。
/* 一致性(Consistency)是指,在事务开始之前和事务结束之后,数据库都必须保持一致性状态。也就是说,事务中的所有操作必须遵循预定义的完整性约束条件,以确保数据库的数据完整性和正确性。 举个例子来说,假设有一个银行系统,在该系统中有一个转账操作,它需要从一个账户中扣除一定金额,同时将该金额转移到另一个账户中。这个操作涉及到两个账户的数据修改,如果转账操作只修改了其中一个账户的金额,而未能正确地修改另一个账户的金额,那么整个银行系统就会出现数据**不一致**的情况,导致数据错误。因此,事务需要保证转账操作的两个子操作要么全部成功,要么全部失败,以保证银行系统的**数据一致性**。 在实际应用中,事务的一致性通常通过约束条件(例如主键约束、唯一性约束、外键约束等)来实现。这些约束条件可以在数据库中定义,在事务执行期间自动执行,确保数据的一致性和正确性。如果在事务执行期间,约束条件被违反,事务将被回滚,以保证数据库的一致性。 */
/* 原子性和一致性的补充: 虽然原子性和一致性都强调事务的整体性,但它们的含义不同。原子性(Atomicity)是指一个事务中的所有操作要么全部执行成功,要么全部回滚,不允许中间状态。 而一致性(Consistency)则是指一个事务执行完成后,数据库的完整性约束条件必须被满足,以保持数据的正确性和一致性。 原子性是一种保证,保证了事务的完整性;而一致性是一种约束,约束了事务的结果必须满足数据库的完整性约束条件。 具体来说,原子性强调的是事务的完整性,即要么全部执行,要么全部回滚。如果事务执行中出现了错误,事务将会被回滚到执行前的状态,以保证数据的一致性。 而一致性强调的是数据库的完整性约束条件,事务执行前后,这些约束条件必须得到满足,以确保数据的正确性和一致性。如果事务执行过程中违反了完整性约束条件,事务将被回滚,以保证数据的一致性。 */
-
-
隔离性(Isolation)
-
事务的执行是相互独立的,每个事务执行期间的操作都不会影响其他事务。即使多个事务同时执行,也不会互相干扰。
-
-
持久性(Durability)
-
一旦事务执行完成,对数据的修改就是永久性的。即使系统发生故障,也不会丢失已经提交的事务所做的修改
-