mysql查看sql語句
❶ 如何實時監控mysql中的SQL語句的執行情況
首先介紹下 pt-stalk,它是 Percona-Toolkit 工具包中的一個工具,說起 PT 工具包大家都不陌生,平時常用的 pt-query-digest、 pt-online-schema-change 等工具都是出自於這個工具包,這里就不多介紹了。
pt-stalk 的主要功能是在出現問題時收集 OS 及 MySQL 的診斷信息,這其中包括:
1. OS 層面的 CPU、IO、內存、磁碟、網路等信息;
2. MySQL 層面的行鎖等待、會話連接、主從復制,狀態參數等信息。
而且 pt-stalk 是一個 Shell腳本,對於我這種看不懂 perl 的人來說比較友好,腳本裡面的監控邏輯與監控命令也可以拿來參考,用於構建自己的監控體系。
三、使用
接著我們來看下如何使用這個工具。
pt-stalk 通常以後台服務形式監控 MySQL 並等待觸發條件,當觸發條件時收集相關診斷數據。
觸發條件相關的參數有以下幾個:
function:
∘默認為 status,代表監控 SHOW GLOBAL STATUS 的輸出;
∘也可以設置為 processlist,代表監控 show processlist 的輸出;
variable:
∘默認為 Threads_running,代表 監控參數,根據上述監控輸出指定具體的監控項;
threshold:
∘默認為 25,代表 監控閾值,監控參數超過閾值,則滿足觸發條件;
∘監控參數的值非數字時,需要配合 match 參數一起使用,如 processlist 的 state 列;
cycles:
∘默認為 5,表示連續觀察到五次滿足觸發條件時,才觸發收集;
其他一些重要參數:
iterations:該參數指定 pt-stalk 在觸發收集幾次後退出,默認會一直運行。
run-time:觸發收集後,該參數指定收集多長時間的數據,默認 30 秒。
sleep:該參數指定在觸發收集後,sleep 多久後繼續監控,默認 300 秒。
interval:指定狀態參數的檢查頻率,判斷是否需要觸發收集,默認 1 秒。
dest:監控數據存放路徑,默認為 /var/lib/pt-stalk。
retention-time :監控數據保留時長,默認 30 天。
daemonize:以後台服務運行,默認不開啟。
log:後台運行日誌,默認為 /var/log/pt-stalk.log。
collect:觸發發生時收集診斷數據,默認開啟。
∘collect-gdb:收集 GDB 堆棧跟蹤,需要 gdb 工具。
∘collect-strace:收集跟蹤數據,需要 strace 工具。
∘collect-tcpmp:收集 tcpmp 數據,需要 tcpmp 工具。
連接參數:host、password、port、socket。
❷ 如何查找MySQL中查詢慢的SQL語句
問題
我們有一個 SQL,用於找到沒有主鍵 / 唯一鍵的表,但是在 MySQL 5.7 上運行特別慢,怎麼辦?
實驗
我們搭建一個 MySQL 5.7 的環境,此處省略搭建步驟。
寫個簡單的腳本,製造一批帶主鍵和不帶主鍵的表:
可以看到執行時間變成了 0.67s。
整理
我們診斷的關鍵點如下:
1. 對於 information_schema 中的元數據表,執行計劃不能提供有效信息。
2. 通過查看 MySQL 改寫後的 SQL,我們猜測了優化器發生了誤判。
3. 我們增加了 hint,指導 MySQL 正確進行優化判斷。
但目前我們的實驗僅限於猜測,猜中了萬事大吉,猜不中就無法做出好的診斷。
❸ mysql:如何查詢sql中的sql語句
select
b.文章名
from
欄目表 a
inner join 文章表 b on a.pid = b.pid
where a.id = 25
❹ mysql如何查詢SQL中哪些語句執行最佔用CPU
mysql -u root -p之後,輸入show full processlist; 可以看到正在執行的語句
然後通過 EXPLAIN分析SQL語句
❺ Mysql怎樣查看某個表的建表語句導出建表sql語句
比如:ecshop庫,裡面有個ecs_goods表,那麼查看goods表的建表語句為:
show create table ecs_goods
把這條sql語句復制到
把顯示的結果復制到其它機器上運行,就建好一張goods表了。
❻ 如何查看mysql中執行sql語句
如果我的理解沒錯的話,你的意思是正在執行的sql語句吧,
命令:
mysql>show full processlist;
示例:
mysql>select sleep(20);
另一個session執行:
mysql>show full processlist;
--- 可以看到正在執行的語句 ---
| 183 | root | localhost | NULL | Query | 6 | User sleep | select sleep(20) |
❼ mysql執行過的sql語句可以查看嗎
開啟記錄MySQL執行過SQL語句的方法很簡單:編輯/etc/my.cnf文件,在[mysqld]節下面添加:log=/var/lib/mysql/sql_row.log行(日誌的路徑自己根據需要定義)。
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
log=/var/lib/mysql/sql_row.log
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
修改完畢後,記得重啟 MySQL:
service mysql restart
# 或者
/etc/init.d/mysqld stop
/etc/init.d/mysqld start
現在你去 /var/lib/mysql/ 路徑下的 sql_row.log 文件應該是能夠看到 MySQL 什麼時候執行了哪些程序了。
❽ 如何查看mysql執行的所有以往 sql 語句歷史命令
如果你想知道mysql執行的所有以往 sql 語句歷史命令,需要配置log
my.ini文件中
log=log路徑 比如D:/MySQL/datalog.log
配置後重啟mysql服務,然後就可以查看mysql執行的sql語句了,
如果你沒開啟日誌的話,那就沒辦法
❾ MySQL如何查詢當前正在運行的SQL語句
processlist命令的輸出結果顯示了有哪些線程在運行,可以幫助識別出有問題的查詢語句,兩種方式使用這個命令
1.進入mysql/bin目錄下輸入mysqladmin processlist;
2.啟動mysql,輸入show processlist;