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