如何确定我是否可以从印象表中删除一些索引(How do I determine if I can d

2019-10-21 14:23发布

我使用on Rails的基于网站的红宝石印象派宝石。 我们的数据库是MySQL的。 印象表是在2M左右的记录,这应该不成问题了MySQL的。 表的大小是800M,其已开始征税,我们的服务器。 表中的数据大小是200M和索引大小是600M。 大部分的指标是由宝石预定义。 有没有办法找出如果这些指标正在被使用,也可以删除吗?

1310855040 controlleraction_session_index

1310855040 controlleraction_ip_index

1310855040 controlleraction_request_index

--880,757,504 poly_request_index

--880,757,504 impressionable_type_message_index

--880,757,504 poly_session_index

--880,757,504 poly_ip_index

----- 6854144 PRIMARY

Answer 1:

他们的自述说:“没有报告尚未..这只是啄创建的数据。”

该索引创建,加快计数方法。

@widget.impressionist_count
@widget.impressionist_count(:start_date=>"2011-01-01",:end_date=>"2011-01-05")

它应该是安全地删除索引,你不要在你的应用程序在这些方法中使用的所有字段。

注意:这个答案是从阅读他们的源代码了几分钟我没有使用过的宝石。)



Answer 2:

你可以寻找重复的索引手动或使用Percona的工具(顺便说一下,该工具的文档解释了重复的指标是什么。

http://www.percona.com/doc/percona-toolkit/2.2/pt-duplicate-key-checker.html

如果你确定一个指标是可以重复DROP它没有不良影响。

除了比,你需要分析你的查询负载,并找出你的查询是否不使用所有的索引。 这是真正艰苦的工作。 你可以通过打开MySQL的一般查询日志的一两天,或者生产高峰小时开始。 然后,你可以分析日志的查询。 例如,你可以使用EXPLAIN上五十强最频繁的查询,看到正在使用的索引。

如果丢弃某些指标,则需要密切关注你的系统性能之后; 你可能已经错过了一些重要的,你需要改造他们。

但看看:我们在这里谈论不到一美元的价值的磁盘空间。 也许$ 5,如果你正在使用昂贵的固态磁盘驱动器。 如果MySQL正在放缓,因为这些表的大小下来,花你的时间调整它,而不是试图挽救两个磁盘上的表空间的千兆字节。 也许你需要调整内部RAM缓冲区的大小,甚至添加索引,或者一些这样的事情。

这里是做一些好材料。 http://www.percona.com/blog/2014/01/28/10-mysql-settings-to-tune-after-installation/



文章来源: How do I determine if I can delete some indexes from the impressions table