Lock wait timeout exceeded; try restarting transaction一些信息
為平果等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及平果網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站建設(shè)、成都網(wǎng)站制作、平果網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
1、
鎖等待超時(shí)。是當(dāng)前事務(wù)在等待其它事務(wù)釋放鎖資源造成的??梢哉页鲦i資源競(jìng)爭(zhēng)的表和語句,優(yōu)化你的SQL,創(chuàng)建索引等,如果還是不行,可以適當(dāng)減少并發(fā)線程數(shù)。
2、
你的事務(wù)在等待給某個(gè)表加鎖時(shí)超時(shí)了,估計(jì)是表正被另的進(jìn)程鎖住一直沒有釋放。
可以用 SHOW INNODB STATUS/G; 看一下鎖的情況。
3、搜索解決 之道
在管理 節(jié)點(diǎn)的[ndbd default]
區(qū)加:
TransactionDeadLockDetectionTimeOut=10000(設(shè)置 為10秒)默認(rèn)是1200(1.2秒)
4、
InnoDB會(huì)自動(dòng)的檢測(cè)死鎖進(jìn)行回滾,或者終止死鎖的情況。
引用
InnoDB automatically detects transaction deadlocks and rolls back a transaction or transactions to break the deadlock.
InnoDB tries to pick small transactions to roll back, where the size of a transaction is determined by the number of rows inserted, updated, or deleted.
如果參數(shù)innodb_table_locks=1并且autocommit=0時(shí),InnoDB會(huì)留意表的死鎖,和MySQL層面的行級(jí)鎖。另外,InnoDB不會(huì)檢測(cè)MySQL的Lock Tables命令和其他存儲(chǔ)引擎死鎖。
你應(yīng)該設(shè)置innodb_lock_wait_timeout來解決這種情況。
innodb_lock_wait_timeout是Innodb放棄行級(jí)鎖的超時(shí)時(shí)間。