我使用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
他们的自述说:“没有报告尚未..这只是啄创建的数据。”
该索引创建,加快计数方法。
@widget.impressionist_count
@widget.impressionist_count(:start_date=>"2011-01-01",:end_date=>"2011-01-05")
它应该是安全地删除索引,你不要在你的应用程序在这些方法中使用的所有字段。
( 注意:这个答案是从阅读他们的源代码了几分钟我没有使用过的宝石。)
你可以寻找重复的索引手动或使用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/