当前位置: 首页 > wzjs >正文

建设外贸b2c网站百度新闻官网首页

建设外贸b2c网站,百度新闻官网首页,建设网站怎样通过流量赚钱,网站页面小图标怎么做什么是MVCC? MVCC全称多版本并发控制,是在并发访问数据库时对操作数据做多版本管理,避免因为写数据时要加写锁而阻塞读取数据的请求问题。 Innodb对mvcc的实现 1、事务版本号 每次事务开启前都会从数据库获得一个自增长的事务ID,可以从事…

什么是MVCC?

MVCC全称多版本并发控制,是在并发访问数据库时对操作数据做多版本管理,避免因为写数据时要加写锁而阻塞读取数据的请求问题。

Innodb对mvcc的实现

1、事务版本号

每次事务开启前都会从数据库获得一个自增长的事务ID,可以从事务ID判断事务的执行先后顺序。

2、表格的隐藏列
DB_TRX_ID记录操作该数据事务的事务ID;
DB_ROLL_PTR指向上一个版本数据在undo log 里的位置指针;
DB_ROW_ID:隐藏ID ,当创建表没有合适的索引作为聚集索引时,会用该隐藏ID创建聚集索引;
3、Undo log

Undo log 主要用于记录数据被修改之前的日志,在表信息修改之前先会把数据拷贝到undo log 里,当事务进行回滚时可以通过undo log 里的日志进行数据还原。

主要用途:

(1)保证事务进行rollback时的原子性和一致性,当事务进行回滚的时候可以用undo log的数据进行恢复。

(2)用于MVCC快照读的数据,在MVCC多版本控制中,通过读取undo log的历史版本数据可以实现不同事务版本号都拥有自己独立的快照数据版本。

4、Read view

在innodb 中每个事务开启后都会得到一个read_view。副本主要保存了当前数据库系统中正处于活跃(没有commit)的事务的ID号,保存的是系统中当前不应该被本事务看到的其他事务id列表。

Read view 的几个重要属性:
trx_ids: 当前系统活跃(未提交)事务版本号集合。
max_limit_id: 创建当前read view 时“当前系统最大事务版本号+1”。
min_limit_id: 创建当前read view 时“系统正处于活跃事务最小版本号”
creator_trx_id: 创建当前read view的事务版本号;
Read view 匹配条件规则
  1. 如果数据事务ID trx_id < min_limit_id,表明生成该版本的事务在生成Read View前,已经提交(因为事务ID是递增的),所以该版本可以被当前事务访问。
  2. 如果trx_id>= max_limit_id,表明生成该版本的事务在生成ReadView后才生成,所以该版本不可以被当前事务访问。
  3. 如果 min_limit_id =<trx_id< max_limit_id,需要分3种情况讨论
  • (1).如果m_ids包含trx_id,则代表Read View生成时刻,这个事务还未提交,但是如果数据的trx_id等于creator_trx_id的话,表明数据是自己生成的,因此是可见的。
  • (2)如果m_ids包含trx_id,并且trx_id不等于creator_trx_id,则Read View生成时,事务未提交,并且不是自己生产的,所以当前事务也是看不见的;
  • (3).如果m_ids不包含trx_id,则说明你这个事务在Read View生成之前就已经提交了,修改的结果,当前事务是能看见的。

READ_UNCOMMITTED 级别的事务不会获取read view 副本;

RC(read commit) 级别下同一个事务里面的每一次查询都会获得一个新的read view副本;

RR(重复读)级别下的一个事务里只会获取一次read view副本,从而保证每次查询的数据都是一样的。

MVCC+Next-key-Lock 防止幻读

InnoDB存储引擎在 RR 级别下通过 MVCCNext-key Lock 来解决幻读问题:

1、执行普通 select,此时会以 MVCC 快照读的方式读取数据

在快照读的情况下,RR 隔离级别只会在事务开启后的第一次查询生成 Read View ,并使用至事务提交。所以在生成 Read View 之后其它事务所做的更新、插入记录版本对当前事务并不可见,实现了可重复读和防止快照读下的 “幻读”

快照读是指读取数据时不是读取最新版本的数据,而是基于历史版本读取的一个快照信息(mysql读取undo log历史版本)

2、执行 select...for update/lock in share mode、insert、update、delete 等当前读

在当前读下,读取的都是最新的数据,如果其它事务有插入新的记录,并且刚好在当前事务查询范围内,就会产生幻读!InnoDB 使用 Next-key Lock 来防止这种情况。当执行当前读时,会锁定读取到的记录的同时,锁定它们的间隙,防止其它事务在查询范围内插入数据。只要我不让你插入,就不会发生幻读

当前读是读取的数据库最新的数据,当前读和快照读不同,因为要读取最新的数据而且要保证事务的隔离性,所以当前读是需要对数据进行加锁的

参考链接

https://zhuanlan.zhihu.com/p/52977862

https://juejin.cn/post/7016165148020703246?searchId=202502251734394A3BD7309987040F14B9#heading-20

http://www.dtcms.com/wzjs/122671.html

相关文章:

  • 做bannar在哪个网站参考seo是怎么优化的
  • 河南专业的做网站的公司最近的疫情情况最新消息
  • 中央人民政府网官网北部湾大开发网站点击排名优化
  • 做名片的网站叫什么来着html网页制作代码大全
  • 网站建设在国外爱站网长尾关键词搜索
  • 挂机宝可以做网站吗seo教程自学入门教材
  • 网站建设栏目怎么介绍工具站seo
  • 邳州做网站pzwode百度官网下载安装
  • 做网站 报价 需要了解免费p站推广网站入口
  • 手机网站备案密码找回的方法东莞seo建站公司哪家好
  • 网站建设商业计划书百度搜索数据统计
  • 湖南做网站 联系磐石网络网络销售工作靠谱吗
  • 大浪网站建设电脑优化软件哪个好用
  • 旅游网站建设凡科建站客服电话
  • 梅山建设局网站进入百度app查看
  • 公司建网站多指数函数图像及性质
  • 做网站首页ps分辨率多少关键词优化价格表
  • 黄冈网站制作站长统计入口
  • 济南做网站的公司百度推广怎么赚钱
  • 怎么做跑腿网站营销型网站案例
  • 专做特产的网站重庆网站外包
  • 株洲建设网站的公司口碑好的设计培训机构
  • 制作网站专业公司吗app拉新推广平台渠道商
  • php 手机网站广告联盟官网入口
  • 机械行业做网站百度建立自己的网站
  • 网页传奇游戏黑屏怎么解决李飞seo
  • html5手机网站分辩率做一个网站的步骤
  • 山西宏图建设集团有限公司网站百度指数使用指南
  • wordpress 本地运行深圳市企业网站seo营销工具
  • 做购物平台网站需要多少资金剪辑培训班一般学费多少