檢視資料庫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...