【发布时间】:2015-03-22 16:48:38
【问题描述】:
我的任务是用随机数据填充 MySql 数据库中的几个 InnoDB 表以进行一些性能评估(目标是每个表 500GB)。
我在这两个表上都放置了分区(每个 31 个,平均分布)。在每个表中生成大约 40 GB 数据后,现在我的插入卡在每秒大约 150 次插入和表中。我相信我在服务器上的配置(120GB RAM,40 核 CPU 3GHz 每个,SDA 磁盘),我应该能够插入更多。
这些表上有很多索引会减慢速度。
我通过以下方式使用 Ruby 脚本:
- 在每个查询中插入具有多个值的查询
- 将数据写入文件而不是进行加载数据输入文件查询
- 这两种情况的混合,每个插入查询有 100-300 个值,load-data-infile 文件中有 3000 行。
使用上述脚本的多个实例也不会增加表中每秒的插入次数。
以下是数据库中的关键配置:
bulk_insert_buffer_size : 1G
innodb_buffer_pool_size : 75G
innodb_flush_log_at_trx_commit : 2
innodb_doublewrite : OFF
tx_isolation : READ-UNCOMMITTED
foreign_key_checks : OFF
unique_checks : OFF
请告诉我,我可以做些什么来增加插入,因为我相信 MySql 可以处理的远不止这些。我已经浏览了其他相关的帖子,并根据这些进行了上述操作。
【问题讨论】:
-
你能发布你的表格方案吗?