【发布时间】:2013-05-17 04:03:21
【问题描述】:
我有一个包含 1400 万行的表,我正在尝试对这个表执行全文搜索。对此的查询执行速度非常慢,一个简单的二进制 AND 查询大约需要 9 秒。同样的东西会在我的私有集群上立即执行。该表的大小约为 3.1 GB,包含 1400 万行。有人可以解释 RDS 实例的这种行为吗?
SELECT count(*)
FROM table_name WHERE id=97
AND match(body) against ('+data +big' IN BOOLEAN MODE)
【问题讨论】:
-
你能比较一下两种环境下的执行计划吗?如果不同,请将它们都发布。
-
SELECT Explain在两台机器上显示相同的内容。 -
由于DB版本、表、索引、执行计划都一样,需要对比机器/集群配置。比较要点 可用的 CPU 功率、单个事务中使用的内核、存储读取速度、内存大小和读取速度/频率。我可以看到亚马逊提供了多种配置,所以也许你的私有集群比 Amazon RDS 实例配置强大得多。
-
@Stoleg 我同意我的私有集群比 Amazon RDS 强大得多。我可以看到读取 IOPS 和 CPU 利用率在 RDS 上很快达到了限制,这导致了这个问题。看起来这里唯一的方法是迁移到 EC2 上的 Solr 或类似的东西。因为我已经有一个相当昂贵的 RDS 实例,大小为 500 GB,预置 IOPS 为 2000,每月花费大约 550 美元。
标签: mysql amazon-web-services full-text-search amazon-rds