前言:在管理ORACLE的工作中,經(jīng)常發(fā)現(xiàn)因?yàn)殒i等待的原因?qū)е聭?yīng)用宕機(jī)了。Mysql考慮到自身的性能和架構(gòu)等因素,InnoDB數(shù)據(jù)庫引擎增加了參數(shù)innodb_lock_wait_timeout,避免在資源有限的情況下產(chǎn)生太多的鎖等待;
一、innodb_lock_wait_timeout的參數(shù)說明
innodb_lock_wait_timeout指的是事務(wù)等待獲取資源等待的最長時間,超過這個時間還未分配到資源則會返回應(yīng)用失敗;
參數(shù)的時間單位是秒,最小可設(shè)置為1s(一般不會設(shè)置得這么小),大可設(shè)置1073741824秒(34年,一條語句鎖等待超過30分鐘估計(jì)業(yè)務(wù)該有反饋了)
默認(rèn)安裝時這個值是50s(公司的默認(rèn)參數(shù)設(shè)置)
二、參數(shù)的修改
參數(shù)支持范圍為Session和Global,且支持動態(tài)修改,所以可以通過兩種方法修改;
2.1 通過語句修改
set innodb_lock_wait_timeout=100;
set global innodb_lock_wait_timeout=100;
注意global的修改對當(dāng)前線程是不生效的,只有建立新的連接才生效
2.2 修改參數(shù)文件/etc/my.cnf
innodb_lock_wait_timeout = 50
三、當(dāng)?shù)却^閥值時的情況
當(dāng)鎖等待超過設(shè)置時間的時候,就會報如下的錯誤;
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
總結(jié):本文檔只是對MySQL鎖等待的相關(guān)參數(shù)做一個簡單的了解,后續(xù)會有整理相關(guān)鎖等待及管理的文檔;
......................................................................................................................................................................………………………………………
本文作者:JOHN,某上市公司DBA,業(yè)余時間專注于數(shù)據(jù)庫的技術(shù)管理,從管理的角度去運(yùn)用技術(shù)。
ORACLE技術(shù)博客:ORACLE 獵人筆記 數(shù)據(jù)庫技術(shù)群:367875324 (請備注ORACLE管理 )
......................................................................................................................................................................………………………………………