mysql innodb4大特征_MYSQL中InnoDB特性浅谈

许久没有更新博客,上周末放假把网易大牛姜sir的著作MYSQL技术内幕InnoDB存储引擎又翻阅了一番,对当前工作的InnoDB特性有了一些新的认识,下面谈谈自己的读后感.

1. InnoDB的体系架构由一系列后台线程,内存池和文件组成,这点与其他DB有相似之处. 在内存中划分了一块区域,即缓冲池,用来临时存放用户读写的数据页. InnoDB上对缓冲池读写数据页,刷新到磁盘等操作也使用了CHECKPOINT机制,LRU算法,这点与SQLSERVER,DB2等数据库设计一致,这里不再阐述.需要注意的是MYSQL中指定LRU列表的midpoint控制位置由参数innodb_old_blocks_pct控制,该参数决定了新读取的页会插入到LRU尾部多少的位置.一般为37%.

2. 插入缓冲: 插入缓冲是InnoDB存储引擎开创性的设计,主要为了解决非聚集索引插入或更新操作时,由于非聚集索引离散地访问非聚集索引页,从而导致插入操作性能下降.这是因为非聚集索引本身的特性决定的.所以INNODB引入了插入缓冲这一特性,对于非聚集索引的插入或更新操作,不是每一次直接插入到索引页,而是先判断插入的非聚集索引页是否在缓冲池中,若在则直接插入,如果不在则先放到到一个Insert Buffer对象中.然后再以一定的频率和情况进行Insert Buffer和辅助索引页子节点的合并操作,这时通常能将多个插入合并到一个操作中(因为在一个索引页中),这样大大提高了对于非聚集索引插入的性能.

插入缓冲的使用需要同时满足两个条件:1.索引为辅助索引;2.索引不是唯一的.因为在插入缓冲时,数据库并不去查找索引页来判断插入的记录的唯一性.如果去查找肯定又会有离散读取的情况发生,从而导致insert buffer失去了意义.

插入缓冲目前存在的问题主要是在写密集的情况下,插入缓冲会占用过多的缓冲池内存.

目前DB2,SQLSERVER上均没有插入缓冲这项特性.

3.Double-Write: 两次写主要带给InnoDB数据引擎的是数据页的可靠性.在其他数据库下,当某个数据页在正在写的过程中发生灾难,如电源问题导致宕机,该数据页会出现写失效的情况.当然我们可以通过重做日志进行恢复,但是由于重做日志记录的本身是对页的物理操作,如偏移量,写入记录等等.当物理页本身在宕机过程中损坏,再通过重做日志恢复不可行.面对这种情况,DB2,SQLSERVER通过内部命令REPAIRDB或者其他REPAIR工具去修复数据页.而MYSQL InnoDB两次写特性保证数据再在写入磁盘前先顺序写入共享表空间上,然后通过函数同步磁盘.这样相当于创建了数据页的一个副本.

4.自适应哈希索引:这是MYSQL INNODB另一个重要特性. InnoDB存储引擎会监控对表上各索引页的查询,如果观察到建立哈希索引可以带来速度提升,则自行建立哈希索引.InnoDB存储引起会自动根据访问的频率和模式来自动地为某些热点页建立哈希索引.这个是SQLSERVER和DB2所不具备的

MYSQL中InnoDB特性浅谈

标签:存在   查找   频率   控制   恢复   物理   带来   技术   poi

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:http://www.cnblogs.com/ducklightfatman/p/6945480.html

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

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

相关文章

微享:快速分享网页到新浪微博

分享到新浪微博 *:博客园的编辑程序会自动给javascript的链接加上前缀,使得链接错误。版本:1.0 简介: 书签栏工具,javascript代码,用于分享网页内容到新浪微博。 安装:Firefox,safa…

VFP下利用API调用帮助

VFP下利用API调用帮助 Declare integer HtmlHelp IN hhctrl.ocx integer hwndCaller, string pszFile, integer uCommand, integer dwData HtmlHelp(0, [mk:MSITStore:WINPY.CHM::/html/winp48fm.htm],1,0)转载于:https://www.cnblogs.com/77543/archive/2005/01/13/91583.htm…

java重命名package_AndroidStudio怎么重命名java目录下的包名(如cn.zsn.app)

【声明:】本文是作者(蘑菇v5)原创,版权归作者 蘑菇v5所有,侵权必究。本文首发在简书。如若转发,请注明作者和来源地址!未经授权,严禁私自转载!区分包名和applicationid的区别:这里的…

OCP-052考试题库汇总(5)-CUUG内部解答版

Examine these attributes for the profile assigned to USER1 whose password is oracle_4U. • PASSWORD_REUSE_MAX is 5. • PASSWORD_REUSE_TIME is 10. • PASSWORD_GRACE_TIME is 15. Which two conditions must be met for USER1 to reuse oracle_4U? A)At least 5 day…

笔记本鼠标乱跑!不知何故!

开始怀疑是病毒,现在安装了norton还是出现。哪位网友知道是怎么回事情吗?

java in thread main_JAVA报错:Exception in thread main……求帮助?

问题描述:题目要求:(1)创建MaxArray类:声明1个一维数组的成员变量,例如:int array[ ]; //一维数组设置有参构造方法,如:MaxArray(int n){ …… } //有参构造方法,为成员变量创建长为n的一维数组…

[ZZ]MVC设计模式

1 前言   用户界面,特别是图形用户界面,承担着向用户显示问题模型和与用户进行操作和I/O交互的作用。用户希望保持交互操作界面的相对稳定,但更希 望根据需要改变和调整显示的内容和形式。例如,要求支持不同的界面标准或得到不同…

OCP-052考试题库汇总(6)-CUUG内部解答版

Examine these attributes for the profile assigned to USER1 whose password is oracle_4U • PASSWORD_REUSE_MAX is 5 • PASSWORD_REUSE_TIME is 10 • PASSWORD_GRACE_TIME is 15 Which two are true? A)The USER1 password must not have been used for at least 10 da…

2019.7.25

T1.匹配 一看就是KMP的嘛,但是忘了。 啊,要背模板的啦! 啊?!暴力72分?!?!?! Get! 正解就是一般的KMP,把a串与b串接起来&#xf…

我的笔记本的鼠标又乱跑了!寻求帮助!

我打算做个纪录,看看究竟是什么幽灵。 2005/3/3 19点左右。 2005/3/15 19点左右 在家 2005/3/25 20:30左右 在家 05/04/01 19:40 在家 哪位网友遇到类似问题吗?有何高招?

帮你免于失业的十大软件技术!

能跟上关键技术的发展,是你在就业市场和未来保持优势的最佳手段。你对我们列出的十门技术精通吗?哪怕是大略精通? 我不知道你的具体工作是什么。如果你是某冷门领域的专家而变得不可或缺,或者你们的公司十分稳固,以你…

gentoo安装记录[20050216]

原作者: * 20050216: 我明天 (17 号) 要去武汉陪 gf 几天, 顺便找找工作 (如果你有武汉的工作信息, 记得一定给我发信或者直接联系我! 非常非常感谢先!!), 可能有几天上不来了, 所以赶紧把这帖子搞定啦! 大家有啥想法/意见的就跟帖提, 我回来改 * 20050215: 完成内核安装/内核…

centos 6.2安装mysql_CentOS 6.2下安装MySQL_服务器知识学堂-中关村在线

2.开始安装MySQL5首先我们应该先用下面的命令安装MySQL:yum install mysql mysql-server然后我们需要创建MySQL系统的启动键链接启动MySQL服务器,这样以便于MySQL在系统启动时自动启动chkconfig --levels 235 mysqld on/etc/init.d/mysqld start为MySQL …

注册Windows Phone Marketplace经验

简介 经过漫长漫长的等待以后,终于注册成功Windows Phone Marketplace,把经验分享一下。 登记注册 打开https://windowsphone.create.msdn.com/Register/ ,使用live id(msn id)登陆,然后按照向导一步步注册…

Java Apple_GitHub - izhaorui/AppleLogin-java: 苹果登录 Sign in with Apple 服务端校验

APP端苹果登录java后端校验主要校验苹果授权登录token 是否正确主要方法public RSAPublicKeySpec build(final String n, final String e) {final BigInteger modulus new BigInteger(1, Base64.decodeBase64(n));final BigInteger publicExponent new BigInteger(1, Base64.…

微软中文网,越办越好了!

哎呀!这几天研究多了些微软中文网站,发现越来越多有用的东西了,中文网站真是越来越好了,不光是微软的技术,很多企业级的开发相关的很多有用的资料,而且无论是翻译还是我们可爱的MVP们文字表述的都非常的到位…

iOS应用日志:开始编写日志组件与异常日志

经营你的iOS应用日志(一):开始编写日志组件 对于那些做后端开发的工程师来说,看LOG解Bug应该是理所当然的事,但我接触到的移动应用开发的工程师里面,很多人并没有这个意识,查Bug时总是一遍一遍的…

java程序cpu突然飚高_Java 定位导致CPU飙升的代码过程

线上的一个日志实时输出的程序曾经出过这样一个问题,刚开始上线java程序占用的CPU的资源很少,但是到了整点的时候,CPU直线飙高,直接到达100%根本没有要下降的趋势,唯一的方法只能杀掉它了,后面在借助jstack与top排查到线程然后定位…

如何在 Web 发布规则中使用证书进行 SSL 身份验证

概要 本文介绍如何设置 Internet Security and Acceleration (ISA) Server 2000 来发布需要客户端使用证书进行身份验证的 Web 站点。对于使用基于证书的身份验证作为建立安全套接字层连接的唯一方法的 Web 站点,这是必需的。在 ISA Server 的 Web 发布规则中指定证…

java代码情书_程序员们的爱情表白书

下面看看我们程序员是如何用自己的语言说出爱你。就算闷呆,也要闷呆得很性感。java程序员的情书我能抽象出整个世界...但是我不能抽象出你...因为你在我心中是那么的具体.&#xff0…