张家口市网站建设,霸气的公司名字大全,广东东莞公司有哪些,国外域名注册1、什么是事务
对于一个事务#xff0c;要么事务内的sql全部执行#xff0c;要么都不执行
2、 事务的特性ACID 原子性 整个事务中所有的操作要么全部提交成功#xff0c;要么全部失败会滚。 一致性 数据库总是从一个一致性状态转换到另一个一致性状态。假如有三个sql语句…1、什么是事务
对于一个事务要么事务内的sql全部执行要么都不执行
2、 事务的特性ACID 原子性 整个事务中所有的操作要么全部提交成功要么全部失败会滚。 一致性 数据库总是从一个一致性状态转换到另一个一致性状态。假如有三个sql语句如果在更新第二个sql语句时准备执行第三个sql语句突然崩溃事务最终没提交事务做的修改不会保存到数据库 隔离性
一个事务所做的修改在最终提交以前对其他事务是不可见的
持久性
一旦事务提交所做的修改永久保存到数据库
3、并发事务带来的问题
脏读
当一个事务正在访问数据并且对数据进行修改但还没有提交到数据库中另一个事务访问了这个数据并且使用但是这个数据还没有提交则这个数据就是脏数据后续操作都是不正确的
丢失修改
一个事务读取一个数据时另一个事务也在访问这个数据则第一个事务修改了这个数据后第二个时候也修改了这个数据则第一个事务修改的结果就会丢失就是丢失修改
不可重复读
一个事务多次读同一个数据这个事务还没结束另一个事务也在访问该数据那么在一个事务的两次读数据之间由于第二个时候的修改导致了第一个事务两次读取的数据不一样
幻读
和不可重复读类似。他发生在一个事务读取了几行数据另一个事务并发事务插入了一些数据在随后的查询第一个事务就会发现多了一些原本不存在的记录就好像发生了幻觉。
4、隔离性与隔离级别 读未提交 ru 一个事务还没提交它做的事情能被其他事物看到 读提交 rc
一个事务提交之后它做的变更才能被其他事物看到
可重复读 rr MySQL InnoDB引擎的默认隔离级别
同一个事务多次读取到同样的数据的结果是一致的InnoDB使用MVCC多并发版本控制解决幻读并不是完全解决 串行化 Serializable 最高的隔离级别强制事务串行执行避免幻读实际是在读取的每一行数据上加锁会有严重的锁竞争问题对性能会有一定的影响
5、事务是如何实现的原理
事务日志记录着事务的实现
redo log实现原子和持久性
undo log实现一致性
事务日志是如何实现事务的ACID请看下一篇什么是事务日志