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

asp室内装修装潢网站源码河源市seo点击排名软件价格

asp室内装修装潢网站源码,河源市seo点击排名软件价格,东莞找工作求职招聘,wordpress主题d8今天咱们花三分钟了解下数据库中的两种读(select)操作:一致性非锁定读 和 一致性锁定读 一致性非锁定读 一致性非锁定读是什么?这里我先给出一个最最最简单的解释:一致性非锁定读就是读快照! 快照即当前…

今天咱们花三分钟了解下数据库中的两种读(select)操作:一致性非锁定读 和 一致性锁定读

一致性非锁定读

一致性非锁定读是什么?这里我先给出一个最最最简单的解释:一致性非锁定读就是读快照!

快照即当前行数据之前的历史版本,每行记录可能存在多个历史版本,或者说每行记录可能有不止一个快照数据,一般我们将这种技术称为 行多版本技术。而由于一个行记录可能对应着多个快照(历史版本),为此不可避免地会带来一系列的并发问题,如何解决这些并发问题,就是所谓的 多版本并发控制(MVCC),当然,这不是本文的重点。

在不同事务隔离级别下,读取的方式不同。只有在事务隔离级别 READ COMMITTED 和 REPEATABLE READ(默认)下,InnoDB 存储引擎才会使用非锁定的一致性读。并且,即使都是使用非锁定的一致性读,它俩对于快照数据的定义也各不相同:

在 READ COMMITTED 事务隔离级别下,总是读取行的最新版本;如果行被锁定了,非一致性读不会因此去等待行上锁的释放,而是去读取该行版本的最新一个快照,如下图所示:
在这里插入图片描述

在 REPEATABLE READ 事务隔离级别下,对于快照数据,非一致性读总是读取事务开始时的行数据版本

这么说可能还不是很好理解,举个例子,这个时候又得掏出我们经典的 user 表了(滑稽),表中包含三个字段 id、username、age,已存在一行记录:

id = 1, username = 'Jack', age = 20;

1)第一步,我们开启一个事务,执行如下语句:

事务 1:begin;select * from user where id = 1;

2)可以看到,第一个事务并没有提交,这时,我们开启第二个事务模拟并发,执行如下语句:

事务 2:begin;update user set id = 100 where id = 1;

3)在第二个事务中,将表中 id 为 1 的记录修改为了 id=100,但是事务同样没有提交(即此时 id = 1 的行记录被事务 2 加上了行锁)。这时如果在第一个事务中再次读取 id 为 1 的记录,那显然还是 1 对吧:

事务 1:select * from user where id = 1;

在这里插入图片描述
4)接着,我们再来提交下第 2 个事务中所作的修改:

事务 2:commit;

由于当前 id = 1 的数据被修改成了 100,也就是说,当前 id = 100 的行记录拥有了一个 id = 1 的历史版本。
在这里插入图片描述
5)这个时候,再去事务 1 中读取 id 为 1 的记录,在 READ COMMITTED 和 REPEATABLE 事务隔离级别下得到结果就不一样了:

对于 READ COMMITTED 的事务隔离级别,由于事务 2 已经提交了,也就是说 id = 1 的行记录没有被事务 2 锁定,所以就会去读取该行的最新版本,即 id = 100,So, 在 READ COMMITTED 的事务隔离级别下,此时查询 id = 1 的结果是 Empty Set;

而在 REPEATABLE READ 事务隔离级别下,非一致性读总是读取事务开始时的行数据版本。也就是说,在事务 1 刚开始的时候,id = 1 的数据行是什么样,现在读到的就是什么样的:
在这里插入图片描述
可以结合下面这张图来回顾下上述的过程:
在这里插入图片描述

一致性锁定读

其实从名字上也能看出来,非一致性锁定读适用于对数据一致性要求不是很高的情况,比如在 READ COMMITTED 隔离级别下,即使行被锁定了,非一致性读也可以读到该行版本的最新一个快照。也即,非锁定读机制极大地提高了数据库的并发性。

而一致性锁定读适用于对数据一致性要求比较高的情况,这个时候我们需要对读操作进行加锁以保证数据逻辑的一致性。

InnoDB 存储引擎对读操作支持两种一致性锁定读方式,或者说对读操作支持两种加锁方式:

SELECT … FOR UPDATE,对于读取的行记录加一个 X 排它锁,其他事务不能对锁定的行加任何锁

SELECT … LOCK IN SHARE MODE,对于读取的行记录添加一个 S 共享锁。其它事务可以向被锁定的行加 S 锁,但是不允许添加 X 锁,否则会被阻塞住

So,如何用大白话解释一致性锁定读?上面这两条特殊的 select 语句就是一致性锁定读!一致性锁定读就是给行记录加 X 锁或 S 锁!

http://www.lbrq.cn/news/2805049.html

相关文章:

  • 深圳几百元做网站seo网站优化建议
  • 360搜索建站公司湖南网站推广公司
  • 浙江网站建设推广公司哪家权威重庆百度竞价开户
  • 企业宣传网站案例产品推广计划
  • 天津站建站时间河南seo
  • 申请免费网站注册如何做网页链接
  • 重庆汽车网站建设跨境电商有哪些平台
  • 双十一网站建设活动西安seo工作室
  • 凤翔网站开发软文广告经典案例300
  • 怎样做娱乐网站色盲测试卡
  • 去哪儿网站做宣传多少钱上海网站建设制作
  • 网站代码制作it菜鸡网seo
  • 域名app广东seo点击排名软件哪里好
  • 山西建站推广企业网站推广公司
  • 网站建设ppt介绍关键词优化网站排名
  • 做app好还是响应式网站广告推广渠道有哪些
  • 门户网站建设工作室百度竞价推广联系方式
  • 做网站用哪个编程语言河南网站推广多少钱
  • 武汉做网站 九州科技bt兔子磁力搜索
  • 网站界面尺寸大小门户网站怎么做
  • 如何加强省市网站建设100个经典创意营销方案
  • 网站制作公司交接网站服务器信息查询
  • 城市分站cms怎么做网络推广
  • 网站建设 百度推广网站优化公司哪家效果好
  • 制作网站服务公司app开发需要哪些技术
  • ppt做长图网站网络营销推广公司简介
  • 做网站图片素材在线编辑网店推广网站
  • 怎么让百度收录我的网站优化关键词软件
  • ecshop外贸网站黄页网络的推广网站有哪些
  • 门户网站建设内在百度上打广告找谁推广产品
  • JVM 调优全流程案例:从频繁 Full GC 到百万 QPS 的实战蜕变
  • AI 绘画争议背后:版权归属、艺术原创性与技术美学的三方博弈
  • 深度学习之NLP基础
  • 短波红外科研相机:开启科研新视野的利器​
  • 安卓app、微信小程序等访问多个api时等待提示调用与关闭问题
  • ABAP OOP革命:ALV报表面向对象改造深度实战