要測試innodb的鎖互斥,以及死鎖,有幾個配置務必要提前確認:
區間鎖是否關閉
事務自動提交(auto commit)是否關閉
事務的隔離級別(isolation level)
這幾個引數,會影響實驗結果。
《事務的隔離級別,innodb如何實現?》
間隙鎖是否關閉
區間鎖(間隙鎖,臨鍵鎖)是innodb特有施加在索引記錄區間的鎖,mysql5.6可以手動關閉區間鎖,它由innodb_locks_unsafe_for_binlog引數控制:
設定為on,表示關閉區間鎖,此時一致性會被破壞(所以是unsafe)
設定為off,表示開啟區間鎖
可以這麼查詢該引數:
show global variables like "innodb_locks%";
《innodb,索引記錄上的三種鎖》
事務自動提交
mysql預設把每乙個單獨的sql語句作為乙個事務,自動提交。
可以這麼查詢事務自動提交的引數:
show global variables like "autocommit";
事務的隔離級別
不同事務的隔離級別,innodb的鎖實現是不一樣。
可以這麼查詢事務的隔離級別:
show global variables like "tx_isolation";
可以這麼設定事務的隔離級別:
set session transaction isolation level x;
x取:read uncommitted
read committed
repeatable read
serializable
這三個引數,mysql5.6的預設值如上:
off,表示使用區間鎖
on,表示事務自動提交
rr,事務隔離級別為可重複讀
要模擬併發事務,需要修改事務自動提交這個選項,每個session要改為手動提交。
任何連上mysql的session,都要手動執行:
set session autocommit=0;
以手動控制事務的提交。
如上圖,需要把session的autocommit設定為off。
可以看到,修改session變數,並不影響global變數,全域性其他的session仍然是on。
畫外音:session變數預設繼承global變數,也可以單獨修改。
show engine innodb status
linux運維常用命令
1.刪除0位元組檔案 find type f size 0 exec rm rf 2.檢視程序 按記憶體從大到小排列 ps e o c p z a sort k5 nr 3.按cpu利用率從大到小排列 ps e o c p z a sort nr 4.列印說 cache 裡的url 5.檢視http...
linux運維常用命令
chkconfig list awk 41.kudzu檢視網絡卡型號 kudzu probe class network 匹配中文字元的正規表示式 u4e00 u9fa5 評注 匹配中文還真是個頭疼的事,有了這個表示式就好辦了 匹配雙位元組字元 包括漢字在內 x00 xff 評注 可以用來計算字串的...
linux運維常用命令
1 linux啟動過程 開啟電源 bios開機自檢 引導程式lilo或grub 核心的引導 kernel boot 執行init rc.sysinit rc mingetty 建立終端 shell 2 網絡卡繫結多ip ifconfig eth0 1 192.168.1.99 netmask 255...