Heim >Datenbank >MySQL-Tutorial >MySQL中SHOW STATUS查看运行状况

MySQL中SHOW STATUS查看运行状况

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-07 17:52:501088Durchsuche

在mysql中SHOW STATUS是我们最好的朋友,它可以快速的查看运行状况一些情况,让我们及时对数据库进行优化操作,下面我总结了一些用法。

直接在命令行下登陆MySQL运行SHOW STATUS;

1, 查看MySQL服务器配置信息

 

 代码如下 复制代码
 
mysql> show variables;

2, 查看MySQL服务器运行的各种状态值

 

 代码如下 复制代码
mysql> show global status;

3, 慢查询

 代码如下 复制代码

 
mysql> show variables like '%slow%';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| log_slow_queries | OFF   |
| slow_launch_time | 2     |
+------------------+-------+
mysql> show global status like '%slow%';
+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| Slow_launch_threads | 0     |
| Slow_queries        | 279   |
+---------------------+-------+

配置中关闭了记录慢查询(最好是打开,方便优化),超过2秒即为慢查询,一共有279条慢查询

 

 代码如下 复制代码
SHOW VARIABLES

SHOW VARIABLES是查看MySQL的配置参数,还可以使用类似SHOW VARIABLES LIKE ‘Key%’

 代码如下 复制代码

SHOW PROCESSLIST

SHOW PROCESSLIST是查看当前正在进行的进程,对于有锁表等情况的排查很有用处。一般情况下,打开MySQL的慢查询

记录同样有利于排查。

 代码如下 复制代码

SHOW OPEN TABLES

SHOW OPEN TABLES是显示当前已经被打开的表列表。

mysqladmin status

使用MySQL自带的mysqladmin 工具查看status,使用以下命令

 代码如下 复制代码

mysqladmin -uroot –password=’password’ status

显示的结果如下:

Uptime: 87117 Threads: 1 Questions: 5481626 Slow queries: 16 Opens: 2211 Flush tables: 1 Open tables:

512 Queries per second avg: 62.923

另外可以添加 -i 5 参数,让其每五秒自动刷新之。

 代码如下 复制代码

mysqladmin -uroot –password=’password’ status -i 5

mysqladmin extended-status

同样的可以使用mysqladmin -uroot –password=’password’ extended-status来查看更多的MySQL运行信息,这种

方式和第一种查看的信息基本一样。


分享一些名词说明

query_cache_limit:超过此大小的查询将不缓存
query_cache_min_res_unit:缓存块的最小大小
query_cache_size:查询缓存大小
query_cache_type:缓存类型,决定缓存什么样的查询,示例中表示不缓存 select sql_no_cache 查询
query_cache_wlock_invalidate:当有其他客户端正在对MyISAM表进行写操作时,如果查询在query cache中,是否返

回cache结果还是等写操作完成再读表获取结果。

query_cache_min_res_unit的配置是一柄”双刃剑”,默认是4KB,设置值大对大数据查询有好处,但如果你的查询都

是小数据查询,就容易造成内存碎片和浪费。

查询缓存碎片率 = Qcache_free_blocks / Qcache_total_blocks * 100%

如果查询缓存碎片率超过20%,可以用FLUSH QUERY CACHE整理缓存碎片,或者试试减小query_cache_min_res_unit,

如果你的查询都是小数据量的话。

查询缓存利用率 = (query_cache_size – Qcache_free_memory) / query_cache_size * 100%

查询缓存利用率在25%以下的话说明query_cache_size设置的过大,可适当减小;查询缓存利用率在80%以上而且

Qcache_lowmem_prunes > 50的话说明query_cache_size可能有点小,要不就是碎片太多。

查询缓存命中率 = (Qcache_hits – Qcache_inserts) / Qcache_hits * 100%

示例服务器 查询缓存碎片率 = 20.46%,查询缓存利用率 = 62.26%,查询缓存命中率 = 1.94%,命中率很差,

可能写操作比较频繁吧,而且可能有些碎片。

一些解释

Aborted_clients  由于客户没有正确关闭连接已经死掉,已经放弃的连接数量。
Aborted_connects  尝试已经失败的MySQL伺服器的连接的次数。
Connections  试图连接MySQL伺服器的次数。
Created_tmp_tables  当执行语句时,已经被创造了的隐含临时表的数量。
Delayed_insert_threads  正在使用的延迟插入处理器执行绪的数量。
Delayed_writes  用INSERT DELAYED写入的行数。
Delayed_errors  用INSERT DELAYED写入的发生某些错误(可能重?键值)的行数。
Flush_commands  执行FLUSH命令的次数。
Handler_delete  请求从一张表中删除行的次数。
Handler_read_first  请求读入表中第一行的次数。
Handler_read_key  请求数字基于键读行。
Handler_read_next  请求读入基于一个键的一行的次数。
Handler_read_rnd  请求读入基于一个固定位置的一行的次数。
Handler_update  请求更新表中一行的次数。
Handler_write  请求向表中插入一行的次数。
Key_blocks_used  用于关键字缓存的块的数量。
Key_read_requests  请求从缓存读入一个键值的次数。
Key_reads  从磁碟物理读入一个键值的次数。
Key_write_requests  请求将一个关键字块写入缓存次数。
Key_writes  将一个键值块物理写入磁碟的次数。
Max_used_connections  同时使用的连接的最大数目。
Not_flushed_key_blocks  在键缓存中已经改变但是还没被清空到磁碟上的键块。
Not_flushed_delayed_rows  在INSERT DELAY队列中等待写入的行的数量。
Open_tables  打开表的数量。
Open_files  打开文件的数量。
Open_streams  打开流的数量(主要用于日志记载)
Opened_tables  已经打开的表的数量。
Questions  发往伺服器的查询的数量。
Slow_queries  要花超过long_query_time时间的查询数量。
Threads_connected  当前打开的连接的数量。
Threads_running  不在睡眠的执行绪数量。
Uptime  伺服器工作了多少秒

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn