无论对于哪一种数据库,缓存技术都是提高数据库性能的关键,物理磁盘的访问速度与内存的访问速度永远都不是一个数量级的。通过缓存技术无论是在读还是写方面,都可以大大提高数据库整体性能。

Innodb_buffer_pool_size的合理设置

InnoDB存储引擎的缓存机制和MyISAM的最大区别就在于InnoDB不仅仅缓存索引,同时还会缓存实际的数据。所以,完全相同的数据库,InnoDB存储引擎可以使用更多的内存来缓存数据库相关的信息,前提是要有足够的物理内存。这对于内存价格不断降低的时代,无疑是个很吸引人的特性。

innodb_buffer_pool_size参数用来设置InnoDB最主要的Buffer(Innodb BufferPool)的大小,也就是缓存用户表及索引数据的最主要缓存空间,对InnoDB整体性能影响也最大。无论是MySQL官方手册还是网络上很多人分享的InnoDB优化建议,都是简单地建议将InnoDB的Buffer Pool设置为整个系统物理内存的50%~80%之间。如此轻率地给出此类建议实在有些不妥。

不管是多么简单的参数,都可能与实际运行场景有很大的关系。完全相同的设置,在不同的场景下表现可能相差很大。从InnoDB的Buffer Pool到底该设置多大这个问题来看,首先须要确定的是这台主机是不是只能提供MySQL服务?MySQL须要提供的最大连接数是多少?MySQL中是否还有MyISAM等其他存储引擎提供服务?如果有,其他存储引擎所需的Cache有要多大?

假设是一台单独给MySQL使用的主机,物理内存总大小为8GB,MySQL最大连接数为500,同时还使用了MyISAM存储引擎,这时候整体内存该如何分配呢?

内存分配为如下几大部分。

(1)系统使用,假设预留800MB。
(2)线程独享,最大约为2GB = 500×(1MB + 1MB + 1MB + 512KB +512KB),组成大概如下:
sort_buffer_size:1MB
join_buffer_size:1MB
read_buffer_size:1MB
read_rnd_buffer_size:512KB
thread_statck:512KB
(3)MyISAM Key Cache,假设大概为1.5GB。
(4)InnoDB Buffer Pool最大可用量:8GB-800MB-2GB-1.5GB = 3.7GB。

假设这个时候还按照50%~80%的建议来设置,最小也是4GB。通过估算,最大可用值在3.7GB左右,那么在系统负载很高,线程独享内存差不多到极限时,系统很可能就会出现内存不足的问题了。而且上面还只是列出了一些使用内存较大的地方,如果进一步细化,很可能导致可用内存更少。

上面只是一个简单的示例分析,实际情况并不一定是这样的。这里只是希望大家了解,在设置一些参数的时候千万不要想当然,一定要详细地分析可能出现的情况,然后再通过不断测试和调整来达到所处环境的最优配置。就我个人而言,正式环境上线之初,一般都会采取相对保守的参数配置策略。上线之后,再根据实际情况和收集到的各种性能数据进行针对性调整。

总结

  • 缓存是提高数据库性能的关键
  • innodb_buffer_pool_size的设置要合理

InnoDB缓存相关优化相关推荐

  1. 数据库分享一: MySQL的Innodb缓存相关优化

    无论是对于哪一种数据库来说,缓存技术都是提高数据库性能的关键技术,物理磁盘的访问速度永 远都会与内存的访问速度永远都不是一个数量级的.通过缓存技术无论是在读还是写方面都可以大大提 高数据库整体性能. ...

  2. mysql innodb 缓存设置_数据库分享一: MySQL的Innodb缓存相关优化

    无论是对于哪一种数据库来说,缓存技术都是提高数据库性能的关键技术,物理磁盘的访问速度永 远都会与内存的访问速度永远都不是一个数量级的.通过缓存技术无论是在读还是写方面都可以大大提 高数据库整体性能. ...

  3. mysql数据库前端缓存_MySQL数据库性能优化--缓存参数优化

    在平时被问及最多的问题就是关于 MySQL 数据库性能优化方面的问题,所以最近打算写一个MySQL数据库性能优化方面的系列文章,希望对初中级 MySQL DBA 以及其他对 MySQL 性能优化感兴趣 ...

  4. LNMP架构之PHP——MemCache对PHP页面的缓存加速优化

    前言 1.什么是MemCache? MemCache是一个自由.源码开放.高性能.分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载. 它通过在内存中缓存数据和对象来减少读取数据库的 ...

  5. mysql 5.1版本无innodb trx_MySQL 5.7: Innodb 事务子系统优化-阿里云开发者社区

    MySQL5.7 : Innodb 事务子系统优化 之前写了篇博客介绍了Percona Server对Read View的优化,顺带简单提到了MySQL5.7的事务子系统优化,详细见http://my ...

  6. MemCache对PHP页面的缓存加速优化

    一.MemCache 简介 Memcache 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度. ...

  7. Linux DNS缓存相关

    DNS缓存相关 bind-utils bind是linux系统下的一个DNS服务程序.bind-utils是bind软件提供的一组DNS工具包,里面有一些DNS相关的工具.主要有:dig,host,n ...

  8. C/C++ 流水线 缓存以及优化

    抄书笔记 <游戏引擎架构>第二版 游戏是软实时系统.软实时系统是指游戏软件必须在限期内完成操作--游戏中最显然的需求是没帧必须在16.6ms(以达到60FPS)或者33.3ms(以达到30 ...

  9. 附视频及ppt:在线分享《从案例说InnoDB的基本优化》总结

    2016.4.20  KVM虚拟化实践社区&知数堂 联合在线分享<从案例说InnoDB的基本优化>圆满结束 本文进行总结并且发布视频&PPT资源 分享主题 <从案例说 ...

最新文章

  1. authy不同账户间不同步_「第七期」shopify产品还能同步到微信小程序销售?看这里...
  2. 黑色星期五c语言,求黑色星期五问题~
  3. 第7集 构造函数中抛出的异常
  4. 倍数应用题后面需要带单位吗_数学应用题解答思路解析(附例题)
  5. 快速提高Python数据分析速度的八个技巧
  6. FormsAuthentication 和 Session 超时时间不一的问题
  7. ECharts-图表回执组件
  8. [文章备份]RSS阅读器在手机上APP配置方法
  9. YellowBrick-聚类评估示例
  10. 如何设计沉浸式游戏引导界面?你要知道的七大点
  11. 基于Spark的电影推荐系统(推荐系统~3)
  12. 映射网络驱动器失败的解决办法
  13. 农村三资管理平台app_农村三资管理系统功能
  14. python 多元线性回归的系数检验 t p值,多元线性回归检验t检验(P值),F检验,R方等参数的含义...
  15. CF 379F: New Year Tree
  16. zabbix使用详解
  17. 黑马程序员14套经典IT教程+面试宝典
  18. 清除90天苹果充值记录_王者荣耀安卓苹果跨系统角色转移服务,限量测试收费99元...
  19. 线性模型(梯度下降随机梯度下降)
  20. 西门子官网下载Eplan部件库

热门文章

  1. 华为交换机修改主机名
  2. oracle数据库激活控制文件位置,Oracle数据库之Oracle 重建控制文件一例
  3. php 下载的官方扩展 没有configure文件解决办法
  4. Java八大排序详解及源码
  5. Vivado exception_access_violation
  6. 基于virtualbox的centos7安装jdk1.8
  7. python socket thread,python实现socket+threading处理多连接的方法
  8. 电脑的发展史_苹果都使用自研芯片了,你还记得你的第一台电脑吗?
  9. n3k配置vpc是否还需要配置hsrp_HSRP
  10. eclipse如何导入一个项目_如何建立一个完美的 Python 项目