首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定是否可以从impressions表中删除某些索引

如何确定是否可以从impressions表中删除某些索引
EN

Stack Overflow用户
提问于 2015-01-09 22:25:06
回答 2查看 97关注 0票数 1

我正在使用印象派宝石的Ruby on Rails的网站。我们的数据库是mysql。impressions表大约有2M条记录,这应该不会对MySql造成问题。表的大小是800M,这开始给我们的服务器带来负担。表的数据大小为200M,索引大小为600M。大多数索引都是由创业板预先定义的。有没有办法确定这些索引中是否有任何索引正在使用或可以删除?

1,310,855,040 controlleraction_session_index

1,310,855,040 controlleraction_ip_index

1,310,855,040 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

-6,854,144主要

EN

回答 2

Stack Overflow用户

发布于 2015-01-09 22:33:19

他们的自述文件说:“还没有报告……这个东西只是创建了数据。”

创建索引是为了加快count方法的速度。

代码语言:javascript
复制
@widget.impressionist_count
@widget.impressionist_count(:start_date=>"2011-01-01",:end_date=>"2011-01-05")

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

(注意:这个答案是通过阅读他们的源代码几分钟得到的。我还没用过宝石)

票数 1
EN

Stack Overflow用户

发布于 2015-01-09 22:46:40

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

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

如果您确定某个索引是重复的,则可以对其执行DROP操作,而不会产生不良影响。

除此之外,您还需要分析查询负载,并找出查询是否没有使用所有索引。那真的是很难的工作。您可以从打开MySQL常规查询日志一天或两天,或高峰生产小时开始。然后,您可以分析日志中的查询。例如,您可以对前50个最频繁的查询使用EXPLAIN,并查看使用了哪些索引。

如果您确实删除了某些索引,则需要在以后密切关注您的系统性能;您可能遗漏了一些重要的内容,并且需要重新创建它们。

但是,看:我们这里讨论的磁盘空间不足一美元,如果您使用昂贵的固态硬盘驱动器,可能需要5美元。如果MySQL因为这些表的大小而变慢,那么花时间调优它,而不是尝试节省2 of的磁盘上表空间。也许您需要调整内部RAM缓冲区的大小,甚至添加一个索引,或者诸如此类的事情。

这里有一些关于如何做到这一点的好材料。http://www.percona.com/blog/2014/01/28/10-mysql-settings-to-tune-after-installation/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27862701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档