MySQL 数据库插入速度调整

 由于项目变态需求;需要在一个比较短时间段急剧增加数据库记录(两三天内,由于0增加至4亿)。在整个过程调优过程非常艰辛。

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

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

      2、减少数据库的checkpoint 操作

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

      4、减少系统的IO冲突

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

  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. 将大表转变为独立表空并且进行分区,然后将不同分区下挂在多个不同硬盘阵列中。

 

完成了以上修改操作后;我看到下面幸福结果:

获取测试结果:
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亿数据正常处理。预计数据库瓶颈已经被巧妙解决,结果变成程序“猿”苦逼地向我埋怨,大哥不用这么狠啊。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章