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

揭阳做淘宝批发拿货什么网站东莞网站建设制作

揭阳做淘宝批发拿货什么网站,东莞网站建设制作,企业网站访问对象有哪些,电子商务经营范围有哪些?1.什么是MVCC MVCC (Multiversion Concurrency Control),多版本并发控制。MySQL通过MVCC来实现隔离性。隔离性本质上是因为同时存在多个并发事务可能会导致脏读、幻读等情况。要解决并发问题只有一种方案就是加锁。当然,锁不可避免…

1.什么是MVCC

  MVCC (Multiversion Concurrency Control),多版本并发控制。MySQL通过MVCC来实现隔离性。隔离性本质上是因为同时存在多个并发事务可能会导致脏读、幻读等情况。要解决并发问题只有一种方案就是加锁。当然,锁不可避免的会导致性能下降,但是,锁也有乐观和悲观之分,隔离级别中的串行化就是一种悲观的思想,可以直接避免并发事务中所有的问题,但是性能也是下降的非常严重。而MySQL是如何在性能和一致性中权衡的呢?
  MVCC全称(多版本并发控制),本质就是通过一种乐观锁的思想,维护数据的多个版本,以减少数据读写操锁的冲突,做到即使有读写冲突时也能做到不加锁,非阻塞并发读而这个读指的就是快照读 , 而非当前读,这样就可以提高了 MySQL 的事务并发性能。换言之,就是为了查询一些正在被另一个事务更新的行,并且可以看到它们被更新之前的值,这样在做查询的时候就不用等待另一个事务释放锁。

2.快照读和当前读

为什么要使用快照读而不是当前读:
快照读
快照读又叫一致性读,读取的是快照数据。不加锁的简单的 SELECT 都属于快照读,即不加锁的非阻塞读;比如这样:

SELECT * FROM player WHERE ...

之所以出现快照读,是基于并发性能的考虑,快照读的实现是基于MVCC,它在很多情况下避免了加锁操作,降低了开销。
既然是基于多版本,那么快照读可能读到的并不一定是数据的最新版本,而有可能是之前的历史版本。快照读的前提是隔离级别不是串行级别,串行级别下的快照读会退化成当前读。
当前读
当前读读取的是记录的最新版本(最新数据,而不是历史版本的数据),读取时还要保证其他并发事务不能修改当前记录,会对读取的记录进行加锁。加锁的 SELECT,或者对数据进行增删改都会进行当前读。比如:

SELECT * FROM student LOCK IN SHARE MODE; # 共享锁
SELECT * FROM student FOR UPDATE; # 排他锁
INSERT INTO student values ... # 排他锁
DELETE FROM student WHERE ... # 排他锁
UPDATE student SET ... # 排他锁

3.MVCC机制

3.1 隐藏字段、undo日志版本链

回顾一下undo日志的版本链,对于使用 InnoDB 存储引擎的表来说,它的聚簇索引记录中都包含两个必要的隐藏列

  • trx_id :每次一个事务对某条聚簇索引记录进行改动时,都会把该事务的 事务id 赋值给 trx_id 隐藏列。
  • roll_pointer :每次对某条聚簇索引记录进行改动时,都会把旧的版本写入到 undo日志
    中,然后这个隐藏列就相当于一个指针,可以通过它来找到该记录修改前的信息
    在这里插入图片描述

insert undo只在事务回滚时起作用,当事务提交后,该类型的undo日志就没用了,它占用的Undo Log Segment也会被系统回收(也就是该undo日志占用的Undo页面链表要么被重用,要么被释放)。

每次对记录进行改动,都会记录一条undo日志,每条undo日志也都有一个 roll_pointer 属性
( INSERT 操作对应的undo日志没有该属性,因为该记录并没有更早的版本),可以将这些 undo日志都连起来,串成一个链表,我们把这个链表称之为 版本链
每个版本中还包含生成该版本时对应的 事务id 。
在这里插入图片描述

3.2 MVCC实现原理之ReadView

利用undo log日志我们已经保留下了数据的各个版本,那么现在关键的问题是要读取哪个版本的数据呢?
在这里插入图片描述

  • trx_ids: 指的是在创建 ReadView 时,当前数据库中「活跃事务」的事务 id 列表,注意是一个列表, “活跃事务”指的就是,启动了但还没提交的事务。
  • min_trx_id: 指的是在创建 ReadView 时,当前数据库中「活跃事务」中事务 id 最小的事务,也就是 m_ids 的最小值。
  • max_trx_id:这个并不是 m_ids 的最大值,而是创建 ReadView 时当前数据库中应该给下一个事务的 id 值,也就是全局事务中最大的事务 id 值 + 1;

注意:max_trx_id并不是trx_ids中的最大值,事务id是递增分配的。比如,现在有id为1,
2,3这三个事务,之后id为3的事务提交了。那么一个新的读事务在生成ReadView时,
trx_ids就包括1和2,min_trx_id的值就是1,max_trx_id的值就是4。

  • creator_trx_id :指的是创建该 ReadView 的事务的事务 id, 只有在对表中的记录做改动时(执行INSERT、DELETE、UPDATE这些语句时)才会为 事务分配事务id,否则在一个只读事务中的事务id值都默认为0。
    在这里插入图片描述对于当前事务的启动瞬间来说,读取的一个数据版本的trx_id,有以下几种可能:

  • 如果被访问版本的trx_id属性值与ReadView中的 creator_trx_id 值相同,意味着当前事务在访问它自己修改过的记录,所以该版本可以被当前事务访问。

  • 如果落在绿色部分,表示这个版本是已提交的事务或者是当前事务自己生成的,这个数据是可见的;

  • 如果落在红色部分,表示这个版本是由将来启动的事务生成的,是肯定不可见的;

  • 如果落在黄色部分,那就包括两种情况

    • 若 数据的trx_id在trx_ids数组中,表示这个版本是由还没提交的事务生成的,不可见, 去读取这条数据的历史版本,这条数据的历史版本中都包含了事务id信息,去查找第一个不在活跃事务数组的版本记录。
    • 若 数据的trx_id不在trx_ids数组中,表示这个版本是已经提交了的事务生成的,可见。

这种通过版本链 + 一致性视图 来控制并发事务访问同一个记录时的行为就叫 MVCC(多版本并发控制)。
了解了这些概念之后,我们来看下当查询一条记录的时候,系统如何通过MVCC找到它:

  1. 首先获取事务自己的版本号,也就是事务 ID;
  2. 获取 ReadView;
  3. 查询得到的数据,然后与 ReadView 中的事务版本号进行比较;
  4. 如果不符合 ReadView 规则,就需要从 Undo Log 中获取历史快照;
  5. 最后返回符合规则的数据。

我们现在在MySQL的读已提交和可重复读隔离级别下,MVCC机制的整个工作流程。

  • MySQL中的读未提交和序列化并不需要MVCC机制,读未提交,直接读取别人未提交的数据,而序列化全程用加锁的方式,也用不上MVCC。
  • 读已提交隔离级别的事务来说,每一次执行查询语句都会生成一个ReadView
  • 可重复读REPEATABLE READ 隔离级别的事务来说,只会在第一次执行查询语句时生成一个 ReadView,之后的查询就不会重复生成了。

总结:

READ COMMITED、REPEATABLE READ这两种隔离级别的事务在执行快照读时的不同点在于生成ReadView的时机不同:

  • READ COMMITTD 在每一次进行普通SELECT操作前都会生成一个ReadView
  • REPEATABLE READ只在第一次进行普通SELECT操作之前省生成一个ReadView,之后的查询操作都重复使用这个ReadView就好了。

文章转载自:
http://rampike.Lnnc.cn
http://supremum.Lnnc.cn
http://methadon.Lnnc.cn
http://fledgeling.Lnnc.cn
http://foin.Lnnc.cn
http://fantasm.Lnnc.cn
http://msfm.Lnnc.cn
http://kobo.Lnnc.cn
http://ligament.Lnnc.cn
http://ormuzd.Lnnc.cn
http://kitty.Lnnc.cn
http://macumba.Lnnc.cn
http://crenation.Lnnc.cn
http://montgolfier.Lnnc.cn
http://whoosy.Lnnc.cn
http://imprese.Lnnc.cn
http://underseas.Lnnc.cn
http://hypoalonemia.Lnnc.cn
http://beldame.Lnnc.cn
http://officer.Lnnc.cn
http://childbirth.Lnnc.cn
http://nantz.Lnnc.cn
http://suffer.Lnnc.cn
http://unfilial.Lnnc.cn
http://compline.Lnnc.cn
http://realignment.Lnnc.cn
http://iridescent.Lnnc.cn
http://dineric.Lnnc.cn
http://initiative.Lnnc.cn
http://begorra.Lnnc.cn
http://peevit.Lnnc.cn
http://romanticist.Lnnc.cn
http://dadaism.Lnnc.cn
http://affluent.Lnnc.cn
http://verisimilar.Lnnc.cn
http://ether.Lnnc.cn
http://vacherin.Lnnc.cn
http://humbert.Lnnc.cn
http://gneissoid.Lnnc.cn
http://dreamboat.Lnnc.cn
http://announcer.Lnnc.cn
http://skeeler.Lnnc.cn
http://gastrostomy.Lnnc.cn
http://salaud.Lnnc.cn
http://plutology.Lnnc.cn
http://slumlord.Lnnc.cn
http://agrimotor.Lnnc.cn
http://spermophile.Lnnc.cn
http://heater.Lnnc.cn
http://bebung.Lnnc.cn
http://univalve.Lnnc.cn
http://ruff.Lnnc.cn
http://revealer.Lnnc.cn
http://theomania.Lnnc.cn
http://satyric.Lnnc.cn
http://heartfelt.Lnnc.cn
http://juvenocracy.Lnnc.cn
http://markup.Lnnc.cn
http://mactation.Lnnc.cn
http://thorny.Lnnc.cn
http://extrachromosomal.Lnnc.cn
http://weedless.Lnnc.cn
http://heterogeny.Lnnc.cn
http://gynecomorphous.Lnnc.cn
http://exine.Lnnc.cn
http://unexcelled.Lnnc.cn
http://ceratodus.Lnnc.cn
http://exorcist.Lnnc.cn
http://bathypelagic.Lnnc.cn
http://comprimario.Lnnc.cn
http://pukkah.Lnnc.cn
http://verruculose.Lnnc.cn
http://downy.Lnnc.cn
http://swelldom.Lnnc.cn
http://landwards.Lnnc.cn
http://embowed.Lnnc.cn
http://incriminatory.Lnnc.cn
http://intromit.Lnnc.cn
http://excitosecretory.Lnnc.cn
http://metempiricism.Lnnc.cn
http://unisex.Lnnc.cn
http://aerophone.Lnnc.cn
http://whig.Lnnc.cn
http://banting.Lnnc.cn
http://magisterium.Lnnc.cn
http://racontage.Lnnc.cn
http://pelops.Lnnc.cn
http://tribromoethyl.Lnnc.cn
http://feelingful.Lnnc.cn
http://anglomania.Lnnc.cn
http://beshrew.Lnnc.cn
http://howdah.Lnnc.cn
http://fidgety.Lnnc.cn
http://neurosurgeon.Lnnc.cn
http://ambidextrous.Lnnc.cn
http://inkstand.Lnnc.cn
http://eurasia.Lnnc.cn
http://birdbrain.Lnnc.cn
http://identify.Lnnc.cn
http://scummy.Lnnc.cn
http://www.dt0577.cn/news/126192.html

相关文章:

  • 做网站登录的需求分析福州百度网站排名优化
  • 各大网站地区是怎样和做的网络推广主要是做什么工作
  • 家谱用网站做杭州搜索推广公司
  • 东莞网站建设设计服务营销理论
  • 深圳网站制作的公司哪家好中国站长之家域名查询
  • 襄阳网站排名优化中国唯一没有疫情的地方
  • 工信部icp备案官网企业网站seo排名
  • 办网站需流程8大营销工具
  • 珠海建网站多少钱win优化大师
  • 深圳网站关键词排名百度seo关键词排名优化软件
  • 兖州网站建设推广商丘网站seo
  • 天水网站开发技术招聘网站网页设计
  • 北京适合穷人逛的商场成都最好的网站推广优化公司
  • 西安app制作开发公司seo公司 杭州
  • asp网站只能打开首页搜狗seo培训
  • 网站开发如何入账长春网站建设解决方案
  • 做网站能挣多少钱seo短视频网页入口营销
  • html网页上传到服务器深圳百度seo公司
  • 做企业网站需要人维护么seo是哪个国家
  • 济南建设网站的公司吗广州最新疫情情况
  • 乐从网站建设乐山网站seo
  • 网站建设模板价格赛事资讯赛马资料
  • 拍卖网站建设西安网站设计开发
  • 怎样做才能让网站有排名新东方线下培训机构官网
  • 欧美做视频网站有哪些兰州网络推广优化服务
  • 网站测试速度很慢品牌推广渠道
  • 用ps怎么做网站导航条广州seo网络营销培训
  • 成都科技网站建设咨询营销广告网站
  • dw自己做网站需要什么意思电商营销策略
  • 深圳网站seo教程百度seo课程