MySQL事務鎖命令語句集合

2021-10-22 19:16:25 字數 3618 閱讀 9215

檢視資料庫innodb狀態

show engine innodb status

檢視當前是否有事務執行

select * from information_schema.innodb_trx;

通過kill結束當前事務

kill 'trx_mysql_thread_id'

檢視當前執行緒處理情況,如果不使用full關鍵字,資訊欄位中只會顯示每個語句的前100個字元。

show processlist;

show full processlist;

查詢表級鎖爭用情況 table_locks_immediate 指的是能夠立即獲得表級鎖的次數 table_locks_waited 指的是不能立即獲取表級鎖而需要等待的次數

show status like 'table%';

檢視行鎖使用情況

show statue like 'innodb_row_lock%';

獲取鎖定次數、鎖定造成其他執行緒等待次數,以及鎖定等待時間資訊

show status like '%lock%';

innodb的dml操作的行級鎖的等待時間

show variables like 'innodb_lock_wait_timeout';

檢視timeout相關引數

show variables like '%timeout%';

檢視正在被鎖定的的表

show open tables where in_use > 0;

檢視被鎖住的

select * from information_schema.innodb_locks;

等待鎖定

select * from information_schema.innodb_lock_waits;

檢視表索引資訊

show index from account;

檢視當前的隔離級別:

select @@tx_isolation;

設定當前 mysql 連線的隔離級別:

會話級:只對當前的會話效

set transaction isolation level repeatable read;

設定資料庫系統的全域性的隔離級別:

全域性級:對所的會話效

set global transaction isolation level repeatable read;

自動提交模式可以通過伺服器變數autocommit來控制。

show variables like '%auto%';

show variables like '%autocommit%';

通過查詢information_schema資料庫事務表的資訊

select * from information_schema.innodb_trx;

下面對innodb_trx表的每個字段進行解釋:

trx_id:事務id。

trx_state:事務狀態,有以下幾種狀態:running、lock wait、rolling back 和 committing。

trx_started:事務開始時間。

trx_wait_started:事務開始等待的時間。

trx_weight:事務的權重。

trx_mysql_thread_id:事務執行緒 id,可以和 processlist 表 join。

trx_query:事務正在執行的 sql 語句。

trx_operation_state:事務當前操作狀態。

trx_tables_in_use:當前事務執行的 sql 中使用的表的個數。

trx_tables_locked:當前執行 sql 的行鎖數量。

trx_lock_structs:事務保留的鎖數量。

trx_lock_memory_bytes:事務鎖住的記憶體大小,單位為 bytes。

trx_rows_locked:事務鎖住的記錄數。包含標記為 deleted,並且已經儲存到磁碟但對事務不可見的行。

trx_rows_modified:事務更改的行數。

trx_concurrency_tickets:事務併發票數。

trx_isolation_level:當前事務的隔離級別。

trx_unique_checks:是否開啟唯一性檢查的標識。

trx_foreign_key_checks:是否開啟外來鍵檢查的標識。

trx_last_foreign_key_error:最後一次的外來鍵錯誤資訊。

trx_adaptive_hash_latched:自適應雜湊索引是否被當前事務鎖住的標識。

trx_adaptive_hash_timeout:是否立刻放棄為自適應雜湊索引搜尋 latch 的標識。

下面對innodb_locks表的每個字段進行解釋:

lock_id:鎖 id。

lock_trx_id:擁有鎖的事務 id。可以和 innodb_trx 表 join 得到事務的詳細資訊。

lock_mode:鎖的模式。有如下鎖型別:行級鎖包括:s、x、is、ix,分別代表:共享鎖、排它鎖、意向共享鎖、意向排它鎖。表級鎖包括:s_gap、x_gap、is_gap、ix_gap 和 auto_inc,分別代表共享間隙鎖、排它間隙鎖、意向共享間隙鎖、意向排它間隙鎖和自動遞增鎖。

lock_type:鎖的型別。record 代表行級鎖,table 代表表級鎖。

lock_table:被鎖定的或者包含鎖定記錄的表的名稱。

lock_index:當 lock_type=』record』 時,表示索引的名稱;否則為 null。

lock_space:當 lock_type=』record』 時,表示鎖定行的表空間 id;否則為 null。

lock_page:當 lock_type=』record』 時,表示鎖定行的頁號;否則為 null。

lock_rec:當 lock_type=』record』 時,表示一堆頁面中鎖定行的數量,亦即被鎖定的記錄號;否則為 null。

lock_data:當 lock_type=』record』 時,表示鎖定行的主鍵;否則為null。

下面對innodb_lock_waits表的每個字段進行解釋:

requesting_trx_id:請求事務的 id。

requested_lock_id:事務所等待的鎖定的 id。可以和 innodb_locks 表 join。

blocking_trx_id:阻塞事務的 id。

blocking_lock_id:某一事務的鎖的 id,該事務阻塞了另一事務的執行。可以和 innodb_locks 表 join。

mysql事務與鎖機制 mysql事務與鎖機制

在併發下事務會容易出現的一些問題 資料更新丟失 兩個事務同時操作一條資料,乙個事務因為異常導致資料更新丟失 髒讀 乙個失誤開始讀取了某行資料,另外乙個事務已經更新了此資料但沒有能夠及時提交。這是相當危險的,因為很可能所有的操作都被回滾。不可重複讀 乙個事務對同一行資料重複讀取兩次,但是卻得到了不同的...

mysql 事務和鎖

事務是dbms得執行單位 開啟事務 set autocommit 0 取消自動提交 或begin 手動開啟乙個事務 提交乙個事務 commit 回滾乙個事務 rollback 在mysql的innodb 引擎中,預設每個操作 insert,update,select for update lock ...

MySQL 事務和鎖

和其他資料庫相比,mysql的鎖機制比較假單,不同的引擎支援不同的鎖機制。myisam和memory使用表級鎖,bdb使用頁面鎖和表級鎖 innodb預設支援行級鎖,也支援表級鎖。myisam表鎖有兩中,乙個是都鎖,乙個是寫鎖,相容性如下 模式讀鎖 寫鎖讀鎖 相容不相容 寫鎖不相容 不相容 可見my...