Mysql查詢正在執(zhí)行的事務以及等待鎖的操作方式
使用navicat
測試學習:
首先使用set autocommit = 0;
(取消自動提交,則當執(zhí)行語句commit或者rollback執(zhí)行提交事務或者回滾)
在打開一個執(zhí)行update
查詢 正在執(zhí)行的事務:
SELECT * FROM information_schema.INNODB_TRX
根據這個事務的線程ID(trx_mysql_thread_id
):
從上圖看出對應的mysql
線程:一個94362 (第二個正在等待鎖)另一個是93847(第一個update 正在執(zhí)行 沒有提交事務)
可以使用mysql命令:kill
線程id 殺掉線程
期間如果并未殺掉持有鎖的線程:則第二個update語句提示等待鎖超時
查詢mysql數據庫中還可以使用:
查看正在鎖的事務
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
查看等待鎖的事務
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
查詢mysql數據庫中存在的進程
[sql] view plain copy
select * from information_schema.`PROCESSLIST`(show processlist;)
概念:
mysql中database
、instance
、session
。
mysql中建立一個會話,不是和具體的數據庫相連接,而是跟instance建立會話(即在navicat上執(zhí)行一個查詢,可以查詢端口下對應的多個數據庫,查詢時數據庫名+數據表名即可)
在一個物理機上可以建立多個instance
,通過port
來區(qū)分實例。
而一個實例可以建立多個數據庫,即一個會話可以操作一個實例上的多個數據庫。
jdbc協議連接數據庫:jdbc:mysql://localhost:3306/test
jdbc協議連接本地上端口為3306實例下的test數據庫,則查詢數據表時不需要加上數據庫的名字。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接
相關文章
mysql提示got timeout reading communication packets的解決方法
今天發(fā)現mysql錯誤日志中出現got timeout reading communication packets,一般情況因為部分頁面生成有問題導致,這里簡單分享一下解決方法2019-05-05Linux下安裝Mysql多實例作為數據備份服務器實現多主到一從多實例的備份
由于第一次接觸LINUX,花了三天時間才算有所成就,發(fā)出來希望可以給大伙帶來方便2010-07-07