数据库事务是一组完整的行为,如果成功全部成功,失败则全部失败。缺点是在事务中,不能根据前置条件决定是否向下执行(事务可切分)。
12.1 事务特性
在OLTP数据库中强调 强一致性 因此提出了ACID原则
-
原子性(Atomicity): 事务中的所有操作为一个完整的整体,不可拆分
-
一致性(Consistency):主要体现在缓存数据和持久化磁盘的数据是否一致
-
隔离性(Isolation): 一个事务执行过程中,不能对其他事务产生影响,即事务之间保持一定的执行顺序
-
持久性(Durability):事务执行后对数据库的操作是永久性的,即使断电能意外也可恢复
在OLAP或者分布式场景下,强调 最终一致性 ,提出了 一致性(Consistency)、可用性(Availability)、分区容错性(Partition ) 原则 和 基本可用(Basically Available)、软状态(Soft-state)、最终一致性(Eventual consistency) 理论
12.2 事务状态
-
活动的(active):事务正在执行中
-
部分提交的(partially committed):事务执行完成,但没有刷新的磁盘
-
提交的(committed):事务执行完成,并且数据同步到磁盘
-
失败的(failed):活动的 或者 部分提交的 事务出现错误,无法继续执行
-
中止的(aboted):回滚 执行完毕
12.3 事务操作
隐式提交事务情况:
执行DDL语句
修改/删除表
开启另外一个事务会隐式提交上一个事务
开启自动提交时,会隐式提交前面定义的所有事物
使用
lock tables
、unlock tables
锁定语句使用
load data
等语句加载数据主从复制的一些语句,如:
start slave
、stop slave
、rest slave
、change master to
analyze table
、cache inde
、check table
、flush
、load index into cache
、`optimize table
、repair table
、reset
-- 定义事务
begin
[语句...]
commit / rollback
-- 创建保存点
savepoint <保存点名称>
-- 回滚到指定保存点
rollback to <保存点名称>
-- 删除保存点
release savepoint <保存点名称>