首页
学习
活动
专区
圈层
工具
发布

优化MySQL
EN

Database Administration用户
提问于 2012-07-10 16:50:37
回答 3查看 2.8K关注 0票数 3

根据这个职位,看起来我在MySQL优化方面遇到了一些严重的问题。

不幸的是,我不知道从哪里开始!

我正在运行一个基于DirectAdmin的CentOS专用服务器。这是一个英特尔四核3Ghz与8Gb内存。我在上面运行了很多网站,但我相信只有我的主要网站才有真正的流量。

我所关注的网站每周有大约30,000名独特的访问者/25万次点击。这是一个基于WordPress的网站。

我的my.cnf基本上是空的。我增加了max_connections来处理最初的问题(网站不断点击“数据库最大连接”错误,就像前面链接的那样),就是这样。

我尝试在服务器上运行两个脚本来确定如何优化我的设置。其中一个没有起作用,但另一个建议如下:

  • 支持查询缓存,但未启用;也许您应该设置query_cache_size
  • 在连接无法正确使用索引的情况下,您有11025次查询;您应该启用“日志查询--不使用--索引”,然后在慢速查询日志中查找非索引联接。
  • 总共有834个表;528个开放表;当前的table_cache命中率为8%,而您的表缓存中有132%正在使用;您可能应该增加table_cache
  • 您可能应该增加table_definition_cache值。
  • 当前锁等待比=1: 529;您可以从选择性使用InnoDB中获益。
  • 当前max_heap_table_size = 16 M;当前tmp_table_size = 16 M;在107071个临时表中,25%是在磁盘上创建的;也许您应该增加tmp_table_size和/或max_heap_table_size以减少基于磁盘的临时表的数量。
  • 1145245中有1290个超过2.000000秒的时间。完成
  • 当前max_connections = 500;当前threads_connected = 501;您应该提高max_connections

完整的源代码可以找到这里

不幸的是,我真的不知道这做了什么,我也不想盲目地走进它。

有人对优化我的MySQL安装有什么建议吗?

EN

回答 3

Database Administration用户

发布于 2012-07-10 16:55:46

卡西是你的朋友!你能拿的桌子越多,你就越不需要敲硬盘。

您的主要性能问题是,人们访问您的数据库,必须等待硬盘驱动器撤回他们,而不是表在卡什。在大多数情况下,这是可以的,但是当您有多个人连接和退出表时,I/O队列就会开始备份,也就是当您遇到减速时。

票数 0
EN

Database Administration用户

发布于 2012-07-19 14:46:12

我对访问数据的代码更感兴趣。听起来,您的应用程序在处理连接方面做得很糟糕,以至于达到了允许的最大值。

这也可能是因为缺少索引,某些查询执行起来太长了。延迟执行很容易导致500个并发连接。

然而,基于流量的500个并发连接经常发生,听起来像是一个瓶颈(上面提到的这两个问题是最常见的)。

票数 0
EN

Database Administration用户

发布于 2012-07-19 15:32:36

Wordpress没有指定表引擎,因此它将使用默认的或您在my.cnf文件中设置为默认的任何内容。如果您的my.cnf中没有设置,那么您的默认设置将是MyISAM ( MySQL < 5.5 )和InnoDB ( MySQL >= 5.5 )。

一般(但仍然有效)建议: 90%的性能增益(来自调优)将来自于调整默认引擎的索引/分页缓冲区。我推荐阅读:http://www.mysqlperformanceblog.com/2007/11/03/choosing-innodb_缓冲器_池子_大小/

如果您正在运行< MySQL 5.5,则将您的key_buffer提高到80%的空闲内存。如果您正在运行>= MySQL 5.5,则将innodb_buffer_pool提高到空闲内存的80%。

如果您是99%的读取,那么Query_cache将扮演一个角色。类似于:

代码语言:javascript
复制
query_cache_size = 32M
query_cache_type = 1
query_cache_limit= 512K

如果您是平衡的读写,只需关闭查询缓存,因为它会减慢您的速度,因为每次写都会使缓存的查询失效。

代码语言:javascript
复制
query_cache_type = 0

但是,如果您有没有命中索引的查询,则这是一个代码评审问题。您必须权衡添加索引的成本/效益,以加快可能偶尔发生或每秒钟发生的查询。你的分析会说明这个故事的。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/20652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档