提高mysql插入速度的方法
导读
作者:杨漆
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冲突
innodb_flush_log_at_trx_commit 配置设定为0 (插入速度会有很大提高,但Sever断电时有丢失数据风险)
innodb_autoextend_increment 从8M修改为256M (减少tablespace自动扩展次数,避免频繁自动扩展Data File导致 MySQL 的checkpoint 操作)
innodb_log_buffer_size 从8M修改为16M (根据1秒钟内的事务量情况 适度增大,太大会浪费,因为每1秒钟总会flush一次)
innodb_log_file_size 从8M修改为256M (根据服务器内存大小与具体情况设置适合自己环境的值)
innodb_log_files_in_group 从2修改为8 (增加Log File数量。此修改主要满足第1、2点)
innodb_file_per_table=on & alter table table_name engine=innodb 将大表转变为独立表空并且进行分区,然后将不同分区下挂在多个不同硬盘阵列中,分散IO
innodb_write_io_threads & innodb_read_io_threads 从4修改为64 (根据自己的Server CPU核数来更改相应的参数值)
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插入速度的方法相关推荐
- 如何提高mysql插入速度_mysql技巧:提高插入数据(添加记录)的速度
问题描述: 普通台式机,采集数据,表中已经有1000万数据量. 采集回来的数据插入表中的时候很慢,每条约100毫秒. 解决方法: 1.加大mysql配置中的bulk_insert_buffer_siz ...
- 6条策略提高mysql查询速度 潇湘博客
6条策略提高mysql查询速度 1,表设计一定要优化,冗余数据最少,少用连接查询.如果在实际应用中,使用了极其复杂的连接,子查询,则数据表的设计得要重新考虑了. 2,尽量用char而不是varchar ...
- mysql每秒写入量_MySQL每秒可以插入多少条记录?影响MySQL插入速度的因素有哪些?...
写入速度 MySQL每秒可以插入50w条记录吗? 带着疑问,我们一起看看mysql每秒可以插入多少条记录? 要回答这个问题,首先要考虑影响mysql插入速度的因素有哪些? 硬盘的速度,网卡的速度,写入 ...
- edge浏览器运行不流畅怎么办 提高edge浏览器速度的方法
edge浏览器是win10系统的专用浏览器,它代替了慢吞吞的IE,很多人觉得edge浏览器运行速度快,但是有时候浏览某些网站的时候会不流畅,所以怎么提高edge浏览器的运行速度呢,小编就来教教大家. ...
- Win8怎么加快桌面图标刷新速度?提高图标刷新速度的方法解析
本文来自BX教程网www.benxitj.com:整理编辑 - 原文出处 www.benxitj.com/Article/?11804/62.html 转载注明 window8 很多时候由于各种内存或 ...
- 【myISAM和innoDB】mySql的引擎myisam和innodb的区别/mysiam(mysql插入速度优化)
目录 Myisam 和Innodb 特点和擅长 Myisam 和Innodb 数据存储区别 Myisam引擎(非聚集索引--叶子节点存储数据地址的指针) Innodb引擎(聚集索引---叶子节点的da ...
- 提高数据库查询速度的方法
声明:文章是转载的,本文作为个人的备份使用. 处理百万级以上的数据提高查询速度的方法: 1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2 ...
- mysql如何提高其查询速度的方法
2019独角兽企业重金招聘Python工程师标准>>> 最近一段时间由于工作需要,开始关注针对Mysql数据库的select查询语句的相关优化方法. 由于在参与的实际项目中发现当my ...
- mysql优化插入速度的方法_优化MySQL插入方法的五个妙招
以下是涉及到插入表格的查询的5种改进方法: 1)使用LOAD DATA INFILE从文本下载数据这将比使用插入语句快20倍. 2)使用带有多个VALUES列表的INSERT语句一次插入几行这将比使用 ...
最新文章
- CentOS7.3下Jenkins+docker自动化部署solo站点
- 实验室服务器18.04LTS+RTX2080Ti+CUDA10.0+CUDAnn7.4+tf1.13装机之路
- 5个酷毙的Python神器工具
- textarea 换行_textarea自动换行方法总结
- 【译】C#9的候选功能
- 关于Python3.6下登陆接口的尝试
- sstableloader工具使用及原理解析
- Pytorch中GPU使用
- Discuz完整手动迁移教程(不使用备份功能)
- java中hashset_Java HashSet – Java中的HashSet
- Linux的基本权限和特殊权限
- 商场无线网络方案设计
- 联想微型计算机ai0,联想baby AI
- 轻松处理PHP开发中微信emoji表情mysql存储的问题
- java对接PayPal支付(v1)
- php全量导出,项目中生成器应用,解决量级数据导出excel内存溢出
- 制作风格——百变幻灯片,完全DIY(高级教程)
- 量子笔记:量子计算祛魅
- html5设置视频背景颜色,HTML5设置视频背景的方法介绍
- 汽车零部件行业PLM解决方案