前言:在管理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)鎖等待及管理的文檔;
......................................................................................................................................................................………………………………………
從網(wǎng)站建設(shè)到定制行業(yè)解決方案,為提供網(wǎng)站建設(shè)、網(wǎng)站制作服務(wù)體系,各種行業(yè)企業(yè)客戶提供網(wǎng)站建設(shè)解決方案,助力業(yè)務(wù)快速發(fā)展。創(chuàng)新互聯(lián)公司將不斷加快創(chuàng)新步伐,提供優(yōu)質(zhì)的建站服務(wù)。本文作者:JOHN,某上市公司DBA,業(yè)余時間專注于數(shù)據(jù)庫的技術(shù)管理,從管理的角度去運(yùn)用技術(shù)。
ORACLE技術(shù)博客:ORACLE 獵人筆記 數(shù)據(jù)庫技術(shù)群:367875324 (請備注ORACLE管理 )
......................................................................................................................................................................………………………………………