我有 15 个 Amazon AWS EC2 t1.micro inctances,它们同时使用大数据INSERTs
(查询中的 40000 行)填充 Amazon RDS MySQL d2.m2.xlarge 数据库。
查询是连续发送的。该表是 INNODB,两个 INT 列,两列都有索引。RDS实例在接收数据时CPU使用率约为30%。
当我有一个 EC2 实例时,速度比我同时运行 15 个实例要快。而 15 个实例组的工作速度越来越慢,直到速度变得完全不能令人满意。
如何优化此过程的性能?
UPD:我的SHOW CREATE TABLE
结果如下:
CREATE TABLE `UserData` (
`uid` int(11) NOT NULL,
`data` int(11) NOT NULL,
PRIMARY KEY (`uid`,`data`),
KEY `uid` (`uid`),
KEY `data` (`data`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
我需要 2 个索引,因为我需要uid
按data
值获取数据。
INSERT INTO UserData (uid, data) VALUES (1,2),(1,3),(1,10),...
我用 40000(uid,data)
对插入数据。
15 个并行实例在 2 小时内插入约 121 000 000 行,但我确信它可以更快。