gridview databind 会导致页面刷新马_Innodb批量页面刷盘情况下的quot;两次写quot;

c1e38c3d22065cd0271c6f2f99e51387.png

c0bc6fe6044019fd68f12f0bb2ec882e.gif//Innodb批量页面刷盘情况下的"两次写"//

    之前的文章中,我们介绍过innodb的两次写特性,这里给出链接:

InnoDB的两次写特性

今天我们完善一下这部分的内容。

    我们知道innodb数据页的默认大小是16kb,磁盘和内存通过数据页进行交互,在数据库关闭的时候,innodb会将内存中的数据脏页刷新到磁盘上。如果在刷新的过程中,数据页发生了损坏,那么我们就无法使用redo log进行数据页的恢复了。想要使用redo log进行数据恢复,首先要保证数据页的完整性,Innodb的两次写就是为了解决数据页损坏的问题的,它基于一种备份的思想,在数据页刷盘之前先备份一份在两次写文件中,然后再进行数据刷盘。

8ca58367f805cc449a40296b2181eed9.png

   单一页面的刷盘方法上面的文章中提到了,我们今天主要看在批量场景下innodb是如何使用两次写机制的。

    在单一页面的刷盘过程中,因为要先将数据页从内存中的doublewrite_buffer刷到ibdata中,然后再从内存中刷到磁盘上,相当于磁盘IO次数增加,会导致数据库的性能变差(安全和方便从来都是双刃剑)。引入了批量刷盘之后,如果还采用单一页面刷盘过程,那么性能肯定会急剧下降。在MySQL5.7中,innodb设置了最小的批量缓存单元,简称shard,该缓存单元隶属于innodb buffer pool的每个instance,每个instance都有独立的shart。与此同时,innodb引入了参数innodb_parallel_doublewrite_path和innodb_doublewrite_batch_size,其中第一个参数指的是“两次写”磁盘文件的绝对路径,第二个参数指的是shard的大小。

   批量刷盘一般采用LRU的方法淘汰冷数据页,当需要批量刷盘的时候,innodb会判断当前页面所属的instance,然后找到对应的shard,查看当前shard是否已满,如果没满,则将数据页内容添加复制到该shard中。如果添加完成之后,shard已经写满,此时需要将shard缓存的数据页写入到两次写文件中,写完之后再将两次写文件flush到磁盘中,最后将对应的真实页面刷盘。由于是连续写入多个页面,所以性能比写多次,每次写一个页面要好。

   数据恢复的时候,如果需要修复数据页,那么innodb将会从"两次写"磁盘文件中读取所需要的页面,加载到内存中去,然后在此基础上继续做redo log的应用。

   最后,之所以需要"两次写",是因为磁盘写入的时候,是以512字节为单位的原子写入,不能保证16kb的数据页一次性原子写入,如果能保证每次写入16kb的数据页原子写入,那么"两次写"也就失去了意义了。

8804ca13e8853ec319a29b78821e76be.png062f006a8afcd0d01bf2c38dfbd0fbce.png有帮助的话还希望点下再看哈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/434716.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实例解析linux内核I2C体系结构(1)

作者:刘洪涛,华清远见嵌入式学院讲师。 一、概述 谈到在linux系统下编写I2C驱动,目前主要有两种方式,一种是把I2C设备当作一个普通的字符设备来处理,另一种是利用linux I2C驱动体系结构来完成。下面比较下这两种驱动。 第一种方…

★ Flex を使って Scalable Vector Graphics とビットマップを描画する

from: http://www.ibm.com/developerworks/jp/web/library/wa-svgbitmap/Flex を使って Scalable Vector Graphics とビットマップを描画するSandeep Malik, Tech Lead, IBM 概要: SVG (Scalable Vector Graphics) はグラフィックスの領域で最も重要な技術の 1 つで…

g5420 win7集显驱动_台式机装WIN7?雷我已经趟完了

注:本文只用于PC爱好者交流测试,文中所有测试版系统均只用于测试,不得用于个人或商业用途。Windows全面更新至win10版本后,改装Win7系统逐渐变得越来越艰难。厂商BIOS中逐渐舍弃了原始界面改为图形化,传统Legacy模式无…

制作完整的java可执行文件

帮教务处的老师做了一个小软件,所以学习了一下制作java可执行文件,在此分享一下。 说明:因为是做完很长一段时间后再截的图,可能有点纰漏,大体应该没什么问题。 我的eclipse工程文件目录: bin | images(放图…

ajax中async_小猿圈web前端之ajax的同步和异步有怎样的区别?

对于ajax我们应该知道ajax是主要用来在前端页面中向服务器后端请求数据,ajax中根据async的值不同分为同步(async false)和异步(async true)两种执行方式,那么,ajax的同步和异步请求两种方式有…

mysql存储引擎的区别_Mysql的两种存储引擎以及区别

一、Mysql的两种存储引擎1、MyISAM:①不支持事务,但是整个操作是原子性的(事务具备四种特性:原子性、一致性、隔离性、持久性)②不支持外键,支持表锁,每次所住的是整张表MyISAM的表锁有读锁和写锁(两个锁都是表级别)&a…

带给你灵感的3D街画艺术设计

3D街头艺术画已在16世纪以来意大利文艺复兴时期的Madonnari画家创造了令人惊叹的壁画来装饰豪华别墅的内墙。3D艺术也可以跟踪它的航线,。这里有一些新的图像,这将使你想知道它是如何可能的使东西是如此逼真,3D设计们不要错过 1。 &#xff0…

[原]2011年度生活三层总结

一年了。 想到自己从开始没有目标,误打误撞的来到了提高班到现在的成长。我是多么的幸运,幸运的来到廊坊师范(现在都要称之为母校了),幸运的来到了提高班,遇到了米老师,在此感谢。 一年了。改变…

hp laser103 属性没有配置项_哦?在hp打印机面板上就可以更改打印机ip地址

修改打印机IP的方法有很多但都没有直接从打印机控制面板上修改方便过瘾虽然有些机器不支持但是惠普大部分机器还是可以的今天我们就以 LaserJet M227 系列打印机为例hp官方为大家介绍一下具体的设置方法步骤一:打印配置报告查看有效IP地址如果机器是2行控制面板 1.在…

python去掉最高分和最低分_去掉一个最高分,去掉一个最低分求平均值(trimmean)...

如下图:演讲比赛,要求去掉一个最高分,去掉一个对低分后求平均值。当然这个太简单了,我们可以用max求出最大值,用min求出最小值,然后sum求出数据总和,用(总和-最大值-最小值)/(数据总个数-2)。思…

[Oracle整理]CASE-END

说明:本内容是工作用到的知识点整理,来自工作中和网络。 代码于Oracle9上测试。 作用: 1可用来进行数据资料行转列的功能 2可用来对数据进行判断,类似decode,但CASE语句在处理范围条件的时候会显得非常灵活。如果只是需要匹配少量…

C# 线程手册 第三章 使用线程 Monitor.TryEnter()

Monitor 类的TryEnter() 方法在尝试获取一个对象上的显式锁方面和 Enter() 方法类似。然而,它不像Enter()方法那样会阻塞执行。如果线程成功进入关键区域那么TryEnter()方法会返回true. TryEnter()方法的三个重载方法中的两个以一个timeout类型值作为参数&#xff0…

pycharm不同py文件共享参数_PyCharm安装笔记

1. 介绍1.1 介绍今天福哥带着大家学习如何安装非常好用的Python编辑器,也就是jetbrains全家桶的PyCharm编辑器。PyCharm是jetbrans开发的一款专门用来编写Python程序的编辑器,它的自动补全、代码联想、框架支持、插件支持以及高效的反应速度成为了编写Py…

Windows与linux双系统安装

[源] [http://xiaomaimai.blog.51cto.com/1182965/294256] Windows与linux双系统 Linux的安装方式有硬盘安装、网络安装、光驱安装。 双系统的安装最后先安装windows,再安装linux,因为windows每次安装时都会重新修改系统引导文件,如果安装…

第一步:Axure 使用svn多人协作产品开发(提交文件)

注册登陆http://www.svnxiezuo.com站点 注册登陆http://www.svnxiezuo.com站点 从注册http://www.svnxiezuo.com站点获取svn项目地址 编辑axure文件 开始创建axure共享文件 创建axure共享文件 axure提交文件到svn版本库当中 登陆http://www.svnxiezuo.com站点svn版本库 axure创…

python socketio async client_electron/socket.io client-python socketio/aiohttp server//连接失败

此websocket连接失败。有趣的是这几天前还在起作用。我把电子从6降到了5.0.6,但这没用。服务器from aiohttp import webimport socketioapp web.Application()sio socketio.AsyncServer()# or sio socketio.AsyncServer(cors_allowed_origins*)sio.attach(app)sio.on(connec…

领导者/追随者(Leader/Followers)模型和半同步/半异步(half-sync/half-async)模型

领导者/追随者(Leader/Followers)模型和半同步/半异步(half-sync/half-async)模型都是常用的客户-服务器编程模型。这几天翻了些文章,发现对领导者/追随者模型说的比较少,下面就这个模型打个比方&#xff1…

网络编程模型综述 之 成熟的IO框架介绍

ACE “重量级的C I/O框架,用面向对象实现了一些I/O策略和其它有用的东西,特别是它的Reactor是用OO方式处理非阻塞I/O,而Proactor是用OO方式处理异步I/O的( In particular, his Reactor is an OO way of doing nonblocking I/O, and Proactor …

网络编程模型综述 之 多线程模型

每个连接对应一个线程 一个网络socket对应一个处理线程,socket采用阻塞I/O模型; 这种模型是小程序和java常用的策略,对于交互式的长连接应用也是常见的选择(比如BBS),也常用来做内部服务器交互的模型。这种策略很难满足高性能程序…

已知两边求角度公式_有30度角的直角三角形,已知一直角边,求另两边的公式,快速求法...

有30度角的直角三角形,已知一直角边,求另两边的公式,快速求法以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!有30度角的直角三角形,已知一直角…