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

重庆市网站备案微信公众平台注册官网登录入口

重庆市网站备案,微信公众平台注册官网登录入口,安徽省建设信息管理平台,石家庄网站建设推广服务一、MVCC简介 MVCC是一种用来解决读写冲读的无锁并发控制,也就是为事务分配单增长的时间戳,为每个修改保存一个版本,版本与事务时间戳关联,读操作只读该事务开始前的数据库的快照,所以MVCC可以为数据库解决一些问题。…

一、MVCC简介

MVCC是一种用来解决读写冲读的无锁并发控制,也就是为事务分配单增长的时间戳,为每个修改保存一个版本,版本与事务时间戳关联,读操作只读该事务开始前的数据库的快照,所以MVCC可以为数据库解决一些问题。

二、数据并发场景

  1. 读读:不存在任何问题,也不需要并发控制。
  2. 读写:有线程安全问题,kennel会造成事务隔离性问题,可能遇到脏读、幻读、不可重复读。
  3. 写写:有线程安全问题,可能存在更新丢失问题。mysql-分析并解决mvcc更新丢失问题

三、MySQL事务隔离级别

在这里插入图片描述

四、MVCC能解决的问题

  1. 在并发读写数据库是, 可以做到在读操作时,不用阻塞写操作;在写操作时,不用阻塞读操作,提高数据库并发读写性能。快照读不触发间隙锁。
  2. 解决脏读、幻读、不可重复读等事务隔离问题,但不能解决更新丢失问题。

五、 当前读和快照读的区别

当前读
它读取的数据记录都是当前最新的版本,会对当前读区的数据进行加锁,防止其他事务修改数据,是被关锁的一种操作。
如下操作都是当前读:

  • select lock in share mode(共享锁) 行锁级别
  • select for update(排他锁) 行锁级别
  • update(排他锁)
  • insert(排他锁)
  • delete(排他锁)
  • 串行化事务隔离级别(排他锁)

快照读

快照读实现基于多版本并发控制即MVCC,既然是多版本那么快照读读到的数据不一定是当前最新的数据,有可能是之前历史版本的数据。
如下操作是快照读:

  • 不加锁的select操作(注:事务级别不是串行化)
    读已提交和重复读他们的快照都是基于MVCC实现的,MVCC常见的概念:undolog、版本链、readview。

版本链:
在这里插入图片描述
readview:
作用:让你知道在版本链里选择哪些记录。
涉及的字段
m_ids:表示生成readview时当前系统中活跃(未提交)的时读写事务的id。
min_trx_id:表示生成readview时当前系统中活跃的读写事务中最小的事务id。
max_trx_id:表示生成readview时系统应该分配给下一个事务的id。
creator_trx_id:表示生成该readview的事务id。
readview如何判断版本链中的哪些版本可用:

  • trx_id==creator_trx_id:可以访问这个版本。
  • trx_id < min_trx_id:可以访问这个版本。
  • trx_id > max_trx_id:不可以访问这个版本。
  • min_trx_id <= trx_id <= max_trx_id: 如果trx_id在m_ids中时不可以访问这个版本的,反之可以。

六、读已提交和可重复读生成review的时机

读已提交和可重复读生成的时机不同。
读已提交事务每次执行select查询的时候都会生成一个新的readview,他是以每个select执行语句为单位的。比如开启事务,在事务中执行两次select查询,这两个查询会生成两个readview,每个select查询对应一个readview,也是没有实现可重复读的一个原因。
可重复读生成readview是以一个事务为单位,同一个事务中执行多次select只会生成一个readview。可重复读无法解决删除幻读,但可以解决插入幻读,若想解决删除幻读可以开启间隙锁。mysql-分析并解决可重复读隔离级别发生的删除幻读问题

七、幻读在不同书中的不同定义

在《数据库系统概念》第五版-王珊、萨师煊著,这样定义的:

  1. 事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中部分记录,当T1再次按相同条件读区数据时,发现某些记录神秘消失了。
  2. 事务T1按一定条件从数据库中读取了某些数据记录后,事务T2插入了一些记录,当T1再次按相同条件读区数据时,发现多了一些记录。

这两种不可重复读有时也被称为幻影现象(幻读)。

在《mysql王者晋升之路》-张甦著,这样定义的:

  1. 不可重复读是指在其中一个事务中,读取到了其他事务针对旧数据的修改记录(常见的操作就是update或者delete语句)。这里也可以说明作者是将删除归于不可重复读而不是幻读。
  2. 幻读是指在其中一个事务中,读取到了其他事务新增的数据,仿佛出现了幻影现象(常见操作就是Insert语句),这种读的现象允许出现在读已提交的事务隔离级别中。

这两本书,对幻读的定义有歧义,第一本书是将删除和插入都归于幻读,第二本书之将插入归于幻读。本文章是基于第一本书。

http://www.yayakq.cn/news/947272/

相关文章:

  • 重庆网站策划做企业网站国内发展
  • 实现微信绑定登录网站河北省城乡住房建设厅网站
  • 竹子建站教程网站建设运城
  • 下载网站源文件产品营销推广方案
  • 汽车之家如何做团购网站四川网站设计成功柚米科技
  • 网站域名哪里买推广页面制作
  • 云服务器做网站好吗pc网站制作是指什么意思
  • 商务网站建设的基本步骤网站开发使用软件
  • 美橙互联网站管理后台苏州网站建设苏州
  • 快速建站学什么网站建设公司专业网站制作开发
  • 做网站乱码互联网公司经营范围有哪些
  • wordpress加密方式seo排名app
  • 网站模板修改工具房屋装修在线设计网站
  • 怎么做代理人金沙网站网站开发 托管合同
  • 织梦cms做网站怎么样企业官网策划
  • 三亚网站建设美工淘宝客api调用到网站
  • wordpress成长记录网站模版个人网页制作成品 模板
  • 建设一个网站需要哪些员工用新域名做网站排名快吗
  • 阜城网站建设北京高端别墅设计公司
  • 做网站建设的网络公司经营范围怎样填wordpress游客聊天插件
  • 常见的门户网站有哪些省建设厅官方网站
  • 网站死链接扫描wordpress自定义关键词链接文章
  • 网站做自签发证书wordpress 全局变量
  • 天津网站建设电焊机微信小程序开发教程2021
  • 一天能免费看3次的appseo排名优化教学
  • 北京天津网站设计制作多少钱网站建设存在四个问题
  • 主要给人家做网站的公司站长工具网站备案
  • 连云港网站定制开发爱站查询
  • php网站 怎么取得后台管理权限屏显的企业网站应该怎么做
  • 做网站 页面自适应wordpress 旋转加载