0

我有 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 个索引,因为我需要uiddata值获取数据。

INSERT INTO UserData (uid, data) VALUES (1,2),(1,3),(1,10),...我用 40000(uid,data)对插入数据。

15 个并行实例在 2 小时内插入约 121 000 000 行,但我确信它可以更快。

4

1 回答 1

0

我可以感觉到这些领域的问题:

第 1 点)t1.micro 是突发实例,通常适用于尖峰计算工作负载。由于您提到您将持续使用它进行数据库查询/事务,因此它可能会降低整体性能。请将实例类型更改为更可预测的实例类型。

第 2 点)m2.xlarge 和 t1.micro 具有有限的 NW 带宽容量。如果您与 DB 进行交易/查询的数据量(以 MB/秒为单位)高于 NW 带宽容量,那么您也可以观察到吞吐量降低。想象一下,如果 15 t1.micro 试图以 100MB/sec 的速度推送,它可能超过 t1.micros 和数据库实例类型之间存在的 NW 管道

于 2013-05-13T14:37:14.783 回答