MySQL中有很多的基本命令,show命令也是其中之一,在很多使用者中对show命令的使用还容易产生混淆,本文汇集了show命令的众多用法。

a. show tables或show tables from database_name; -- 显示当前数据库中所有表的名称
b. show databases; -- 显示mysql中所有数据库的名称
c. show columns from table_name from database_name; 或show columns from database_name.table_name; -- 显示表中列名称
d. show grants for user_name; -- 显示一个用户的权限,显示结果类似于grant 命令
e. show index from table_name; -- 显示表的索引
f. show status; -- 显示一些系统特定资源的信息,例如,正在运行的线程数量
g. show variables; -- 显示系统变量的名称和值
h. show processlist; -- 显示系统中正在运行的所有进程,也就是当前正在执行的查询。大多数用户可以查看他们自己的进程,但是如果他们拥有process权限,就可以查看所有人的进程,包括密码。
i. show table status; -- 显示当前使用或者指定的database中的每个表的信息。信息包括表类型和表的最新更新时间
j. show privileges; -- 显示服务器所支持的不同权限
k. show create database database_name; -- 显示create database 语句是否能够创建指定的数据库
l. show create table table_name; -- 显示create database 语句是否能够创建指定的数据库
m. show engies; -- 显示安装以后可用的存储引擎和默认引擎。
n. show innodb status; -- 显示innoDB存储引擎的状态
o. show logs; -- 显示BDB存储引擎的日志
p. show warnings; -- 显示最后一个执行的语句所产生的错误、警告和通知
q. show errors; -- 只显示最后一个执行语句所产生的错误
r. show [storage] engines; --显示安装后的可用存储引擎和默认引擎
s. show procedure status --显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等
t. show create procedure sp_name --显示某一个存储过程的详细信息

示例:

1 显示该数据库连接使用的字符集的情况

SHOW VARIABLES LIKE '%char%';

Variable_name Value
------------------------ ---------------------------------------------------------
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server utf8
character_set_system utf8
character_sets_dir C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\

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

show global status;

3 连接数

SHOW VARIABLES LIKE 'max_connections';  
Variable_name VALUE
--------------- --------
max_connections 151

SHOW GLOBAL STATUS LIKE 'max_used_connections';
Variable_name VALUE
-------------------- --------
Max_used_connections 3

如果设置的最大连接数是500,而响应的连接数是498 
max_used_connections / max_connections * 100% = 99.6% (理想值 ≈ 85%)

4 key_buffer_size 
key_buffer_size是对MyISAM表性能影响最大的一个参数, 不过数据库中多为Innodb

SHOW VARIABLES LIKE 'key_buffer_size';
SHOW GLOBAL STATUS LIKE 'key_read%';
SHOW GLOBAL STATUS LIKE 'key_blocks_u%';
//Key_blocks_unused表示未使用的缓存簇(blocks)数,Key_blocks_used表示曾经用到的最大的blocks数
//Key_blocks_used / (Key_blocks_unused + Key_blocks_used) * 100% ≈ 18% (理想值 ≈ 80%)
//max_used_connections / max_connections * 100% = 99.6% (理想值 ≈ 85%)

5 open table 的情况

SHOW GLOBAL STATUS LIKE 'open%tables%';

Variable_name Value
------------- --------
Open_tables 236
Opened_tables 1900

Open_tables 表示打开表的数量,Opened_tables表示打开过的表数量,如果Opened_tables数量过大,说明配置中 table_cache(5.1.3之后这个值叫做table_open_cache)值可能太小,我们查询一下服务器table_cache值

show variables like 'table_cache';

Open_tables / Opened_tables * 100% =69% 理想值 (>= 85%) 
Open_tables / table_cache * 100% = 100% 理想值 (<= 95%)

6 进程使用情况

SHOW GLOBAL STATUS LIKE 'Thread%';

Variable_name Value
----------------- --------
Threads_cached 1
Threads_connected 2
Threads_created 3
Threads_running 1

如果我们在MySQL服务器配置文件中设置了thread_cache_size,当客户端断开之后,服务器处理此客户的线程将会缓存起来以响应 下一个客户而不是销毁(前提是缓存数未达上限)。Threads_created表示创建过的线程数,如果发现Threads_created值过大的 话,表明 MySQL服务器一直在创建线程,这也是比较耗资源,可以适当增加配置文件中thread_cache_size值,查询服务器 thread_cache_size配置:

SHOW VARIABLES LIKE 'query_cache%';

Variable_name Value
---------------------------- ---------
query_cache_limit 1048576
query_cache_min_res_unit 4096
query_cache_size 0
query_cache_type OFF
query_cache_wlock_invalidate OFF

各字段的解释:

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%,命中率很差,可能写操作比较频繁吧,而且可能有些碎片。

7 文件打开数(open_files)

SHOW GLOBAL STATUS LIKE 'open_files';
SHOW VARIABLES LIKE 'open_files_limit';

比较合适的设置:Open_files / open_files_limit * 100% <= 75%

8 表锁情况

show global status like 'table_locks%';

Table_locks_immediate 表示立即释放表锁数,Table_locks_waited表示需要等待的表锁数,如果 Table_locks_immediate / Table_locks_waited > 5000,最好采用InnoDB引擎,因为InnoDB是行锁而MyISAM是表锁,对于高并发写入的应用InnoDB效果会好些.

9、 表扫描情况

SHOW GLOBAL STATUS LIKE 'handler_read%';

Variable_name Value
--------------------- --------
Handler_read_first 40
Handler_read_key 108
Handler_read_last 0
Handler_read_next 161
Handler_read_prev 0
Handler_read_rnd 15
Handler_read_rnd_next 25915

计算表扫描率:

表扫描率 = Handler_read_rnd_next / Com_select

如果表扫描率超过4000,说明进行了太多表扫描,很有可能索引没有建好,增加read_buffer_size值会有一些好处,但最好不要超过8MB。

正常

转载于:https://www.cnblogs.com/dusongshell/p/5434392.html

Mysql中show命令详解相关推荐

  1. Mysql 中source命令详解

    Mysql source命令 1.用法 mysql> source C:\Users\enmonster\Downloads\sakila-db\sakila-schema.sql Query ...

  2. mysql中top命令详解_top命令详解

    top命令经常用来监控linux的系统状况,比如cpu.内存的使用. shell> top top - 14:36:26 up 500 days, 22:51, 2 users, load av ...

  3. MySQL中EXPLAIN命令详解

    EXPLAIN显示了MySQL如何使用索引来处理SELECT语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. 使用方法,在select语句前加上EXPLAIN就可以了: 如: EXPLA ...

  4. mysql查询优化explain命令详解

    转载自 mysql查询优化explain命令详解 mysql查询优化的方法有很多种,explain是工作当中用的比较多的一种检查方式.explain翻译即解释,就是看mysql语句的查询解释计划,从解 ...

  5. 转:mysql show processlist命令 详解

    转:mysql show processlist命令 详解 processlist 命令的输出结果显示了有哪些线程在运行,可以帮助识别出有问题的查询语句,两种方式使用这个命令. 1.        进 ...

  6. MySQL 数据库 source 命令详解及实例

    MySQL 数据库 source 命令详解及实例 MySQL 数据库 source 命令,该命令是数据库导入命令.source 命令的用法非常简单,首先你需要进入 MySQL 数据库的命令行管理界面, ...

  7. MySQL操作mysqldump命令详解

    MySQL操作mysqldump命令详解 基本命令: # 数据库备份-->mysqldump命令默认做锁表操作 mysqldump -uroot -ppassword --all-databas ...

  8. MySQL调试--explain命令详解

    原文网址:MySQL调试--explain命令详解_IT利刃出鞘的博客-CSDN博客 简介 本文介绍MySQL的explain命令的用法及其结果的含义. explain作用 概述 在 SELECT 语 ...

  9. Linux中iptraf命令详解(IP局域网监控工具)

    2019独角兽企业重金招聘Python工程师标准>>> Linux中iptraf命令详解(IP局域网监控工具) 发布时间:2017-12-27 20:46:03   作者:佚名    ...

最新文章

  1. GPU端吊打RegNet、EfficientNet的强悍担当:GENet
  2. python1到1000的质数_python求第1000个质数值的简单示例
  3. 做毕设时遇到的一些问题,以及一些小技巧
  4. python web cgi
  5. python提取图片gps坐标_用python从.docx文件中提取GPS坐标
  6. STM32端口复用和端口重映射
  7. 鬼吹灯-漫谈大型网站的架构
  8. Go 面向对象编程(译)
  9. C#软件授权、注册、加密、解密模块源码解析并制作注册机生成license
  10. redis主从复制_Redis 的主从复制(Master/Slave)
  11. mylyn提交到JIRA的日期格式错误
  12. php联合查询的前提条件,PHP生成HTML前提条件及原理介绍_PHP教程
  13. 《操作系统真象还原》——导读
  14. 绘本“深阅读’’的教学探索
  15. 独立思考,提高效率,做更有意义的事
  16. KEIL、uVision、RealView、MDK、KEIL C51区别比较
  17. Docker部署renren-fast人人开源后台项目
  18. Python将py文件转换为pyd文件
  19. HTML CSS JS 特殊字符编码表
  20. 爬虫—dy直播各个类别下直播数据

热门文章

  1. 解密初、中、高级程序员的进化之路(前端)
  2. 10个JavaScript代码片段,帮助你成为更好的开发者
  3. egg 编码规范_从 Egg.js 到 NestJS,爱码客后端选型之路
  4. 一阶系统开环传递函数表达式_自控原理之系统辨识--入门介绍
  5. el table 固定表头和首行_vue表格实现固定表头首列
  6. Redmine 126邮件服务器的配置
  7. 错误集合_20220131
  8. 十面阿里Java程序员终拿下阿里P6offer
  9. 更好地使用 ViewController
  10. 无插件,跨平台,基于WebGL的三维地球来了!!!