优化online操作,例如修改buffer pool、修改索引名(非主键)、修改REPLICATION FILTER、修改MASTER而无需关闭SLAVE线程等众多特性。

如果是加大buffer pool,其过程大致是:

1、以innodb_buffer_pool_chunk_size为单位,分配新的内存pages;

2、扩展buffer pool的AHI(adaptive hash index)链表,将新分配的pages包含进来;

3、将新分配的pages添加到free list中;

如果是缩减buffer pool,其过程则大致是:

1、重整buffer pool,准备回收pages;

2、以innodb_buffer_pool_chunk_size为单位,释放删除这些pages(这个过程会有一点点耗时);

3、调整AHI链表,使用新的内存地址。

实际测试时,发现在线修改 buffer poo 的代价并不大,SQL命令提交完毕后都是瞬间完成,而后台进程的耗时也并不太久。在一个并发128线程跑tpcc压测的环境中,将 buffer pool 从32G扩展到48G,后台线程耗时 3秒,而从 48G 缩减回 32G 则耗时 18秒,期间压测的事务未发生任何锁等待。

-- 演示1:从 1G 扩大到 16G

[yejr@imysql.com]> SET GLOBAL innodb_buffer_pool_size = 51539607552;

Query OK, 0 rows affected (0.00 sec)

-- 看看日志记录

09:21:19.460543Z 0 [Note] InnoDB: Resizing buffer pool from 1073741824 to 17179869184. (unit=134217728)

09:21:19.468069Z 0 [Note] InnoDB: disabled adaptive hash index.

09:21:20.760724Z 0 [Note] InnoDB: buffer pool 0 : 60 chunks (491511 blocks) were added.

09:21:21.922869Z 0 [Note] InnoDB: buffer pool 1 : 60 chunks (491520 blocks) were added.

09:21:21.935114Z 0 [Note] InnoDB: buffer pool 0 : hash tables were resized.

09:21:21.947264Z 0 [Note] InnoDB: buffer pool 1 : hash tables were resized.

09:21:22.203031Z 0 [Note] InnoDB: Resized hash tables at lock_sys, adaptive hash index, dictionary.

09:21:22.203062Z 0 [Note] InnoDB: Completed to resize buffer pool from 1073741824 to 17179869184.

09:21:22.203075Z 0 [Note] InnoDB: Re-enabled adaptive hash index.

-- 演示2:从 16G 缩减到 1G

[yejr@imysql.com]> SET GLOBAL innodb_buffer_pool_size = 1073741824;

Query OK, 0 rows affected (0.00 sec)

-- 看看日志记录

09:22:55.591669Z 0 [Note] InnoDB: Resizing buffer pool from 17179869184 to 1073741824. (unit=134217728)

09:22:55.680836Z 0 [Note] InnoDB: disabled adaptive hash index.

09:22:55.680864Z 0 [Note] InnoDB: buffer pool 0 : start to withdraw the last 491511 blocks.

09:22:55.765778Z 0 [Note] InnoDB: buffer pool 0 : withdrew 489812 blocks from free list. Tried to relocate 1698 pages (491510/491511).

09:22:55.774492Z 0 [Note] InnoDB: buffer pool 0 : withdrew 0 blocks from free list. Tried to relocate 1 pages (491511/491511).

09:22:55.782745Z 0 [Note] InnoDB: buffer pool 0 : withdrawn target 491511 blocks.

09:22:55.782786Z 0 [Note] InnoDB: buffer pool 1 : start to withdraw the last 491520 blocks.

09:22:55.892068Z 0 [Note] InnoDB: buffer pool 1 : withdrew 489350 blocks from free list. Tried to relocate 2166 pages (491517/491520).

09:22:55.900743Z 0 [Note] InnoDB: buffer pool 1 : withdrew 0 blocks from free list. Tried to relocate 2 pages (491519/491520).

09:22:55.908257Z 0 [Note] InnoDB: buffer pool 1 : withdrew 0 blocks from free list. Tried to relocate 0 pages (491519/491520).

09:22:55.915778Z 0 [Note] InnoDB: buffer pool 1 : withdrew 0 blocks from free list. Tried to relocate 1 pages (491520/491520).

09:22:55.923836Z 0 [Note] InnoDB: buffer pool 1 : withdrawn target 491520 blocks.

09:22:56.149172Z 0 [Note] InnoDB: buffer pool 0 : 60 chunks (491511 blocks) were freed.

09:22:56.308997Z 0 [Note] InnoDB: buffer pool 1 : 60 chunks (491520 blocks) were freed.

09:22:56.316258Z 0 [Note] InnoDB: buffer pool 0 : hash tables were resized.

09:22:56.324027Z 0 [Note] InnoDB: buffer pool 1 : hash tables were resized.

09:22:56.393589Z 0 [Note] InnoDB: Resized hash tables at lock_sys, adaptive hash index, dictionary.

09:22:56.393616Z 0 [Note] InnoDB: Completed to resize buffer pool from 17179869184 to 1073741824.

09:22:56.393628Z 0 [Note] InnoDB: Re-enabled adaptive hash index.

再来看下在线修改非主键索引名,直接用 ALTER TABLE RENAME INDEX 语法即可。

【新特性实践】

例如下面的SQL语法:

[yejr@imysql.com]> ALTER TABLE orders RENAME INDEX idx1 TO idxxx1;

Query OK, 0 rows affected (0.11 sec)

Records: 0 Duplicates: 0 Warnings: 0

可以看到,几乎瞬间完成,尽管我在执行这个SQL时正跑着64个并发tpcc压测。

buffer pool mysql_MySQL 5.7版本新特性(修改buffer pool,无需重启服务)相关推荐

  1. Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结...

    Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结 1.1. Java的编年史2 ...

  2. iOS基础:新浪微博授权机制、 版本新特性

    文章目录 前言 1. 版本新特性 II. 新浪微博授权机制 2. 1.http://open.weibo.com/wiki/微博API 前言 新浪微博分享SDK 1. 版本新特性 HWNewFeatu ...

  3. React16、17、18版本新特性

    react-16版本新特性 一.hooks import { useState } from 'react'function App() {// 参数:状态初始值比如,传入 0 表示该状态的初始值为 ...

  4. Spark 3.2.0 版本新特性 push-based shuffle 论文详解(一)概要和介绍

    前言 本文隶属于专栏<大数据技术体系>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见大数据技术体系 目录 Spark 3.2.0 ...

  5. Go 1.18 版本新特性详解!

    导语 | 本文推选自腾讯云开发者社区-[技思广益 · 腾讯技术人原创集]专栏.该专栏是腾讯云开发者社区为腾讯技术人与广泛开发者打造的分享交流窗口.栏目邀约腾讯技术人分享原创的技术积淀,与广泛开发者互启 ...

  6. Android Q(10.0 API29)版本新特性和兼容性适配

    摘要 1.本文档基于谷歌AndroidQ官方文档和一加Q版本应用兼容性整改指导 2.本文档主要对影响比较大的部分进行简单总结,内容并不全面: 3.版本号对应关系: Android-Q = Androi ...

  7. Spark 3.2.0 版本新特性 push-based shuffle 论文详解(二)背景和动机

    前言 本文隶属于专栏<大数据技术体系>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见大数据技术体系 目录 Spark 3.2.0 ...

  8. ANSYS Mechanical 2020 R1 版本新特性-CABLE 280单元分析索结构

    导读:3D 缆索单元,可用的产品:Pro | Premium | Enterprise | PrepPost | Solver | AS add-on 一.CABLE 280 单元概述 CABLE28 ...

  9. Android Q(10.0)版本新特性和兼容性适配

    北京时间2019年3月14日Google正式对外发布Android Q Beta 1及预览版SDK,这意味着安卓开发者们又即将迎来一年一度的新版本适配工作了.Android Q 为开发者们带来了许多新 ...

最新文章

  1. hdu 2141 Can you find it?
  2. PLM和PDM相互关系
  3. 那么辛苦努力的工作,却换来了一身的不是
  4. Linux学习笔记-软件安装管理
  5. java数组可扩展_[转载]Java数组扩容算法及Java对它的应用
  6. rcp rapido_Rapido使用数据改善乘车调度
  7. 360健康助手文件存储位置 获取图片
  8. mkenvimage
  9. Java学习总结(随笔)——利用JSON解析实现网络下载
  10. VAssistX给注释中文带来红色下划线可以去掉
  11. ArcGIS10.2安装的详细步骤、注意事项及许可变永久操作
  12. 企业之pacemaker基本概念及其原理
  13. HTML 静态网页制作Web 金州勇士队 库里 库里三分王 JavaScript CSS 图片轮播 时间效果 注册界面等
  14. 常用字典代码推荐标准
  15. 【通信原理】实验三 数字基带码型产生实验
  16. mp4播放器带后台开源源码
  17. 为什么显示D盘可用空间不多,但是明明包括隐藏文件也没有用那么多内存?(内含解决方案)
  18. 【ospf-vlink虚拟连接】
  19. Windows下Debug模式的检测和OutputDebugString
  20. 以Vultr服务器为例,用Xshell远程连接CentOS7服务器

热门文章

  1. json字符串中的大括号转义传到后台_json转义问题
  2. [python] shell模式下面写for循环
  3. 【PC工具】在线MP3转WAV工具,MP3文件转换成arduino可以直接播放的wav格式
  4. 【WSN同步捕获】无线传感器网络的同步捕获和跟踪误差的MATLAB仿真
  5. 【leetcode】1051. Height Checker
  6. Python之路(第三十八篇) 并发编程:进程同步锁/互斥锁、信号量、事件、队列、生产者消费者模型...
  7. 解决activiti中由模板转换的流程图连线名称缺失问题
  8. 你的Java代码是否符合规范,来测测便知!
  9. Mybatis解决字段名与实体类属性名不相同的冲突
  10. maven发碰到的问题