我們有兩張MySQL表,一張是InnoDB,一張是MyISAM。如果我在兩個表上的單一事務中執行一大塊插入,並且中間斷電,那麼狀態會是什麼?
InnoDB和MyISAM表上新插入的資料會發生什麼情況?
答案1
Innodb 是一個事務資料庫,它將資料庫變更儲存在交易日誌檔案中,使用校驗和驗證,在崩潰或斷電後下次重新啟動時提交或回溯事務。
MyISAM 沒有事務系統來回滾不成功的事務提交。因此,資料庫損壞成為具有脆弱功能的脆弱伺服器的一個主要問題。
如果資料完整性和避免鎖爭用(innodb 行鎖與 myisam 表鎖)是必須的,那麼您可以選擇 Innodb。
答案2
我的理解(我不確定)是:
- InnoDB將完全回滾交易。
- MyISAM 將保留直到斷電時插入的所有資料。