Mysql

如何排除從 mysqldumpslow 命令返回的查詢

  • February 19, 2021

我想忽略 mysql-slow 日誌中源自mysqldumpslow使用SQL_NO_CACHE作為觸發詞執行命令的查詢。

我使用正則表達式的經驗充其量是有限的,我無法在文件中找到任何範例。

我嘗試了以下幾種變體:

mysqlslowdump -g '!(SQL_NO_CACHE)' /path/to/my/log
mysqlslowdump -g '^!(SQL_NO_CACHE)$' /path/to/my/log

…但總是回來:

Died at /usr/bin/mysqldumpslow line 162

我的正則表達式有什麼問題?

好的 - 你應該在這裡查看頁面,

   (Due to a limitation in the parser, a space character must precede 
and follow the SQL_NO_CACHE keyword; a nonspace such as a newline 
causes the server to check the query cache to see whether 
the result is already cached.)

現在,您使用的語法可能與上面關於“換行符”的部分不對應 - 我不確定。也許您可以嘗試直接從命令行執行查詢?

$$ EDIT $$回應OP的評論。

mysqlslowdump -g '!(SQL_NO_CACHE)' /path/to/my/log
mysqlslowdump -g '^!(SQL_NO_CACHE)$' /path/to/my/log

我從來沒有遇到過這個問題,但是用“SQL_NO_CACHE”周圍的空格重寫你的程式碼可能會產生一些影響嗎?

我不複製

死於 /usr/bin/mysqldumpslow 第 162 行

但要回答

我想忽略 mysql-slow 日誌中源自使用 SQL_NO_CACHE 作為觸發詞執行命令 mysqldumpslow 的查詢。

這對我有用:

mysqldumpslow -g '^(?!.*SQL_NO_CACHE)'

引用自:https://dba.stackexchange.com/questions/91524