zoukankan      html  css  js  c++  java
  • MySQL中show语法使用总结

    在 mysql 中执行系统命令

    如何在mysql的命令行界面操作底层系统呢?只需要在mysql命令行界面使用system + linux命令即可。

    命令,如:

    mysql> system pwd
    /root/soft
    mysql> system ls;
    ip-3.1.2                       

    MySQL中 show 语法的使用:

    先查看MySQL版本信息:
    mysql> select version();
    +------------+
    | version()  |
    +------------+
    | 5.6.16-log |
    +------------+
    1 row in set (0.00 sec)

    帮助查看:

    mysql> help show
    mysql> help SHOW TABLE;
    mysql> help SHOW WARNINGS

    1.显示mysql中所有数据库的名称.

    mysql>show databases;
    

    2.显示当前数据库中所有表的名称

    mysql>show tables;
    或
    mysql>show tables from database_name; 
    

    3.显示表中列名称

    mysql>show columns from database_name.table_name;
    

    4.查看某MySQL用户的使用权限

    mysql>show grants for user_name;
    

    5.显示create database 语句是否能够创建指定的数据库,并可以查看到创建库语句的SQL信息。

    mysql>show create database database_name;
    

    6.显示create table 语句是否能够创建指定的数据表,并可以查看到表创建语句的SQL信息。

    mysql>show create table table_name;
    

    7.显示安装以后可用的存储引擎和默认引擎。

    mysql>show engines;
    

    8.显示最后一个执行的语句所产生的错误、警告和通知

    mysql> show warnings; 
    

    9.只显示最后一个执行语句所产生的错误

    mysql>show errors;
    

    10.显示系统中正在运行的所有进程,也就是当前正在执行的查询.

    mysql> show processlistG
    

    11.查看所有存储过程。

    mysql> show procedure status;
    

    12.查看某个存储过程内容

    show create procedure 存储过程名称;
    

    13.查看函数的内容.

    show create function func_name;
    

    ......

    由于这几个show指令的参数太多,这里单独进行解析.

    使用 show status 查看MySQL服务器状态信息.

          有些时候我们需要了解MySQL的服务器状态信息,譬如当前MySQL启动后的运行时间,当前MySQL的客户端会话连接数,当前MySQL服务器执行的慢查询数,当前MySQL执行了多少SELECT语句、执行了多少UPDATE/DELETE/INSERT语句等统计信息,从而便于我们根据当前MySQL服务器的运行状态进行对应的调整或优化工作。

          在MySQL中,我们可以使用SHOW STATUS指令语句来查看MySQL服务器的状态信息。下面,我们以DOS命令窗口的形式连接MySQL,并执行show status;指令,我们将看到如下显示信息:

                ---执行show status指令显示的部分结果---      
    +-----------------------------------------------------------------+--------------------------+
    | Variable_name                                                   | Value                    |
    +-----------------------------------------------------------------+--------------------------+
    | Aborted_clients                                                 | 737         
    | Tokudb_FILESYSTEM_PREAD_NUM                                     | 16                       |
    | Tokudb_FILESYSTEM_PREAD_BYTES                                   | 8192                     |
    | Tokudb_FILESYSTEM_LONG_PREAD_TIME                               | 0                        |
    | Tokudb_FILESYSTEM_LONG_PREAD_NUM                                | 0                        |
    | Uptime                                                          | 2697503                  |
    | Uptime_since_flush_status                                       | 2697503        
    

         当我们执行show status语句时,MySQL将会列出多达300多条的状态信息记录,其中包括了供我们查看了解的各种信息。不过,如果直接使用show status指令得到300多条记录,会让我们看得眼花缭乱,因此我们希望能够按需查看一部分状态信息。这个时候,我们可以在show status语句后加上对应的like子句。

    例如:

    --查询当前MySQL本次启动后的运行统计时间.

    mysql> show status like 'uptime';
    +---------------+---------+
    | Variable_name | Value   |
    +---------------+---------+
    | Uptime        | 2698122 |
    +---------------+---------+
    1 row in set (0.00 sec)
    

    --查询本次MySQL启动后执行的SELECT语句的次数.

    mysql> show status like 'com_select';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | Com_select    | 2     |
    +---------------+-------+
    1 row in set (0.00 sec)
    

          此外,与WHERE子句中的LIKE关键字类似,show status后的LIKE关键字也可以使用'_' 或'%'等通配符来进行模糊匹配。例如我们可以执行如下语句来查看MySQL服务器的线程信息:  

    mysql> show status like 'Thread_%';
    +-------------------------+-------+
    | Variable_name           | Value |
    +-------------------------+-------+
    | Threadpool_idle_threads | 0     |
    | Threadpool_threads      | 0     |
    | Threads_cached          | 11    |
    | Threads_connected       | 1     |
    | Threads_created         | 15    |
    | Threads_rejected        | 0     |
    | Threads_running         | 3     |
    +-------------------------+-------+
    7 rows in set (0.00 sec)
    

          值得注意的是,在上述show status like 'com_select'指令的执行示例中,显示的SELECT语句统计信息仅仅表示当前会话连接执行的SELECT语句数量。因为,show status指令的完整语法如下:

    SHOW [统计范围] STATUS [LIKE '状态项名称']
    --统计范围关键字分为GLOBAL和SESSION(或LOCAL)两种。
    

          在show status的完整语法中,"[]"中的部分是可选的,如果我们的show status语句中不包含统计范围关键字,则默认统计范围为SESSION,也就是只统计当前连接的状态信息。如果我们需要查询自当前MySQL启动后所有连接执行的SELECT语句总数,我们可以执行如下语句: 

    mysql> show global status like 'com_select';
    

    以上即是show status的详细用法。由于show status的状态统计项较多,我们就不再一一解释每个统计项的具体含义,在这里,我们仅列出部分常用的状态信息查看语句: 

    --查看MySQL本次启动后的运行时间(单位:秒)
    show status like 'uptime';
    
    --查看select语句的执行数
    show [global] status like 'com_select';
    
    --查看insert语句的执行数
    show [global] status like 'com_insert';
    
    --查看update语句的执行数
    show [global] status like 'com_update';
    
    --查看delete语句的执行数
    show [global] status like 'com_delete';
    
    --查看试图连接到MySQL(不管是否连接成功)的连接数
    show status like 'connections';
    
    --查看线程缓存内的线程的数量。
    show status like 'threads_cached';
    
    --查看当前打开的连接的数量。
    show status like 'threads_connected';
    
    --查看当前打开的连接的数量。
    show status like 'threads_connected';
    
    --查看创建用来处理连接的线程数。如果Threads_created较大,你可能要增加thread_cache_size值。
    show status like 'threads_created';
    
    --查看激活的(非睡眠状态)线程数。
    show status like 'threads_running';
    
    
    --查看立即获得的表的锁的次数。
    show status like 'table_locks_immediate';
    
    --查看不能立即获得的表的锁的次数。如果该值较高,并且有性能问题,你应首先优化查询,然后拆分表或使用复制。
    show status like 'table_locks_waited';
    
    --查看创建时间超过slow_launch_time秒的线程数。
    show status like 'slow_launch_threads';
    
    --查看查询时间超过long_query_time秒的查询的个数。
    show status like 'slow_queries';

     使用 SHOW INDEX 语法 查看表的索引状态

    语法:

    SHOW INDEX FROM [tb_name]  

    执行后结果如下:

    mysql> SHOW INDEX FROM l_yyG
    *************************** 1. row ***************************
            Table: l_yy
       Non_unique: 0
         Key_name: PRIMARY
     Seq_in_index: 1
      Column_name: id
        Collation: A
      Cardinality: 8556
         Sub_part: NULL
           Packed: NULL
             Null: 
       Index_type: BTREE
          Comment: 
    Index_comment: 
    1 row in set (0.00 sec)
    

    show index 返回字段解析: 

    · Table
    
    表的名称。
    
    · Non_unique
    如果索引不能包括重复词,则为0。如果可以,则为1。
    · Key_name
    
    索引的名称。
    · Seq_in_index
    
    索引中的列序列号,从1开始。
    
    · Column_name
    
    列名称。
    
    · Collation
    列以什么方式存储在索引中。在MySQL中,有值‘A’(升序)或NULL(无分类).
    
    · Cardinality
    
    索引中唯一值的数目的估计值。通过运行ANALYZE TABLE或myisamchk -a可以更新.
    
    · Sub_part
    如果列只是被部分地编入索引,则为被编入索引的字符的数目。如果整列被编入索引,则为NULL。
    
    · Packed
    指示关键字如何被压缩。如果没有被压缩,则为NULL。
    
    · Null
    如果列含有NULL,则含有YES。如果没有,则该列含有NO。
    
    · Index_type
    
    用过的索引方法(BTREE, FULLTEXT, HASH, RTREE)。
    
    · Comment
    多种评注。
    

    show variables用于显示mysql服务器变量。

    mysqld服务维护两种变量。全局变量影响服务器的全局操作。会话变量影响具体客户端连接相关操作。

    通过连接服务器并执行SET GLOBAL var_name语句可以更改动态全局变量。要想更改全局变量,必须具有SUPER权限,重启mysql服务后失效.

    通过SET SESSION var_name语句来更改动态会话变量.但客户可以只更改自己的会话变量,而不更改其它客户的会话变量,退出终端后更改失效.

    SHOW VARIABLES通常结合like使用,具体用法如下:

    1.查看全局字符集

    mysql> show global variables like 'character%';
    +--------------------------+----------------------------+
    | Variable_name            | Value                      |
    +--------------------------+----------------------------+
    | character_set_client     | latin1                     |
    | character_set_connection | latin1                     |
    | character_set_database   | latin1                     |
    | character_set_filesystem | binary                     |
    | character_set_results    | latin1                     |
    | character_set_server     | latin1                     |
    | character_set_system     | utf8                       |
    | character_sets_dir       | /usr/share/mysql/charsets/ |
    +--------------------------+----------------------------+
    8 rows in set (0.00 sec)
    
    mysql> SHOW VARIABLES LIKE 'collation_%';
    +----------------------+-------------------+
    | Variable_name        | Value             |
    +----------------------+-------------------+
    | collation_connection | utf8_general_ci   |
    | collation_database   | latin1_swedish_ci |
    | collation_server     | latin1_swedish_ci |
    +----------------------+-------------------+
    3 rows in set (0.00 sec)
    
    2.查看当前错误日志配置:
    mysql> show global variables like '%log_err%';
    +---------------------+---------------------------------+
    | Variable_name       | Value                           |
    +---------------------+---------------------------------+
    | binlog_error_action | IGNORE_ERROR                    |
    | log_error           | /usr/local/mysql/logs/error.log |
    +---------------------+---------------------------------+
    2 rows in set (0.00 sec)
    

    3.查看二进制日志是否开启.

    mysql> show variables like 'log_bin';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | log_bin       | OFF   |
    +---------------+-------+
    1 row in set (0.00 sec)
    

    4.查看mysql的连接数.

    mysql> show variables like '%connections%';
    +----------------------+-------+
    | Variable_name        | Value |
    +----------------------+-------+
    | max_connections      | 151   |
    | max_user_connections | 0     |
    +----------------------+-------+
    2 rows in set (0.00 sec)
    
    5.查看二进制日志的存储格式
    mysql> show variables like 'binlog_format';
    +---------------+-----------+
    | Variable_name | Value     |
    +---------------+-----------+
    | binlog_format | STATEMENT |
    +---------------+-----------+
    1 row in set (0.00 sec)

    本处以更改日志格式的操作来说明set变量的使用

    set global binlog_format=mixed;    //全局更改,数据库重启后失效
    set session binlog_format=mixed;  //客户端更改,退出终端后失效.
    

     6.全局查看wait_timeout值:

    mysql> show global variables like ‘wait_timeout’;

    这是mysql的默认值,可修改

    2、修改全局wait_timeout值

    set global wait_timeout=3600;

    7.查询Mysql最大连接数和当前连接数

    最大连接数

    show variables like '%max_connections%'; 

    当前连接数

    show full processlist;

    更多使用以后慢慢整理和添加

    参考文档:http://www.365mini.com/page/mysql-show-status.htm

           http://www.ttlsa.com/mysql/mysql_show_status_descriptsions/

         http://blog.oldboyedu.com/mysql-optimization/

                  http://baike.xsoftlab.net/view/218.html

  • 相关阅读:
    js --- for in 和 for of
    vue -- config index.js 配置文件详解
    vue -- 脚手架之webpack.dev.conf.js
    vue --- 解读vue的中webpack.base.config.js
    vue 引入第三方字体包
    js call 和 apply
    vue2.0中的$router 和 $route的区别
    懒加载js实现和优化
    vue的指令在webstrom下报错
    BFC的布局规则和触发条件
  • 原文地址:https://www.cnblogs.com/saneri/p/6963583.html
Copyright © 2011-2022 走看看