SQL的事务
1、事务是什么
事务是对数据库执行的一个操作单位,是对数据库所做的一个或多个修改,是必须完整执行的SQL语句块,它是由数据操作语言(DML)完成的;在一个事务可以是一个或多个DML语句,在事务处理中,确保成批的SQL操作要么完全执行,要么完全不执行,来维护数据库的完整性。
2、事务的本质特征是什么
- 所有的事务都有开始和结束;
- 事务可以被保存或撤销;
- 如果事务在中途失败,那么事务中的任何部分都不会被记录到数据库
使用事务进行操作的实质是:事务会对临时存储空间进行操作,因为数据库服务器需要记录语句执行前的所有变化,以便在需要ROLLBACK的时候进行撤销。
3、如何控制事务
当一个事务被执行成功完成时,虽然从输出结果来看目标表已经被修改了,但实际上目标表并不是立即被修改的,还需要通过事务控制命令来最终认可这个事务,把事务所做的修改要么保存到数据库,要么撤销事务所做的修改。控制事务的命令有三个:
- COMMIT:把事务产生的变化保存到数据库
- ROLLBACK:撤销已经被执行的事务所产生的变化
- SAVEPOINT:用于把事务划分为组,创建用于回退到事务过程中特定的逻辑点,支持回退部分事务
事务控制命令只与DML命令INSERT、UPDATE和DELETE配和使用,尽管事务处理中可以使用SELECT、CREATE、DROP、TRUNCATE语句,但是回退SELECT语句没有必要,而CREATE和DROP语句是不能撤销的,
当事务处理完后,事务信息被保存在数据库里的指定区域或临时回退区域,所有的修改都被保存到这个临时回退区域,直到事务控制命令出现,此时所做的修改要么被保存到数据库,要么被放弃,然后临时回退区域被清空。下面通过一幅来理解,更直观:
4、事务控制与数据库性能
大规模的批处理会导致临时存储的回退信息不断膨胀,直到出现COMMIT或ROLLBACK命令;如果一直没有出现COMMIT或者ROLLBACK命令,那么临时存储区域里的回退信息就不会不断增长,直到没有剩余空间,导致数据库停止全部进程,直到空间被释放。
阅读是一种修养,分享是一种美德。