MySQL 数据库插入速度调整

      因为项目变态需求;须要在一个比较短期段急剧增长数据库记录(两三天内,因为0增长至4亿)。在整个过程调优过程很是艰辛。数据库

       MySQL 从最开始的时候 1000条/分钟的插入速度调高至 10000条/秒。 相信你们都已经等急了相关介绍,下面我作调优时候的整个过程。提升数据库插入性能中心思想:服务器

      一、尽可能使数据库一次性写入Data File性能

      二、减小数据库的checkpoint 操做测试

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

      四、减小系统的IO冲突内存

      根据以上四点内容,做为一个业余DBA对MySQL服务进行了下面调整:rem

  1. 修改负责收录记录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 操做;
  2. 将大表转变为独立表空而且进行分区,而后将不一样分区下挂在多个不一样硬盘阵列中。

 

完成了以上修改操做后;我看到下面幸福结果: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亿数据正常处理。预计数据库瓶颈已经被巧妙解决,结果变成程序“猿”苦逼地向我埋怨,大哥不用这么狠啊。扩展

相关文章
相关标签/搜索