MYSQL存儲(chǔ)引擎InnoDB(八十五):InnoDB錯(cuò)誤處理
以下各項(xiàng)介紹InnoDB如何執(zhí)行錯(cuò)誤處理。 InnoDB有時(shí)只回滾失敗的語(yǔ)句,其他時(shí)候則回滾整個(gè)事務(wù)。
1、如果表空間中的文件空間不足,則會(huì)發(fā)生 MySQL 錯(cuò)誤并回滾 SQL 語(yǔ)句。
2、事務(wù)死鎖會(huì)導(dǎo)致回滾整個(gè)事務(wù)。發(fā)生這種情況時(shí),請(qǐng)重試整個(gè)事務(wù)。
鎖定等待超時(shí)會(huì)導(dǎo)致回滾當(dāng)前語(yǔ)句(正在等待鎖定并遇到超時(shí)的語(yǔ)句)。要回滾整個(gè)事務(wù),請(qǐng)?jiān)趩⒂?
--innodb-rollback-on-timeout 的情況下啟動(dòng)服務(wù)器。如果使用默認(rèn)行為,請(qǐng)重試該語(yǔ)句;如果啟用了
--innodb-rollback-on-timeout,則重試整個(gè)事務(wù)。
死鎖和鎖定等待超時(shí)在繁忙的服務(wù)器上都是正常的,應(yīng)用程序必須意識(shí)到它們可能會(huì)發(fā)生,并通過重試來處理它們。通過在事務(wù)期間對(duì)數(shù)據(jù)的第一次更改和提交之間盡可能少地執(zhí)行工作,可以降低它們的可能性,因此鎖的保留時(shí)間盡可能短,行數(shù)盡可能少。有時(shí),在不同交易之間拆分工作可能是實(shí)際和有幫助的。
3、如果尚未在語(yǔ)句中指定IGNORE 選項(xiàng),則重復(fù)鍵錯(cuò)誤將回滾 SQL 語(yǔ)句。
4、行過長(zhǎng)錯(cuò)誤會(huì)回滾 SQL 語(yǔ)句。
下一篇:mysql導(dǎo)入數(shù)據(jù)庫(kù)詭異出錯(cuò)一例