前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >提高mysql插入速度的方法

提高mysql插入速度的方法

原创
作者头像
杨漆
修改2021-09-07 18:07:55
4.5K0
修改2021-09-07 18:07:55
举报
文章被收录于专栏:TidbTidb

**导读**

> 作者:杨漆

> 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秒,效率得到极大的提升!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档