介紹一些有趣的MySQL pager命令
在 中,我們經常也會使用一些分頁檢視命令,例如less、more等。同樣,MySQL客戶端也提供了類似的命令,用來幫助我們對查詢結果集進行分頁。比如,SHOW ENGINE INNODB STATUS時透過分頁看鎖資訊時是非常有用的,這樣就不用一屏到底了。
mysql> pager less PAGER set to 'less' mysql> show engine innodb status\G [...]
現在你可以輕鬆瀏覽結果集了(使用q退出,空格向下滾動等)。
如果你想離開你的自定義pager,這很容易,只需執行pager命令:
mysql> pager Default pager wasn't set, using stdout.
或者
mysql> \n PAGER set to stdout
但是pager命令並不侷限於這種基本用法!你可以將查詢輸出傳遞給大多數能夠處理文字的Unix程式。這裡有一些例子。
有時你不關心結果集,只想檢視時間資訊。如果你透過更改索引為查詢嘗試不同的執行計劃,則可能會出現這種情況。使用pager可以丟棄結果:
mysql> pager cat > /dev/null PAGER set to 'cat > /dev/null' # Trying an execution plan mysql> SELECT ... 1000 rows in set (0.91 sec) # Another execution plan mysql> SELECT ... 1000 rows in set (1.63 sec)
現在,在一個螢幕上檢視所有時間資訊要容易得多。
假設你正在重寫查詢,並且想要在重寫之前和之後檢查結果集是否相同。不幸的是,它有很多行:
mysql> SELECT ... [..] 989 rows in set (0.42 sec)
你可以計算校驗和,只比較校驗和,而不是手動比較每一行:
mysql> pager md5sum PAGER set to 'md5sum' # Original query mysql> SELECT ... 32a1894d773c9b85172969c659175d2d - 1 row in set (0.40 sec) # Rewritten query - wrong mysql> SELECT ... fdb94521558684afedc8148ca724f578 - 1 row in set (0.16 sec)
嗯,校驗和不匹配,出了點問題。我們重試一下:
# Rewritten query - correct mysql> SELECT ... 32a1894d773c9b85172969c659175d2d - 1 row in set (0.17 sec)
校驗和是相同的,重寫的查詢很可能產生與原始查詢相同的結果。
如果MySQL上有很多連線,那麼很難讀取SHOW PROCESSLIST的輸出。例如,如果你有幾百個連線,並且你想知道有多少連線處於Sleep狀態,手動計算SHOW PROCESSLIST輸出中的行可能不是最佳解決方案。使用pager,它很簡單:
mysql> pager grep Sleep | wc -l PAGER set to 'grep Sleep | wc -l' mysql> show processlist; 337 346 rows in set (0.00 sec)
這應該被解讀為346個連線中337正處於Sleep狀態。
現在稍微複雜一點:你想知道每個狀態的連線數
mysql> pager awk -F '|' '{print $6}' | sort | uniq -c | sort -r PAGER set to 'awk -F '|' '{print $6}' | sort | uniq -c | sort -r' mysql> show processlist; 309 Sleep 3 2 Query 2 Binlog Dump 1 Command
當然,這些問題可以透過查詢INFORMATION_SCHEMA來解決。例如,計算Sleep連線的數量可以透過以下方式完成:
mysql> SELECT COUNT(*) FROM INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND='Sleep'; +----------+ | COUNT(*) | +----------+ | 320 | +----------+
並計算每個狀態的連線數可以透過以下方式完成:
mysql> SELECT COMMAND,COUNT(*) TOTAL FROM INFORMATION_SCHEMA.PROCESSLIST GROUP BY COMMAND ORDER BY TOTAL DESC; +-------------+-------+ | COMMAND | TOTAL | +-------------+-------+ | Sleep | 344 | | Query | 5 | | Binlog Dump | 2 | +-------------+-------+
但是,有些人可能對編寫SQL查詢感覺更舒服,而其他人則更喜歡使用命令列工具。
如你所見,pager是你的朋友!它非常易於使用,它可以以優雅和高效的方式解決問題。你甚至可以編寫自定義指令碼(如果它太複雜而無法放在一行中)並將其傳遞給pager。總之,多使用pager命令能讓你的工作事半功倍。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2374621/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql中pager和其它命令的一些小技巧介紹MySql
- mysql操作命令梳理(3)-pagerMySql
- mysql一些引數的介紹MySql
- mysql 字首索引 的一些介紹MySql索引
- MySQL SHOW STATUS命令介紹MySql
- 一些重要 Docker 命令的簡單介紹Docker
- MySQL pager和nopager命令--不顯示查詢結果MySql
- Linux中一些 Sed命令技巧介紹Linux
- 一些文件中沒有介紹的SQL Server DBCC命令SQLServer
- MySQL Utilities工具介紹和命令列總結MySql命令列
- MySql介紹MySql
- Geth的命令列介紹命令列
- SRVCTL命令介紹
- docker 命令介紹Docker
- tar命令介紹
- 介紹一種有趣的競爭神經網路!神經網路
- Mysql Binlog的介紹MySql
- unix的AWK命令介紹(轉)
- rpm命令的使用介紹
- MySQL MVCC介紹MySqlMVC
- mysql MVCC 介紹MySqlMVC
- MySQL索引介紹MySql索引
- MySQL MHA介紹MySql
- Shell echo命令介紹
- HBase shell 命令介紹
- installer 命令介紹
- MySQL中InnoDB鎖機制介紹及一些測試MySql
- LAMP架構介紹、MYSQL介紹、安裝LAMP架構MySql
- mysql中SQL的概念介紹MySql
- LAMP架構(LAMP介紹,mysql/mariaDB介紹,Mysql安裝)LAMP架構MySql
- 一些有趣的Javascript技巧JavaScript
- Google Analytics 的一些用法介紹Go
- Perl的一些重要模組使用介紹
- MySQL檢視介紹MySql
- MySQL 安裝介紹MySql
- MySQL Binlog 介紹MySql
- MySQL分支版本介紹MySql
- MySQL group replication介紹MySql