如何优化 MySQL 服务器以同时运行多个查询

如何优化 MySQL 服务器以同时运行多个查询

我对服务器还不熟悉,我有一台托管服务器,规格为双核 CPU、4GB RAM、500GB HDD。

我使用 OS Centos 5 64bit、Kloxo Panel、Apache Web Server 和 MySQL 服务器。

我有一个问题,MySQL 服务经常会突然死机,特别是当我尝试同时执行多达 10-20 次 mysql_query 命令时,但我只看到未使用的 RAM 内存 <512MB,剩余 3GB 的状态。我如何优化我的 MySQL 服务器以便能够执行大量查询和顺序查询,例如 100 个查询。请帮忙。谢谢

答案1

您的问题几乎缺乏细节,但这是关于 MySQL 的一般想法。

  • 如果您的表是 MyISAM 格式,那么混合长时间运行的 SELECT 和大量写入活动的工作负载肯定会损坏您的 MySQL 服务器。或者,至少,使其运行速度非常慢。

  • “如何微调 MySQL” 是完全不同的难题,它涉及不同类型的工作负载。您是否有大量的短期连接/查询,例如每秒数千个选择查询,但表结构非常简单且索引制作精良?或者查询和同时连接并不多,但选择非常繁重且复杂?优化这些需要完全不同的设置。

  • 缺少适当的索引通常是 MySQL 行为不当的原因。您确定已设置所有必要的索引吗?

  • MySQL 工作台在排除 MySQL 故障时,它可以成为非常有用的工具。运行它,看看哪些查询会长时间卡住。当然,启用 MySQL 慢查询日志和使用 也是很方便的mysqltuner

  • 对于面向写入的工作负载,MySQL 查询缓存有时会造成危害。对于随机 SELECT,它不会有太大帮助,而且一直重建无效的缓存只会造成另一个无用的性能损失。

  • 在应用程序级别memcached可以为您提供很大帮助,因为它大大减轻了您的数据库服务器负载。

答案2

通常,您应该在基本层面采取两个步骤;

  1. 优化查询结构以充分利用索引、缓存和 mysql 功能
  2. 配置 MySQL 以针对您的数据和查询类型进行最佳优化。

通过这两个步骤,可以与花一些时间上网阅读有关查询优化和调整 mysql 性能的信息相比。

但是对于 1 和 2,你可以使用Percona 工具包为您提供如何改善当前情况的建议。首先,请确保您已启用“慢速查询日志”,如下/etc/my.cnf所示;

# Here you can see queries with especially long duration
log_slow_queries        = /var/lib/mysql/slow.log

然后,您可以检查/var/lib/mysql/slow.log文件中是否存在特别糟糕的查询,如下所示;

 pt-query-advisor /path/to/slow-query.log

这将提供有关优化服务器上​​的慢查询的非​​常详细的输出。您还可以使用pt-变量顾问查看您可能需要更改的任何设置以提高服务器速度。

相关内容