mysql很慢而且崩溃了!需要关于优化的建议

时间:2012-12-12 10:17:19

标签: mysql database optimization database-performance

几个月前我推出了一个网站,因为并发用户的数量增加,我注意到我的服务器运行缓慢,有时mysql导致服务器崩溃(约7000个并发用户)!

我有一个功能强大的服务器,32GB内存和一个专用于1个网站的至强四核CPU,编程也很整洁,在数据库方面没什么特别的...只是一些简单的表,没有触发器,没有复杂的关系。

你们可以提出一些我可以做些什么来改善mysql性能或用它替换它吗?我希望你有一些相同的经验和案例研究。

更新其中一个会降低性能的表是我收集和比较用户IP的地方,因此如果IP是新的,我会在此表上添加新记录并存储用户IP。 ..我觉得我做错了...所以我愿意接受建设性的批评:-在这张表中添加索引甚至是好的,考虑到我插入很多(但不常见,因为我在其中使用搜索... )?

3 个答案:

答案 0 :(得分:2)

问题有点模糊,因为这是您遇到的一般性问题,但是您可以采取一些步骤来确定问题的根本原因。

配置硬件:

检查您的cpu,内存和磁盘io统计信息以消除硬件问题。特别是高磁盘IO会导致严重的性能问题。有几篇关于如何分析硬件的文章。 go go go for your platform。

描述SQL查询:

在MySQL服务器上启用慢速查询日志,请查看此链接以获取更多信息:http://dev.mysql.com/doc/refman/5.1/en/slow-query-log.html

确定运行时间最长的查询并对这些查询执行EXPLAIN语句。如果发现大多数查询速度很慢,则SELECT / read类型语句可能会丢失索引。如果您发现UPDATE / INSERT / DELETE(写入)导致问题,则可能包含太多索引,或者您在磁盘上遇到IO瓶颈。

请记住此规则:添加更多索引会降低插入/删除/更新的速度并加快选择。

最重要的是,您需要对服务器和数据库进行概要分析,以确定需要进行更改的位置以提高性能和可伸缩性。一旦确定了问题区域,就可以采取更具体的措施。

如果您需要根据调查结果优化服务器,请告知我们。

答案 1 :(得分:0)

将索引添加到数据库的表中。如果表是基于id的,那么使该列成为记录的唯一索引。这会有所帮助!

答案 2 :(得分:0)

查看explain。它将指示您需要哪些索引。