【问题标题】:mysql is slow and crashes ! need suggestion on optimization [closed]mysql很慢而且崩溃!需要优化建议[关闭]
【发布时间】:2012-12-12 18:45:16
【问题描述】:

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

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

你们能建议我可以做些什么来提高 mysql 性能或将其替换为 mysql 吗?我希望您能提供一些相同的经验和案例研究。

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

【问题讨论】:

  • 你给表添加索引了吗?
  • 采用慢速查询并在其上运行解释语句。执行类似 EXPLAIN 'slow query' 之类的操作并将查询和输出粘贴到此处。
  • 哦另一个问题你经常检查这个IP地址然后插入吗?例如,您是否检查每个连接是否有新的 IP 地址?请在这里发布您的表格结构。

标签: mysql database optimization database-performance


【解决方案1】:

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

配置硬件:

检查您的 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 瓶颈。

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 7000 更少,尽管其他网站在一个表中有 500000 行,但它们的工作方式很迷人......
    • 这是一个笼统的陈述,并不属实。添加索引将加快选择/读取查询,但减慢插入/更新/删除/写入查询。另外,如果是硬件问题,例如磁盘队列过多怎么办?磁盘是数据库设计中最容易被忽视的部分,有时也是导致大多数性能问题的原因。
    • 他说以任何方式帮助我改进我的数据库。将索引添加到高度填充的表是必要的!我是一个 jquery、javascript、css 和 HTML 程序员。我在代码中使用的数据表较少,因此知识较少。
    • 我知道添加索引可能会提高读取性能,但对于写入而言,它是性能杀手。如果每次插入都有 5 个表索引,则数据库引擎必须对磁盘执行 6 次写入,其中 1 次用于表,5 次用于索引。相同的原则适用于删除和更新。请记住,索引是与表分离的数据结构,它们自己存储数据,它们不是表的一部分。它们通常是磁盘上的树结构。
    • 是的,您说得对,但是如果网络所有者是明智的,他也会知道可以在基于 id 的结构中创建表,您可以在其中向该列添加唯一索引并更新、删除等。记录变得更快更高效!
    【解决方案3】:

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

    【讨论】:

    • 感谢那个人!我什至不知道,因为我曾经手动为每个表添加索引:) .........
    • EXPLAIN 只会帮助您优化缺少索引的查询。不会神奇地建议将它们添加到表格的哪个位置。
    • 它告诉你查询将如何被处理。即使用了哪些列,因此在哪里放置索引。
    猜你喜欢
    • 1970-01-01
    • 2013-01-02
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-09
    • 1970-01-01
    相关资源
    最近更新 更多