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 processlist\G

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_yy\G
*************************** 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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM