Mysql在大数据上的搜索性能

时间:2013-10-15 15:16:33

标签: mysql database search amazon-web-services amazon-rds

我的应用程序在Amazon云上运行,但在使用mysql作为核心时我遇到了问题。该应用程序将成为电子邮件的存档。

Mysql将保留电子邮件的元数据如下(在Amazon RDS数据库中)

- emails
 id (int)
 account_id (int)
 subject (varchar(255))
 date (datetime)
 fingerprint (varchar(64))
 subject (text)
 messagetext (longtext)

完整的EML文件存储在Amazon S3上,可以在电子邮件表的id字段之后找到。一切都很好,但我很快就遇到了性能问题。每个帐户可以容易地发送10到20万封电子邮件,而且我需要在此数据库中连接大约2到3千个帐户。我存储电子邮件的元数据,以便可以搜索。

即使在中型数据库实例(多个a-z,http://aws.amazon.com/rds/)上,在(2百万个记录)中有大约200个帐户后,我的(大)性能也会下降。即使是简单的选择(有限制)也会运行得更慢。此外,插入和更新需要更长的时间。

索引大小约为500MB,总表大小约为9GB。

像亚马逊云搜索这样的替代品看起来很昂贵(每GB 0.98美元+每1k批量上传0.1美元(最多5MB))。 Amazon RDS的优势在于可以轻松创建可靠的数据库(备份,多a-z)。

- 示例查询(但即使是第一个查询也要慢一点,而不是几个ms):

"SELECT * FROM emails WHERE id = '10' LIMIT 1;"

"SELECT COUNT(*) FROM emails WHERE account_id = '5' LIMIT 1;"

"SELECT id, subject FROM emails WHERE subject LIKE '%query%' LIMIT 10;"

0 个答案:

没有答案