事务介绍及操作
事务
定义
事务时用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单元。
事务时恢复和并发控制的基本单元
定义事务
事务一般通过 BEGIN TRANSACTION开始。以COMMIT 或 ROLLBACK结束。COMMIT表示提交,即提交事务的所有操作。
ROLLBACK表示回滚,系统将对事务中对数据库的所有已经完成的操作全部撤销,回滚到事务开始的状态。
事务的ACID特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持续性(Durability)
事务的特性
保证事务ACID特性时事务处理的任务。
事务ACID特性可能遭到破坏的因素有:
(1)多个事务并发运行时,不同事务的操作交叉运行
(2)事务在运行过程中被强行停止。
实例
表数据
测试事务提交
begin ;
select * from `match`;
update `match` set mname = '100米' where mno = '2';
select * from `match`;
commit;
select * from `match`;
测试事务回滚
这次测试回滚操作
-- 测试回滚
begin ;
select * from `match`;
update `match` set mname = '100' where mno = '1';
select * from `match`;
rollback;
select * from `match`;
更新后
回滚
测试多点回滚
这里可以通过SAVEPOINT 和 ROLLBACK TO 点实现多点回滚,这样可以减少回滚。
begin;
select * from `match`;
update `match` set mname = '100米' where mno = '3';
select * from `match`;
savepoint A1;
update `match` set mname = '100米' where mno = '4';
select * from `match`;
savepoint A2;
update `match` set mname = '100米' where mno = '5';
select * from `match`;
rollback to A1;
select * from `match`;
原表
预期结果,更新3,对4和5的更新会被回滚,即回滚到A1这个点的时候
这里就不全部都展示了,直接展示最终结果。
事务隔离级别
在MySQL中事务的隔离级别分为四大等级,读未提交(READ UNCOMMITED)、读提交(READ COMMITED)、可重复读(REPEATABLE READ)、串行化(SERIALIZABLE)
读未提交
读未提交会读到另一个事务的未提交的数据,会读取到“脏数据”,脏数据的意思就是一个事务A对数据进行修改,但是由于一些错误,事务A进行回滚,事务B读到事务A修改时的数据,这样就会导致读“脏数据"。
读提交
解决了“脏数据”的问题,但仍是会出现不可重复读的问题,不可重复读指的是事务B进行数据的读取,事务A需要对数据进行修改,事务B就不能再复现前一次的查询结果
可重复读
可重复读可以解决脏读和不可重复读的问题,但是会带来幻读的问题。幻读指的是比如事务A需要进行读取操作,事务B需要进行插入操作,首先事务A读取到事务B未插入前的数据,事务B插入数据后,事务A可以读取到事务B新插入的数据,这样的现象就可以称为幻读
串行化
一个数据在操作数据库时,其他事务不能操作数据库,可以解决幻读的问题,但是效率低,很少使用
事务故障
定义
某个事务在运行过程中由于种种原因未运行至正常终点就夭折了。
故障类型
事务内部的故障:内部的故障有些是可以通过事务程序本身发现的,有些是非预期的,不能由事务程序处理。
非预期故障的原因:
1. 输入数据有误
2. 运算溢出
3. 违反了某些完整性限制,例如参照完整性,实体完整性
4. 某些应用程序出错
5. 并行事务发生死锁
系统故障:指的是系统停止运行的任何事件,使得系统需要重新启动。
介质故障:系统故障称之为软故障,介质故障称之为硬故障
计算机病毒
总结
本文主要介绍了数据库事务的一些概念,包括回滚、提交等操作,以及一些其他的操作。
本文作者:Leo-coding
本文链接:https://www.cnblogs.com/Leo-coding/p/17267941.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步