-1

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

我有一个强大的服务器,有 32gb 的内存和一个专用于 1 个网站的至强四核 CPU,而且编程简洁轻巧,在 DB 端没有什么特别的......只是一些简单的表,没有触发器,没有复杂的关系.

你们能建议我能做些什么来提高mysql性能或用它来代替它吗?我希望你有一些相同的经验和案例研究。

更新降低性能的表之一是我收集和比较用户 IP 的地方,因此如果 IP 是新的,我会在此表上添加新记录并存储用户 IP ...我觉得我做错了.. .所以我对建设性的批评持开放态度:-D考虑到我在其中插入了很多(但不经常因为我在其中使用搜索......),在这个表中添加索引是否更好?

4

3 回答 3

2

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

配置硬件:

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

分析 SQL 查询:

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

确定运行时间最长的查询并对这些查询执行 EXPLAIN 语句。如果您发现大多数速度较慢的查询是 SELECT/read 类型语句,则您可能缺少索引。如果您发现 UPDATE/INSERT/DELETE(writes) 导致了问题,则可能是索引过多,或者您正面临磁盘上的 IO 瓶颈。

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

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

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

于 2012-12-12T10:31:05.413 回答
0

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

于 2012-12-12T10:19:18.777 回答
0

看看解释。它会告诉您需要哪些索引。

于 2012-12-12T10:22:24.667 回答