MySQL 5.7 InnoDB缓冲池NUMA功能支持——但是别高兴的太早
当前CPU都已是NUMA架构,相信除了历史遗留系统,很少会有数据库跑在SMP的CPU上了。NUMA架构带来的优势无言而语,CPU更快的内存访问速度,但是带来的问题也不言而喻,特别是对于数据库的影响。MySQL之前“臭名昭著”的swap问题就是因为NUMA架构导致。大部分同学已经知道应对技巧,即在启动文件中加入:
numactl --interleave=all mysqld ...
or
numactl –cpunodebind=node –localalloc mysqld ...
MongoDB官方的启动文件大致也是这么写的。但是这样的处理方式在Inside君看来并不是最优的。因为NUMA的优势在于本地内存的申请速度。因此,对于数据库来说,一个好的策略应该是诸如缓冲池这样的全局内存可以向所有节点申请内存,而线程级别的内存还是坚持本地分配策略。
MySQL 5.7 InnoDB提供了新的参数innodb_numa_interleave,即缓冲池内存的分配策略采用interleave的方式。官方文档中的说明如下:
Enables the NUMA interleave memory policy for allocation of the InnoDB buffer pool. Wheninnodb_numa_interleave is enabled, the NUMA memory policy is set to MPOL_INTERLEAVE for the mysqld process. After the InnoDB buffer pool is allocated, the NUMA memory policy is set back to MPOL_DEFAULT. For theinnodb_numa_interleave option to be available, MySQL must be compiled on a NUMA-enabled system.
实现代码也比较优雅,有兴趣的同学可以看下。不过当你高兴InnoDB终于支持NUMA特性时,MySQL又给我们泼了冷水:
root@test-1# bin/mysqld -V
bin/mysqld Ver 5.7.12 for linux-glibc2.5 on x86_64 (MySQL Community Server (GPL))
root@test-1# bin/mysqld --help -v | grep numa
最新的5.7.12版本竟然找不到此参数。但是没有关系,开源的魅力在于折腾,于是乎修改了2行代码,编译安装后参数innodb_numa_interleave就又出现了:
root@test-1:/mdata/mysql/mysql-5.7.12/bld# sql/mysqld -v --help | grep numa
--innodb-numa-interleave
innodb-numa-interleave FALSE
小伙伴可尝试自己去解决看看,第一个回复并答对的小伙伴,将获得姜老师提供的价值1000元的某云服务提供商代金券一张哦~~~
不过,相比Microsoft SQL Server,MySQL的NUMA支持依然不够完善,因为Microsoft SQL Server在2005版本就已经支持NUMA特性,并且提供了相应的命令来进行控制,如:
ALTER SERVER CONFIGURATION SET PROCESS AFFINITY CPU=0 TO 3;
这样做的好处是,比如在多实例环境下,用户可以更为灵活的控制内存的分配。但是要实现此功能,貌似也不是一件难事哦,有谁愿意实现给InnoSQL贡献自己的一份力量呢?
PS:Inside君的2016年MySQL网络培训班又将开始啦~~~,具体点击:2016年最好的MySQL数据库网络培训又来了 零基础、Oracle DBA、MySQL DBA的同学们都来吧,跟着姜老师的思考方式来系统的学习MySQL。
MySQL 5.7 InnoDB缓冲池NUMA功能支持——但是别高兴的太早的更多相关文章
- InnoDB缓冲池预加载在MySQL 5.7中的正确打开方式
InnoDB缓冲池预加载在MySQL 5.7中的正确打开方式 https://mp.weixin.qq.com/s/HGa_90XvC22anabiBF8AbQ 在这篇文章里,我将讨论在MySQL 5 ...
- MySQL InnoDB缓冲池(Buffer Pool)
InnoDB缓冲池并不仅仅缓存索引,它还会缓存行的数据.自适应哈希索引.插入缓冲(Insert Buffer).锁,以及其他内部数据结构. InnoDB还使用缓冲池来帮助延迟写入,这样就能合并多个写入 ...
- Mysql 存储引擎 InnoDB与Myisam的主要区别
MySQL默认采用的是MyISAM. 1,事务处理 innodb 支持事务功能,myisam 不支持. Myisam 的执行速度更快,性能更好. MyISAM不支持事务,而InnoDB支持.InnoD ...
- MySQL内核:InnoDB存储引擎 卷1
MySQL内核:InnoDB存储引擎卷1(MySQL领域Oracle ACE专家力作,众多MySQL Oracle ACE力捧,深入MySQL数据库内核源码分析,InnoDB内核开发与优化必备宝典) ...
- 初识 MySQL 5.6 新特性、功能
背景: 之前介绍过 MySQL 5.5 新功能.参数,现在要用MySQL5.6,所以就学习和了解下MySQL5.6新的特性和功能,尽量避免踩坑.在后续的学习过程中文章也会不定时更新. 一:参数默认值的 ...
- InnoDB存储引擎介绍-(3)InnoDB缓冲池配置详解
原文链接 http://www.ywnds.com/?p=9886 一.InnoDB缓冲池 InnoDB维护一个称为缓冲池的内存存储区域 ,用于缓存内存中的数据和索引.了解InnoDB缓冲池的工作原 ...
- MySQL 8.0有什么新功能
https://mysqlserverteam.com/whats-new-in-mysql-8-0-generally-available/ 我们自豪地宣布MySQL 8.0的一般可用性. 现在下载 ...
- mysql存储引擎innodb、myisam区别
MyISAM与InnoDB的区别是什么? 1. 存储结构 MyISAM:每个MyISAM在磁盘上存储成三个文件.第一个文件的名字以表的名字开始,扩展名指出文件类型..frm文件存储表定义.数据文件的扩 ...
- Mysql技术内幕——InnoDB存储引擎
Mysql技术内幕——InnoDB存储引擎 http://jingyan.baidu.com/article/fedf07377c493f35ac89770c.html 一.mysql体系结构和存储引 ...
随机推荐
- Unity 3D游戏开发引擎:最火的插件推荐
摘要:为了帮助使用Unity引擎的开发人员制作更完美的游戏.我们精心挑选了十款相关开发插件和工具.它们是:2D Toolkit.NGUI.Playmaker.EasyTouch & EasyJ ...
- 利用java mail发送邮件(转)
JavaMail是SUN提供给开发者在应用程序中实现邮件发送和接收功能而提供的一套标准开发类库,支持经常使用的邮件协议,如SMTP.POP3.IMAP.开发者使用JavaMail编写邮件程序时,无需考 ...
- bootstarp模板02
HTML代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="ut ...
- Material使用05 自定义主题、黑夜模式\白天模式切换
需求: 1 不使用materil依赖内建的主题,使用自己创建的主题 2 利用自己创建的主题实现白天模式和黑夜模式 1 自定义主题 1.1 创建自定义主题文件 them.scss // 引入materi ...
- 前端MVC Vue2学习总结(三)——模板语法、过滤器、计算属性、观察者、Class 与 Style 绑定
Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据.所有 Vue.js 的模板都是合法的 HTML ,所以能被遵循规范的浏览器和 HTML 解 ...
- jmeter+ant+jenkins的自动化接口测试
一.Jenkins安装配置 1.安装配置JDK1.7+环境变量: 2.下载jenkins.war,放入D:\jenkins目录下,目录位置随意: Jenkins启动方法: cmd进入Jenkins目录 ...
- 用户信息文件/etc/passwd,影子文件/etc/shadow,组信息文件/etc/group,组密码文件/etc/gshadow,用户管理相关文件
/etc/passwd man 5 passwd查看配置文件信息 account:password:UID:GID:GECOS:directory:shell 帐号:密码:用户ID:组ID:一般的信息 ...
- seo我告诉你
seo我告诉你,这回seo真的告诉你百度云链接 链接:http://pan.baidu.com/s/1qYpM9y8 密码:mad6 seo优化教程:
- ArcGIS API for JavaScript 4.2学习笔记[15] 弹窗内容的格式与自定义格式
先看结果截图吧(不看过程可以直接看总结,在文末): 随便点击了两个城市斑块,出现结果如图. 我来解读一下这结果和以前的有什么不同: 这个例子使用了PopupTemplate,数据是Layer(使用Po ...
- UVA 10559 Blocks
题目大意:有一串带颜色的方块,每次可以消掉颜色相同的一段,得到size^2的分数,问最多能得到多少分数.n≤200. 给这题状态跪下来. 显然的区间DP,但设f[i][j]是不够的. 考虑到之前做过的 ...