因为项目变态需求;须要在一个比较短期段急剧增长数据库记录(两三天内,因为0增长至4亿)。在整个过程调优过程很是艰辛。数据库
MySQL 从最开始的时候 1000条/分钟的插入速度调高至 10000条/秒。 相信你们都已经等急了相关介绍,下面我作调优时候的整个过程。提升数据库插入性能中心思想:服务器
一、尽可能使数据库一次性写入Data File性能
二、减小数据库的checkpoint 操做测试
三、程序上尽可能缓冲数据,进行批量式插入与提交spa
四、减小系统的IO冲突内存
根据以上四点内容,做为一个业余DBA对MySQL服务进行了下面调整:rem
- 修改负责收录记录MySQL服务器配置,提高MySQL总体写速度;具体为下面三个数据库变量值:innodb_autoextend_increment、innodb_log_buffer_size、innodb_log_file_size;此三个变量默认值分别为 5M、8M、8M,根据服务器内存大小与具体使用状况,将此三只分别修改成:128M、16M、128M。同时,也将原来2个 Log File 变动为 8 个Log File。这次修改主要知足第一和第二点,如:增长innodb_autoextend_increment就是为了不因为频繁自动扩展Data File而致使 MySQL 的checkpoint 操做;
- 将大表转变为独立表空而且进行分区,而后将不一样分区下挂在多个不一样硬盘阵列中。
完成了以上修改操做后;我看到下面幸福结果:innodb
获取测试结果:
Query OK, 2500000 rows affected (4 min 4.85 sec)
Records:
2500000
Duplicates: 0 Warnings: 0
Query OK,
2500000
rows affected (4 min 58.89 sec)
Records:
2500000
Duplicates: 0 Warnings: 0
Query OK,
2500000
rows affected (5 min 25.91 sec)
Records:
2500000
Duplicates: 0 Warnings: 0
Query OK,
2500000
rows affected (5 min 22.32 sec)
Records:
2500000
Duplicates: 0 Warnings: 0
最后表的数据量:
+------------+
| count(*) |
+------------+
| 10000000|
+------------+变量
从上面结果来看,数据量增长会对插入性能有必定影响。不过,总体速度仍是很是面议。一天不到时间,就能够完成4亿数据正常处理。预计数据库瓶颈已经被巧妙解决,结果变成程序“猿”苦逼地向我埋怨,大哥不用这么狠啊。扩展