首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL变慢了

MySQL变慢了
EN

Stack Overflow用户
提问于 2015-12-01 17:49:34
回答 4查看 1.4K关注 0票数 0

php应用程序中,MySQL有时会变慢。当我重新启动mysql服务时,它就可以正常工作了。

下面是我在my.cnf文件中所做的一些关键配置:

代码语言:javascript
复制
skip-external-locking
skip-name-resolve

我还启用并检查了slow query logs。里面什么也没有,因为这是间歇性的问题。

所有用户都与服务器IP地址相关联。

MySQL Tunner建议:

-上升时间:19h23m22s (5K q 0.072 qps,1K conn,TX: 2M,RX: 606 K)

-读写: 99% / 1%

-禁用二进制日志记录

-总缓冲区: 1.1G全局+ 2.7M /线程(5000个最大线程)

最大内存使用量: 1.1G (占已安装RAM的32.15%)

!!最大可能内存使用量: 14.2G (已安装内存的422.17%)

确定慢速查询: 0% (0/5K)

可用连接的最高使用率: 0% (4/5000)

!!中断连接: 4.72% (89/1886)

!!查询缓存被禁用。

需要临时表的OK排序: 0% (0 temp排序/ 92排序)

!!在磁盘上创建的临时表: 70% (磁盘上608个/ 868个总表)

线程缓存命中率: 99% (创建4个/ 1K连接)

表缓存命中率: 95% (166个打开/173个打开)

确定打开文件限制: 0% (76/25K)

立即获得表锁: 100% (2K立即/ 2K锁)

如果你需要更多的信息来解决这个问题,请告诉我。

EN

回答 4

Stack Overflow用户

发布于 2015-12-01 17:57:18

先检查Mysql日志

也许你在75%的系统等待,很可能是因为大量的交换。

  1. 使用mysqltuner.pl查找影响内存使用的变量
  2. 在顶部按"m“键,看看是什么吃了内存
  3. 使用免费-m查看缓存了多少
  4. 使用iotop看谁在吃IO

EXPLAIN扩展命令在您不知道发生了什么时显示有关查询的详细信息,http://dev.mysql.com/doc/refman/5.0/en/explain-extended.html

利用查询缓存http://dev.mysql.com/doc/refman/5.1/en/query-cache-configuration.html

确保您的MySQL服务器配置文件选项根据硬件http://dev.mysql.com/doc/refman/5.5/en/option-files.html进行优化。

确保在创建表结构时使用优化的数据类型--例如,“注释”字段的大小为256个字符,使用VARCHAR( 256 )类型的字段将其回复到MYSQL,而不是使用文本。查询将更快。

票数 0
EN

Stack Overflow用户

发布于 2015-12-01 18:02:45

这是:

代码语言:javascript
复制
[--] Total buffers: 1.1G global + 2.7M per thread (5000 max threads)

与此有关:

代码语言:javascript
复制
[!!] Maximum possible memory usage: 14.2G (422.17% of installed RAM)

这很糟糕,因为一旦您开始使用比系统中可用的RAM更多的内存,您就开始切换到磁盘上,性能将急剧下降。

这是没有好的理由的,从来没有:

代码语言:javascript
复制
[!!] Query cache is disabled

检查您的内存使用情况可能有助于解决以下问题:

代码语言:javascript
复制
[!!] Temporary tables created on disk: 70% (608 on disk / 868 total)
票数 0
EN

Stack Overflow用户

发布于 2015-12-01 19:17:07

在使用INNODB时,DBMS的总体性能取决于许多配置(在my.ini中),而优化它们是一项实验性工作,它取决于各种各样的因素,从物理功能到表索引,再到连接查询,甚至排序查询。

一般来说,我想最重要的INNODB配置属性是innodb_buffer_pool_size

InnoDB与MyISAM不同,它使用缓冲池缓存索引和行数据。设置的越大,访问表中的数据所需的磁盘I/O就越少。在专用数据库服务器上,可以将此参数设置为机器物理内存大小的80%。但是,不要将其设置得太大,因为物理内存的竞争可能会导致操作系统中的分页。

如果您的数据库最近增长了,并且innodb_buffer_pool_size很小,那么它将是第一个疑点。当然,更改此属性(通常使用一些其他参数,如innodb_log_file_size)是一件很痛苦的事情,因为您必须转储和恢复所有数据。

如果它不起作用,那么您应该考虑其他可能性,这不是一件简单的事情。

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

https://stackoverflow.com/questions/34026781

复制
相关文章

相似问题

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