一、概念
在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序
二、特性
- 原子性:指事务中包括的诸操作要么全做,要么全不做
- 一致性:指在事务结束时,数据库必须处于一种一致的状态
- 隔离性:指事务的执行不能被其他事务干扰
- 持久性:指事务一旦提交,对数据库中数据的改变是永久的
三、语句
1、BEGIN Transaction语句——开始事务
这条语句一般放在一个事务的开头(如果是显示事务),就是在告诉后面的SQL语句要结组开始工作了。
2、COMMIT Transaction语句——提交事务
它使得自BEGIN TRANSACTION语句对数据库的改变作为一个原子单元写到数据库中。
如图:执行了一个COMMIT语句,INSERT语句和UPDATE语句被实际保存
3、SAVE Transaction语句——创建事务
执行一个COMMIT语句,如有需要,使用一个ROLLBACK语句能够回滚到A、B两个保存点中任意一个位置处
4、ROLLBACK Transaction语句——回滚事务
使得DBMS回滚或撤销对数据库所做的某些或者所有改变
四、事务日志
1、什么是事务日志:它使专门用来对数据操作之前内容和操作之后内容的一个保存的,所有的记录内容都写到一个独立的文件中。如要删除一行数据会先在日志文件中将此行标记为删除,但是数据库中的数据文件并没有发生变化。只有在(包含多个SQL语句)整个事务提交后,再把整个事务中的sql语句批量同步到磁盘上的数据库文件。
2、事务日志的用途:可以帮助提高事务的效率,使用事务日志存储引擎在修改表的数据的时候只需要修改其内存拷贝,再把该行为记录到持久在磁盘的事务日志中,存储引擎在重启的时候依靠事务日志自动恢复这部分被修改数据。