黄桃图片友情链接,丹东seo优化,官网seo关键词排名系统,大连公司招聘SueWakeup 个人主页#xff1a;SueWakeup 系列专栏#xff1a;学习技术栈 个性签名#xff1a;保留赤子之心也许是种幸运吧 目录
本系列专栏 1. 什么是事务
2. 事务的特征
原子性#xff08;Atomicity#xff09;
一致性#xff08;Consistency#xff09;
隔离性SueWakeup 系列专栏学习技术栈 个性签名保留赤子之心也许是种幸运吧 目录
本系列专栏 1. 什么是事务
2. 事务的特征
原子性Atomicity
一致性Consistency
隔离性Isolation
持久性Durability
3. MySQL实现事务的步骤
3.1 关闭事务自动提交
3.2 开启一个事务标记事务的起始点
3.3 向数据库提交事务
3.4 将事务回滚所有数据库操作被取消
3.5 开启mysql自动提交
4. 数据库事务的实现原理
5. 什么是 MVCC
6. 数据库并发事务会带来哪些问题
脏读
不可重复读
丢失修改
幻读
7. 不可重复读和幻读的区别
8. 事务的隔离级别
读未提交
读已提交
可重复读
可串行化
注手机端浏览本文章可能会出现 “目录”无法有效展示的情况请谅解点击侧栏目录进行跳转 本系列专栏
1.数据库排名
2.【MySQL】数据库开篇
3.【MySQL】索引篇
4.【MySQL】事务篇
5.【MySQL】锁篇 1. 什么是事务
事务是数据库的一种特性用于确保一个执行过程中所有步骤全部成功或者全部失败是数据库操作的最小执行单元 2. 事务的特征
原子性Atomicity
事务是数据库的最小执行单元事务的原子性确保数据库操作过程中的所有步骤全部成功或者全部失败
一致性Consistency
数据修改前和修改后的状态保持一致
隔离性Isolation
一个事务的执行不会被其他事务干扰一个事务内部的操作和使用的数据在并发中对其他事务是隔离的
持久性Durability
事务一旦被提交将对数据库中的数据的改变是永久性的 3. MySQL实现事务的步骤
3.1 关闭事务自动提交
set autocommit0;
3.2 开启一个事务标记事务的起始点
start transaction
3.3 向数据库提交事务
commit;
3.4 将事务回滚所有数据库操作被取消
rollback;
3.5 开启mysql自动提交
set autocommit1; 4. 数据库事务的实现原理
MySQL InnoDB引擎使用 redo log重做日志保证事务的的持久性使用 undo log回滚日志来保证事务的原子性 redo log 是 InnoDB存储引擎层的日志又称重做日志文件用于记录事务操作的变化记录的是数据修改之后的值。当MySQL意外宕机InnoDB存储引擎会使用 redo log恢复以此来确保数据的持久性undo log保存了事务发生之前的数据的一个版本用于回滚MySQL InnoDB引擎通过锁机制、MVCC多版本并发控制等手段保证事务的隔离性保证了事务的持久性、原子性、隔离性之后一致性才能得到保障 5. 什么是 MVCC
MVCC是行级锁的一个变种在很多情况下避免了加锁情况开销更低。大多数的MVCC都实现了非阻塞的读操作写操作也只锁定必要的行MVCC是一种用来解决 读-写冲突的并发控制为事务分配单向增长的时间戳为每个修改保存一个版本每个事务都有一个对应版本的快照快照版本按照单向增长的时间戳来决定先后顺序读操作只需要读该事务开始前的数据库快照并不去读取正在修改的数据仅读取事务开始前的最新版本 6. 数据库并发事务会带来哪些问题
脏读
一个事务正在访问数据并且对数据进行了修改而修改操作还没提交到数据库中这时另外一个事务也访问这个数据然后使用这个数据。由于这个数据是没有提交的数据那么另外一个事务读到的这个数据就是“脏数据”
不可重复读
一个事务内多次读同一个数据在这个事务还没结束时另外一个事务也访问该数据在第一个事务中的两次读数据之间由于第二个事务的修改导致第一个事务读取到的数据可能不一致这就发生了在一个事务内两次读到的数据是不一致的情况所以称为不可重复读
丢失修改
一个事务读取一个数据时另外一个事务也访问这个数据在第一个事务修改这个数据后第二个事务也修改了这个数据导致第一个事务的修改丢失
幻读
与不可重复读类似在第一个事务读取了几行数据另一个事务插入了一些数据在随后的查询中第一个事务发现多了一些原本不存在的记录 7. 不可重复读和幻读的区别
不可重复读的重点是修改多次读取一条记录发现其中某些列的值被修改幻读的重点在于新增或删除比如多次读取某条件下的记录发现记录增多或减少 8. 事务的隔离级别
读未提交
最低的隔离级别允许读取尚未提交的数据变更可能导致 脏读、幻读或不可重复读
读已提交
允许读取并发事务已经提交的数据可以阻止脏读
可重复读
对同一字段的多次读取结果都是一致的除非数据是被本身事务自己所修改可以阻止脏读和不可重复读
可串行化
最高的隔离级别完全服从 ACID 的隔离级别所有的事务依次逐个执行防止事务之间产生干扰可阻止脏读、不可重复度以及幻读