事务
事务(Transaction)是一个数据库操作序列, 这些操作要么全做,要么全不做,是一个不可分割的工作单位。
事务是恢复和并发控制的基本单位。
事务既可以显式定义,也可以由DBMS自动定义。
事务和程序
在关系数据库中,一个事务可以是一条SQL语句,一组 SQL语句或整个程序,一个程序通常包含多个事务。
牢记事务是一个原子操作即可,类比OS中的原语。
⭐️事务的ACID特性
原子性(Atomicity)事务中包括的诸操作要么都做,要么都不做。🤔一致性(Consistency)
事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
举例:银行转账,从A账户取出1W元存入B账户,即A=A-1, B=B+1
如果只做了一个操作,就会产生错误,数据库处于不一致状态。隔离性(Isolation)
一个事务的执行不能被其他事务干扰,一个事务内部的操作及使用的数据对其他并发事务是隔离的。且并发执行的各个事务之间不能互相干扰。持续性(Durability )
一个事务一旦提交,它对数据库中数据的改变就应该是永久性的,接下来的其他操作或故障不应该对其执行结果有任何影响。
保证事务ACID特性是事务处理的任务。
破坏事务ACID特性的因素
多个事务并行运行时,不同事务的操作交叉执行数据库管理系统必须保证多个事务的交叉运行不影响这些事务的隔离性,即一个事务不会影响另一个事务。事务在运行过程中被强行停止
数据库管理系统必须保证被强行终止的事务对数据库和其他事务没有任何影响。
数据库的恢复
如果确实发生了错误,数据库还要保证恢复,即必须具有把数据库从错误状态恢复到某 一已知的正确状态,称为数据库的恢复功能。