导读

作者:杨漆
16年关系型数据库管理,从oracle 9i 、10g、11g、12c到Mysql5.5、5.6、5.7、8.0 到TiDB获得3个OCP、2个OCM;运维路上不平坦,跌过不少坑、熬过许多夜。把工作笔记整理出来分享给大伙儿,希望帮到大家少走弯路、少熬夜。

干货:

一般情况下mysql在百万级数据时读取、插入、更新速度较快,客户体验良好,但到了两千万级以上就会出现很慢

解决案例:将MySQL插入速度从2000条/分钟 提高到 12000条/秒。

核心思想:

1、尽量使数据库一次性写入Data File

2、减少数据库的checkpoint次数

3、程序上尽量缓冲数据,进行批量式插入与提交

4、减少系统的IO冲突

  1. innodb_flush_log_at_trx_commit 配置设定为0 (插入速度会有很大提高,但Sever断电时有丢失数据风险)

  2. innodb_autoextend_increment 从8M修改为256M (减少tablespace自动扩展次数,避免频繁自动扩展Data File导致 MySQL 的checkpoint 操作)

  3. innodb_log_buffer_size 从8M修改为16M (根据1秒钟内的事务量情况 适度增大,太大会浪费,因为每1秒钟总会flush一次)

  4. innodb_log_file_size 从8M修改为256M (根据服务器内存大小与具体情况设置适合自己环境的值)

  5. innodb_log_files_in_group 从2修改为8 (增加Log File数量。此修改主要满足第1、2点)

  6. innodb_file_per_table=on & alter table table_name engine=innodb 将大表转变为独立表空并且进行分区,然后将不同分区下挂在多个不同硬盘阵列中,分散IO

  7. innodb_write_io_threads & innodb_read_io_threads 从4修改为64 (根据自己的Server CPU核数来更改相应的参数值)

  8. innodb_io_capacity & innodb_io_capacity_max 从200修改为10000 (提升 innodb刷脏页的能力,根据自己的的存储IOPS进行对应调整)

获取测试结果:

Query OK, 3840000 rows affected (5 min 20.11 sec)

Records: 3840000 Duplicates: 0 Warnings: 0

Query OK, 3840000 rows affected (6 min 47.28 sec)

Records: 3840000 Duplicates: 0 Warnings: 0

Query OK, 3840000 rows affected (7 min 36.11 sec)

Records: 3840000 Duplicates: 0 Warnings: 0

Query OK, 3840000 rows affected (7 min 59.21 sec)

Records: 3840000 Duplicates: 0 Warnings: 0

结果:完成了以上修改操作后;384万行数据的插入速度从30小时缩减到了5分20秒,效率得到极大的提升!

提高mysql插入速度的方法相关推荐

  1. 如何提高mysql插入速度_mysql技巧:提高插入数据(添加记录)的速度

    问题描述: 普通台式机,采集数据,表中已经有1000万数据量. 采集回来的数据插入表中的时候很慢,每条约100毫秒. 解决方法: 1.加大mysql配置中的bulk_insert_buffer_siz ...

  2. 6条策略提高mysql查询速度 潇湘博客

    6条策略提高mysql查询速度 1,表设计一定要优化,冗余数据最少,少用连接查询.如果在实际应用中,使用了极其复杂的连接,子查询,则数据表的设计得要重新考虑了. 2,尽量用char而不是varchar ...

  3. mysql每秒写入量_MySQL每秒可以插入多少条记录?影响MySQL插入速度的因素有哪些?...

    写入速度 MySQL每秒可以插入50w条记录吗? 带着疑问,我们一起看看mysql每秒可以插入多少条记录? 要回答这个问题,首先要考虑影响mysql插入速度的因素有哪些? 硬盘的速度,网卡的速度,写入 ...

  4. edge浏览器运行不流畅怎么办 提高edge浏览器速度的方法

    edge浏览器是win10系统的专用浏览器,它代替了慢吞吞的IE,很多人觉得edge浏览器运行速度快,但是有时候浏览某些网站的时候会不流畅,所以怎么提高edge浏览器的运行速度呢,小编就来教教大家. ...

  5. Win8怎么加快桌面图标刷新速度?提高图标刷新速度的方法解析

    本文来自BX教程网www.benxitj.com:整理编辑 - 原文出处 www.benxitj.com/Article/?11804/62.html 转载注明 window8 很多时候由于各种内存或 ...

  6. 【myISAM和innoDB】mySql的引擎myisam和innodb的区别/mysiam(mysql插入速度优化)

    目录 Myisam 和Innodb 特点和擅长 Myisam 和Innodb 数据存储区别 Myisam引擎(非聚集索引--叶子节点存储数据地址的指针) Innodb引擎(聚集索引---叶子节点的da ...

  7. 提高数据库查询速度的方法

    声明:文章是转载的,本文作为个人的备份使用. 处理百万级以上的数据提高查询速度的方法: 1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2 ...

  8. mysql如何提高其查询速度的方法

    2019独角兽企业重金招聘Python工程师标准>>> 最近一段时间由于工作需要,开始关注针对Mysql数据库的select查询语句的相关优化方法. 由于在参与的实际项目中发现当my ...

  9. mysql优化插入速度的方法_优化MySQL插入方法的五个妙招

    以下是涉及到插入表格的查询的5种改进方法: 1)使用LOAD DATA INFILE从文本下载数据这将比使用插入语句快20倍. 2)使用带有多个VALUES列表的INSERT语句一次插入几行这将比使用 ...

最新文章

  1. CentOS7.3下Jenkins+docker自动化部署solo站点
  2. 实验室服务器18.04LTS+RTX2080Ti+CUDA10.0+CUDAnn7.4+tf1.13装机之路
  3. 5个酷毙的Python神器工具
  4. textarea 换行_textarea自动换行方法总结
  5. 【译】C#9的候选功能
  6. 关于Python3.6下登陆接口的尝试
  7. sstableloader工具使用及原理解析
  8. Pytorch中GPU使用
  9. Discuz完整手动迁移教程(不使用备份功能)
  10. java中hashset_Java HashSet – Java中的HashSet
  11. Linux的基本权限和特殊权限
  12. 商场无线网络方案设计
  13. 联想微型计算机ai0,联想baby AI
  14. 轻松处理PHP开发中微信emoji表情mysql存储的问题
  15. java对接PayPal支付(v1)
  16. php全量导出,项目中生成器应用,解决量级数据导出excel内存溢出
  17. 制作风格——百变幻灯片,完全DIY(高级教程)
  18. 量子笔记:量子计算祛魅
  19. html5设置视频背景颜色,HTML5设置视频背景的方法介绍
  20. 汽车零部件行业PLM解决方案

热门文章

  1. Android | 查看被测应用程序的package和launchable-activity
  2. 高数下|多元函数微分学及其应用|高数叔|手写笔记
  3. 详解FPGA:人工智能时代的驱动引擎观后感
  4. c语言的输入输出语句有哪些?
  5. ios 键盘弹出input输入框被遮挡 键盘隐藏时页面无法回弹解决方案
  6. 等保测评--物联网安全扩展要求
  7. css实现圆形白底头像框
  8. 快乐阅读, 快乐成长
  9. 【Java刷题特辑第三期】——这些经典笔试题,你确定都做过吗?
  10. python解析通达信day文件,生成csv文件,期货历史回测