php
申请MySQL
有时会变慢。当我重新启动mysql服务时,它工作正常。
以下是我在my.cnf
文件中执行的一些关键配置:
skip-external-locking
skip-name-resolve
我也启用并检查了slow query logs
。那里没有任何东西,因为它是断断续续的问题。
所有用户都与服务器IP地址相关联。
MySQL Tunner建议:
--------绩效指标------------------------------------- -----
[ - ] Up:19h 23m 22s(5K q [0.072 qps],1K conn,TX:2M,RX:606K)
[ - ]读/写:99%/ 1%
[ - ]禁用二进制日志记录
[ - ]总缓冲区:1.1G全局+每线程2.7M(最多5000个线程)
[确定]最大内存使用量:1.1G(已安装RAM的32.15%)
[!!]最大内存使用量:14.2G(已安装RAM的422.17%)
[确定]慢查询:0%(0 / 5K)
[确定]可用连接的最高使用率:0%(4/5000)
[!!]中止连接:4.72%(89/1886)
[!!]禁用查询缓存
[确定]需要临时表的排序:0%(0个临时排序/ 92个排序)
[!!]在磁盘上创建的临时表:70%(磁盘上608 /总计868)
[确定]线程缓存命中率:99%(4个创建/ 1K连接)
[确定]表缓存命中率:95%(166开/ 173开)
[确定]使用的打开文件限制:0%(76 / 25K)
[确定]立即获得表锁:100%(2K立即/ 2K锁)
如果您需要更多信息以解决此问题,请与我们联系。
答案 0 :(得分:0)
先检查Mysql Log
也许你有75%的系统等待,很可能是由于大量交换。
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
确保根据您的硬件http://dev.mysql.com/doc/refman/5.5/en/option-files.html
优化MySQL服务器配置文件选项确保在创建表结构时使用优化数据类型例如"注释" fields的大小为256个字符,使用类型为VARCHAR(256)的字段将其回复给MYSQL,而不是使用TEXT。查询会更快。
答案 1 :(得分:0)
此:
[--] Total buffers: 1.1G global + 2.7M per thread (5000 max threads)
与此相关:
[!!] Maximum possible memory usage: 14.2G (422.17% of installed RAM)
这是不好的,因为一旦你开始使用比系统中可用的RAM更多的内存,你就会开始交换到磁盘,性能将会突然显现 。
永远没有充分的理由:
[!!] Query cache is disabled
检查内存使用情况可能有助于解决此问题:
[!!] Temporary tables created on disk: 70% (608 on disk / 868 total)
答案 2 :(得分:0)
使用INNODB时,整体DBMS性能取决于很多配置(在my.ini中),调整它们是一项实验性工作,它依赖于从物理功能到表索引到连接甚至排序查询的各种因素。登记/>
一般来说,我猜最重要的INNODB配置属性是innodb_buffer_pool_size
与MyISAM不同,InnoDB使用缓冲池来缓存索引和行数据。设置得越大,访问表中数据所需的磁盘I / O就越少。在专用数据库服务器上,您可以将此参数设置为机器物理内存大小的80%。但是,请不要将其设置得太大,因为物理内存的竞争可能会导致操作系统中的分页。
如果您的数据库最近成长并且innodb_buffer_pool_size
很小,那么这将是第一个怀疑点。当然,更改此属性(通常使用其他一些参数,例如innodb_log_file_size
)会很麻烦,因为您必须转储并恢复所有数据。
如果它不起作用,那么你应该考虑其他可能性,这不是一件简单的事情。
答案 3 :(得分:0)
max_connections = 100 - 不是5000
long_query_time = 1 - 使慢速日志更有用
保持慢速日志
关闭查询缓存
(磁盘上608 /总计868) - >看看慢日志
使用pt-query-digest查找最差的'查询。