一、sql语句类型
1、DML(Data Manipulate Language):数据操作语言。对表中的数据进行增加INSERT、删除DELETE、修改UPDATE。
2、DDL(Data Define Languge):数据定义语言。对数据库和表进行管理,例如创建、修改、删除等。
二、事务定义
事务(Transaction):一个最的不可分的工作单元,通常一个事务对应一个完整的业务。一个完整的业务需要批量DML语句共同联合完成。事务只和DML语句相关,或者说DML语句才有事务。这个和业务逻辑相关,有业务逻辑不同,DML语句的个数也不同。
三、事务的四大特性(ACID)
ACID是关系型数据库系统采纳的原则,其代表的含义分别是:
(1) 原子性(Atomicity):原子性意味着数据库中的事务执行是作为原子,即不可再分。整个语句要么执行,要么不执行,不会有中间状态。
(2) 一致性(Consistency): 事务在开始和结束时,应该始终满足一致性约束。比如系统要求A+B=100,那么事务如果改变了A的数值,则B的数值也要相应修改来满足这样一致性要求;
(3) 隔离性(Isolation):如果有多个事务同时执行,彼此之间不需要知晓对方的存在,而且执行时互不影响,事务之间需要序列化执行,有时间顺序。数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时,由于交叉执行而导致数据的不一致;
(4) 持久性(Durability):事务的持久性是指事务运行成功以后,对系统状态的更新是永久的,不会无缘无故回滚撤销。即使出现了任何事故比如断电等,事务一旦提交,则持久化保存在数据库中.
四、如何定义事务的开始和结束
START TRANSACTION
[transaction_characteristic [, transaction_characteristic] ...]
transaction_characteristic: {
WITH CONSISTENT SNAPSHOT
| READ WRITE
| READ ONLY
}
BEGIN [WORK]
COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
SET autocommit = {0 | 1}
START TRANSACTION or BEGIN :开始一个新事务
COMMIT :提交事务,将执行结果写入到数据库
ROLLBACK:回滚事务, 回滚所有已经执行成功的sql语句。
SET autocommit :设置自动提交模式。
autocommit 设置为on 为自动提交事务模式。在自动提交模式下,如果没有start transaction显式地开始一个事务,那么每个sql语句都会被当做一个事务执行提交操作。
五、事务实现底层技术和示意图
undo日志:记录数据表修改前的状态,rollback基于undo日志实现。
redo日志:记录数据表修改后的状态,commit基于redo日志实现。
网友评论