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

我还是新来的服务器,我有一个托pipe服务器,规格双内核CPU,4GB内存,500GB硬盘。

我使用OS Centos 5 64bit,Kloxo Panel,Apache Web Server&MySQL sevrer。

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

通常,你应该在基础水平上采取2个步骤;

  1. 优化您的查询结构,以最好地利用索引,caching和MySQLfunction
  2. configurationMySQL以最佳地优化您的数据和查询types。

通过这两个步骤,几乎没有什么比较花费一些时间去网上阅读有关查询优化和调整MySQL性能。

但是,对于1和2,您都可以使用Percona工具包来为您提供有关如何改善当前情况的build议。 首先确保你启用了/etc/my.cnf的“SLOW Query log”,

 # 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-variable-advisor查看您可能需要更改的任何设置,以提高服务器速度。

你的问题几乎没有细节,但这里是关于MySQL的一般思路。

  • 如果你的表格是MyISAM格式,那么混合了长时间运行的SELECT和大量的写入活动的工作负载肯定会杀死你的MySQL服务器。 或者,至less,使它看起来很慢。

  • “如何微调MySQL”是一个完全不同的野兽与不同types的工作量。 你有很多很多的短命的连接/查询,例如每秒数千个select查询,但是具有非常简单的表结构和良好的索引? 还是没有那么多的查询和同时连接,但非常繁重和复杂的select? 为这些优化需要完全不同的设置。

  • 缺乏适当的索引往往是MySQL不当行为的原因。 你确定你有所有必要的索引吗?

  • MySQL Workbench在诊断MySQL时可能是一个非常有用的工具。 让它运行,看看什么查询卡住长时间。 另外,当然,MySQL慢查询日志是一个方便的事情,所以使用mysqltuner

  • 使用面向书写的工作负载MySQL查询caching有时可能是有害的。 只是随机select,它不会帮助很大,一直重build无效caching只是另一个无用的性能命中。

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