• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

MySQL性能优化,自己的

武飞扬头像
大圣²
帮助1

1.事务隔离的几种级别
未提交读;读提交;可重复读;串行化
未提交读可能会出现脏读,读提交会出现不可重复读,可重复读会出现幻读。针对几种情况的解决方案和原理:
脏读:采用读提交事务隔离级别,一个事务每次读取的都是已经提交过的。
不可重复读:采用可重复读隔离级别,原理是MVCC,事务A前后读取同一次事务前后读取数据都是一致的,事务A事务开始和结束前即使事务B进行了更新,A读取都是同一个。
幻读:采用串行化,锁行的形式。
2.什么是MVCC(版本控制):是通过保存某个时间节点的快照实现的。也就是说。不管每个事务开始多长时间,直到结束,该事务看到的时间都是事务开始前一刻的数据,但是不同事务开始时间不一样,事务开始后对应同一个表同一时间节点看到的可能不一样。举个例子说:
A事务在某时刻开始,执行多次同条件查询,开始事务到提交前,查询结果数据都是一样的,但是B事务稍微延迟了一下执行与A相同的操作,A和B看到的数据可能不一样。
3.InnoDB怎么工作的呢?
其实就是在每行后面保存了两个隐藏列,一个是行的创建时间,另外一个是过期时间,保存的并不是时间而是版本号,每开启一个事务,系统版本号都会字段递增,事务开始时刻的系统版本号会作为事务的版本号,用来和查询到的查询到的每行记录的版本号进行比较。那么读提交的事务隔离级别MVCC又是怎么做的呢?

  • 针对插入操作:为新插入行保存当前系统版本号作为行版本号
  • 针对delete:为删除行保存当前系统版本行作为行删除标识
  • 针对更新:插入一行新的数据,保存当前系统版本号,同时保存当前系统版本号到原来的行作为删除的标识。

======
有空再更新,学习的时候记录的,有问题请指正

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfjgkic
系列文章
更多 icon
同类精品
更多 icon
继续加载