Mysql的鎖表,鎖行記錄


查看正在被鎖定的的表

show OPEN TABLES where In_use > 0;

in_use:多少個線程在使用

name_locked:是否被鎖

查詢哪些線程正在運行

show processlist;

最關鍵的就是state列

查看正在鎖的事務

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;

查看等待鎖的事務

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;


在事務當中,Tansaction isolation level 為REPEATABLE READ(可重讀)情況,鎖的操作

mysql> select k from t where id=1 lock in share mode; #樂觀鎖(s鎖,共享鎖),可讀

mysql> select k from t where id=1 for update; #悲觀鎖,排他鎖

悲觀鎖:在讀取數據時鎖住那幾行,其他對這幾行的更新需要等到悲觀鎖結束時才能繼續 。

樂觀所:讀取數據時不鎖,更新時檢查是否數據已經被更新過,如果是則取消當前更新,一般在悲觀鎖的等待時間過長而不能接受時我們才會選擇樂觀鎖。

注:for update 僅適用於InnoDB,並且必須開啟事務,在begin與commit之間才生效。

查Mysql服務器上的版本

mysql> select version();

查看表的引擎

mysql> show create table t;

或者

mysql> show table status from 庫名 where name='t' \G

查mysql當前默認的存儲引擎:

mysql> show variables like '%storage_engine%';


查整個MySQL實例里面存儲引擎為MyISAM的表

mysql> select table_catalog

,table_schema

,table_name

,engine

from information_schema.tables

where engine='MyISAM';

查詢MyDB數據庫里面存儲引擎為MyISAM的表

mysql> select table_catalog

,table_schema

,table_name

,engine

from information_schema.tables

where table_schema='MyDB' and engine='MyISAM';


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM