gpt4 book ai didi

MySQL 数据库优化最佳实践

转载 作者:IT老高 更新时间:2023-10-29 00:02:58 26 4
gpt4 key购买 nike

在处理较大的表(> 50k 条记录,每个表总共大约 100MB)时,优化 MySQL 安装以获得最佳性能的最佳实践是什么?我们目前正在研究重写 DelphiFeeds.com(Delphi 编程社区的新闻网站),并注意到简单的 Update 语句可能需要 50 毫秒。这似乎很多。是否有任何我们应该启用/设置的推荐配置设置,这些设置通常在标准 MySQL 安装中被禁用(例如,利用更多 RAM 来缓存查询和数据等)?

另外,存储引擎的选择对性能有何影响?我们计划使用 InnoDB,但如果出于性能原因推荐使用 MyISAM,我们可能会使用 MyISAM。

最佳答案

“最佳实践”是:

  1. 衡量性能,尽可能隔离相关子系统。
  2. 确定瓶颈的根本原因。你是 I/O 绑定(bind)吗?受 CPU 限制?内存限制?等待锁?
  3. 进行更改以减轻您发现的根本原因。
  4. 再次测量,以证明您已修复瓶颈以及修复了多少
  5. 转到第 2 步并根据需要重复,直到系统运行速度足够快。

http://www.mysqlperformanceblog.com 订阅 RSS 提要并阅读其历史文章。对于与性能相关的智慧,这是一个非常有用的资源。例如,您询问了 InnoDB 与 MyISAM。他们的结论是:InnoDB 的性能平均比 MyISAM 高 30%。尽管也有一些使用场景 MyISAM 优于 InnoDB。

该博客的作者也是@Andrew Barnett 提到的“高性能 MySQL”一书的合著者。


来自 @ʞɔıu 的评论:如何判断您是 I/O 绑定(bind)还是 CPU 绑定(bind)还是内存绑定(bind)取决于平台。操作系统可能会提供 ps、iostat、vmstat 或 top 等工具。或者,如果您的操作系统不提供第三方工具,您可能需要获取第三方工具。

基本上,无论哪个资源的利用率/饱和度固定为 100%,都可能是您的瓶颈。如果您的 CPU 负载很低,但您的 I/O 负载对于您的硬件来说是最大的,那么您就是 I/O 受限的。

但这只是一个数据点。补救措施还可能取决于其他因素。例如,复杂的 SQL 查询可能正在执行文件排序,这会使 I/O 保持繁忙。您应该投入更多/更快的硬件,还是应该重新设计查询以避免文件排序?

有太多因素无法在 StackOverflow 帖子中进行总结,并且有许多关于该主题的书籍这一事实支持了这一点。保持数据库高效运行并充分利用资源是一项需要专业技能和不断学习的全职工作。


Jeff Atwood 刚刚写了一篇关于查找系统瓶颈的精彩博客文章:

关于MySQL 数据库优化最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/579244/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com