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

二级域名做网站域名市场调研

二级域名做网站域名,市场调研,网站流量推广,wordpress制作下拉菜单一、什么是MVCC? MVCC(Multi-Version Concurrency Control),即多版本并发控制,是并发读写场景下,数据库层面提供的一种解决方案。 数据库的并发场景有以下三种: 读读 当多个事务同时进行读取操作时,它们之间不存在…

一、什么是MVCC?

MVCC(Multi-Version Concurrency Control),即多版本并发控制,是并发读写场景下,数据库层面提供的一种解决方案。

数据库的并发场景有以下三种:

  1. 读读
    当多个事务同时进行读取操作时,它们之间不存在资源竞争,不会产生任何问题。因为读取操作并不会对数据进行修改。
  2. 读写
    在这种场景下,一个事务进行读取操作,另一个事务进行写入操作,可能会引发一系列数据一致性问题,如脏读(读取到其他事务未提交的数据)、不可重复读(在同一事务中多次读取同一数据结果不同)以及幻读(事务执行过程中出现新的符合条件的数据)。
  3. 写写
    当多个事务同时尝试对同一数据进行写入操作时,会产生冲突。

MVCC是用来解决第二种场景的。

第三种场景通过加锁解决。

二、事务的四大特性

  • 原子性
    事务包含的所有SQL操作要么同时执行成功,要么全部失败回滚。
    通过Undo Log来实现。
    Undo Log中的每条记录都包含指向修改前记录的指针。

  • 持久性
    一旦事务提交,不会因为断电等原因导致数据丢失。
    通过Redo Log来实现。
    Redo Log 记录了事务对数据所做的所有修改操作,事务提交之后,就会生成一条记录。
    当数据库系统发生故障重启时,会根据 Redo Log 中的记录,将未持久化到磁盘的数据重新应用到数据库中。

  • 隔离性
    各个事务的执行互不影响。
    通过MVCC和加锁实现。

  • 一致性
    通过Redo Log、Undo Log、隔离性共同实现。

三、事务的四种隔离级别

  • 读未提交
    所有事务都可以看到其他未提交事务的执行结果。
    会产生脏读、不可重复读、幻读问题。

事务1

select name from employee where id = 1;

事务2

update employee set name = '李四' where id = 1;

两个事务并发执行,事务1会读取事务2未提交的数据(脏读), 即name = ‘李四’; 事务2提交之后,事务1读取的数据由张三是李四,即产生不可重复读问题。

  • 读已提交
    一个事务只能看见已经提交事务所做的改变。
    可能会产生幻读和不可重复读。

  • 可重复读
    MySQL事务默认的隔离级别。
    会产生幻读。

事务1

select count(1) from employee where name like = '%张%';

事务2

insert into employee ('name') values('张三丰')

事务3

delete from employee where id = 1;

三个事务并发执行,会产生幻读,事务1执行两次操作,每次获取的结果不一样。

  • 串形化
    MySQL提供的最高事务隔离级别,但是会产生性能问题,因为每个事务的操作都有顺序,即串形。

四、MVCC的实现原理

MVCC的实现原理主要由三部分组成,分别是Readview、Undo Log、版本链。
在这里插入图片描述
数据库每次的读写操作,都会创建一个Readview(视图),该Readview会包含当前事务ID,、活跃的事务ID(没有commit的)、按照事务ID从小到大排序,未开始的事务ID。

MySQL中每行数据默认都有两个隐藏列,事务ID和回滚指针

事务ID和主键一样,也是自增的,回滚指针可以用来回滚历史的版本数据。

那么数据库在进行读写操作时,Readview如何判断要读取那条Undo Log呢?

Readview中有当前事务ID, UndoLog中有最新的记录。

  • 如果当前事务ID = 最新记录的事务ID,那说明当前数据是本次事务提交的,可以读取。
  • 最新记录的事务ID < MIN_TRX_ID, 那说明最新的记录是在本次事务开始执行之前别的事务前提交的,可以读取。
  • 最新记录的事务ID > MAX_TRX_ID, 按照回滚指针,找前一个版本的记录,然后执行步骤1,2的判断逻辑。
  • MIN_TRX_ID <= 最新记录的事务ID <= MAX_TRX_ID, 按照回滚指针,找前一个版本的记录。

重复上面四个步骤,直到找到匹配的记录。

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

相关文章:

  • 鸿蒙开发语言优化网站排名的方法
  • 推荐 官网 潍坊网站建设推广app赚钱的平台
  • dw动态网站怎么做搜索框最新军事动态
  • 软件介绍网站源码阿里指数查询入口
  • 云服务器做网站视屏湖南关键词网络科技有限公司
  • 简单的网站2023年最新新闻简短摘抄
  • 律师网站建站发布推广信息的网站
  • 常州建网站线上运营推广方案
  • 开发网站开票写什么济宁做网站的电话
  • 无限动力网站百度竞价官网
  • 卫计局本年度网站建设工作总结今日头条搜索优化
  • 做的网站放在阿里云百度上怎么做推广
  • 网站开发团队哪些人西安百度爱采购推广
  • 搜狗推广做网站要钱吗安徽搜索引擎优化seo
  • 微软公司做网站的软件如何让别人在百度上搜到自己公司
  • 湘潭做网站价格咨询磐石网络手机推广app
  • 网站子目录建立seo是指什么
  • 怎么给网站做404武汉网站seo
  • 什么是网站销售北京推广优化经理
  • 建设银行官网站下载南通网络推广
  • 长沙优化科技有限公司正规吗酒店seo是什么意思
  • 沈阳网站前端优化营商环境工作开展情况汇报
  • 电脑做系统ppt下载网站好网络服务器地址怎么查
  • 嘉兴网嘉兴网站建设网络策划是做什么的
  • php如何做局域网的网站建设百度搜索高级搜索
  • 华哥在用wordpress10大插件西安百度seo排名
  • 建立手机个人网站一个具体网站的seo优化
  • 成都网站建设 四川冠辰结构优化是什么意思
  • 青岛建设集团 招聘信息网站电脑优化软件推荐
  • 惠东网站设计上海百度公司地址在哪里