1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > MySQL 5.5 大量数据插入出现的抖动问题 及 解决方法

MySQL 5.5 大量数据插入出现的抖动问题 及 解决方法

时间:2021-10-18 15:20:57

相关推荐

MySQL 5.5 大量数据插入出现的抖动问题 及 解决方法

数据库|mysql教程

MySQL 5.5,MySQL 5.5 大量数据插入出现的抖

数据库-mysql教程

java毕设源码,ubuntu改安装源,tomcat崩溃如何处理,爬虫arxiv例子,php攻击代码,一站式seo优化热线lzw

虽然有insert buffer和write ahead logging策略保证在执行线程中不直接操作表数据文件,但扩展表空间的操作会导致更新的tps出现瞬

西门子 局域网 源码,vscode实时预览快捷键,ubuntu 录制课程,tomcat面试及答案,爬虫的女生,php分布式计算,睢宁seo优化哪家公司好,phpwind能做网站吗lzw

php磁力搜索源码,vscode隐藏,ubuntu视频合并,tomcat sever,sqlite存头像,apache服务器可用于解析域名,医院物品查询插件,网页前端框架排行,网络爬虫jsoup,青岛php培训中心,基础seo培训,物业公司网站源代码,横向水平网页,html欧美网站模板,页面跳转进度条,java sql学生信息管理系统,年会抽奖程序源码lzw

背景

日志型应用的一个典型操作,是周期性地有大量的insert操作。这类操作需要对扩展表空间。

分析

在InnoDB里,扩展表空间的操作是在语句执行过程中,由执行线程直接调用的。

尤其是对于一些表每行比较大,则会出现每插入几条记录就需要扩展表空间。

虽然有insert buffer和write ahead logging策略保证在执行线程中不直接操作表数据文件,但扩展表空间的操作会导致更新的tps出现瞬间低点。现象如下图。实际上整体TPS也受此影响。

改进方案及可行性

可以在这类大操作之前预分配表空间来优化这个问题。我们的业务上线之前都有容量预估,每天也有监控。因此接下来一段时间表空间增长到多少,是能够预估得到。

在实际更新开始之前,在低峰期甚至是提供服务之前就将表空间预分配好,能够避免这种抖动和提高TPS。

工具验证

InnoDB的表空间结构上,空间头部有4个byte的数字N表示这个表空间的大小(page数目),,文件的实际大小是N*Page_SIZE.

实现了一个工具extend_space,修改4个byte并将文件append到指定的大小。测试发现insert性能提升10%。由这个原因引起的抖动消除。

后续

目前还只是用工具实现。工具使用起来比较麻烦,主要是更新过程中的锁表操作就需要外部脚本,而且以后应用的新版本中page_size可变,因此比较优美的方案是将这个功能加入到MySQL支持的命令中。

补充更新

新增MySQL命令支持预扩展

?id=63858

效果如图

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。