使用索引(Wordpress数据库)在Amazon Aurora上查询速度慢

时间:2016-10-05 11:55:12

标签: mysql wordpress amazon-rds-aurora

我有一个Aurora数据库实例,但有一些性能问题。一个是特别奇怪的。我有一个带有标准wp_options表的WordPress安装。在此表中,我在自动加载列上添加了索引。下面的架构:

CREATE TABLE IF NOT EXISTS `wp_options` (
`option_id` bigint(20) unsigned NOT NULL,
`option_name` varchar(64) NOT NULL DEFAULT '',
`option_value` longtext NOT NULL,
`autoload` varchar(20) NOT NULL DEFAULT 'yes'
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1045503 ;
ALTER TABLE `wp_options` ADD PRIMARY KEY (`option_id`), ADD UNIQUE KEY `option_name` (`option_name`), ADD KEY `index_autoload` (`autoload`);

奇怪的是我在慢速日志中看到了很多这样的查询:     SELECT option_name,option_value FROM wp_options WHERE autoload =' yes'

甚至可能需要一分钟才能运行。我每天都有很多这样的事情。 我唯一的提示是(相对)大量的行,即6602行。 5913行有autoload ='是'

表大小为26.2 MB

2 个答案:

答案 0 :(得分:1)

我很高兴你把垃圾从你的dbms中冲了出来。

您创建的索引无法提供帮助,因为它的基数非常低。该列在典型的WordPress安装中只有两个可能的值。因此,查询规划器可能仍会执行全表扫描并忽略索引。

该特定查询的稍微好一点的索引可能是(autoload, option_name, option_value)。那是covering index。查询可以完全从索引中获得,这可以节省服务器上的一些时间。但可能不是你的情况。

WordPress查询的部分性能影响来自于将数据从DBMS机器传输到WordPress主机所不可避免的时间成本。 DBMS或WordPress方面没有大量的铁可以为此做很多事情。

答案 1 :(得分:0)

问题解决了删除很多行的问题