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



几个月前,我推出了一个网站,随着并发用户数量的增加,我注意到我的服务器速度变慢,有时mysql会导致服务器崩溃(大约7000个并发用户)!

我有一个强大的服务器,有32gb的ram和一个xeon四核CPU,专门用于1个网站,而且编程简洁轻便,在DB方面没有什么特别的。。。只是一些简单的表,没有触发器,没有复杂的关系。

你们能建议我做些什么来提高mysql的性能吗?我希望你能给我一些同样的经历和案例研究。

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

这个问题有点模糊,因为这是您正在经历的一个一般问题,但您可以采取一些步骤来确定问题的根本原因。

配置硬件:

检查您的cpu、内存和磁盘io统计信息,以消除硬件问题。磁盘IO过高尤其会导致严重的性能问题。有几篇关于如何评测硬件的文章。去谷歌搜索你的平台。

配置SQL查询:

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

识别运行时间最长的查询,并对这些查询执行EXPLAIN语句。如果发现大多数查询都是SELECT/read类型的语句,那么可能会缺少索引。如果发现UPDATE/INSERT/DELETE(写入)导致了问题,则可能是索引过多,或者磁盘上存在IO瓶颈。

记住这个规则:添加更多索引会减慢插入/删除/更新的速度,加快选择的速度。

最重要的是,您需要对服务器和数据库进行概要分析,以确定需要在哪里进行更改,从而提高性能和可扩展性。一旦你确定了问题领域,你就可以采取更具体的行动。

如果您需要根据您的发现优化服务器的帮助,请告诉我们。

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

查看解释。它将指示您需要什么索引。

最新更新