介紹一些有趣的MySQL pager命令

2021-09-09 07:06:22 字數 2575 閱讀 4050

一、分頁結果集

在 linux系統 中,我們經常也會使用一些分頁檢視命令,例如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』

mysql> select …

1000 rows in set (0.91 sec)

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』

mysql> select …

32a1894d773c9b85172969c659175d2d -

1 row in set (0.40 sec)

mysql> select …

fdb94521558684afedc8148ca724f578 -

1 row in set (0.16 sec)

嗯,校驗和不匹配,出了點問題。我們重試一下:

mysql> select …

32a1894d773c9b85172969c659175d2d -

1 row in set (0.17 sec)

校驗和是相同的,重寫的查詢很可能產生與原始查詢相同的結果。

mysql> pager grep sleep | wc -l

pager set to 『grep sleep | wc -l』

mysql> show processlist;

337346 rows in set (0.00 sec)

這應該被解讀為346個連線中337正處於sleep狀態。

現在稍微複雜一點:你想知道每個狀態的連線數

mysql> pager awk -f 『|』 『』 | sort | uniq -c | sort -r

pager set to 『awk -f 『|』 『』 | sort | uniq -c | sort -r』

mysql> show processlist;

309 sleep

32 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命令能讓你的工作事半功倍。

介紹一些有趣的MySQL pager命令

一 分頁結果集 在linux系統中,我們經常也會使用一些分頁檢視命令,例如less more等。同樣,mysql客戶端也提供了類似的命令,用來幫助我們對查詢結果集進行分頁。比如,show engine innodb status時通過分頁看鎖資訊時是非常有用的,這樣就不用一屏到底了。mysql pa...

介紹一些有趣的MySQL pager命令

一 分頁結果集 在linux系統中,我們經常也會使用一些分頁檢視命令,例如less more等。同樣,mysql客戶端也提供了類似的命令,用來幫助我們對查詢結果集進行分頁。比如,show engine innodb status時通過分頁看鎖資訊時是非常有用的,這樣就不用一屏到底了。mysql pa...

一些有趣的函式

split 函式是用來處理字串的,遍歷字串,當遇到某一標誌時則將字串分割成列表。例如 s jhdj dkdskd s dskdh sdsdk sdksd skd sds kd sd s1 s.split 標誌設定為空格執行結果 jhdj dkdskd s dskdh sdsdk sdksd skd ...