標籤:io 使用 sp 檔案 資料 on bs ad 時間
事物:MYISAM不支援事物,MyISAM類型的表強調的是效能,其執行數度比InnoDB
類型更快。如果不考慮事物,大量的select和insert適合MYISAM表
鎖:MYISAM支援表鎖
INNODB提供行級鎖,提供與 Oracle 類型一致的不加鎖讀取(non-locking read in),
INNODB行鎖也不是絕對的,在執行一個SQL語句時MySQL不能確定要掃描的範圍,InnoDB表同樣會鎖全表,例如update table set num=1 where name like “%aaa%”
多版本高並發:多版本高並發即MVCC,INNODB才有MVCC支援高並發,實現四個標
准隔離等級,預設是可重複讀,通過間隙鎖防止幻讀。間隙鎖使得INNODB不僅僅
鎖定涉及查詢的行,還對索引中間隙進行鎖定,防止幻行寫入。
事務修複和崩潰修複:MYISAM可以手工或者自動的檢查和修複操作,但不是崩潰
恢複。INNODB一定程度上支援崩潰時資料的丟失恢複,但不是絕對的恢複,且恢復長
備份:如果需要關閉伺服器執行備份,備份策略可以忽略。但是需要線上熱備份,INNODB是更好的選擇
轉換引擎上,有三種方式
1:alert table語句: alert table mytable ENGINE=InnoDB;
此方法效率最低,需要把資料複製到一張新表,系統IO能力可能被耗盡,同時在原表加鎖,需要避開表使用高峰期,同時會造成原引擎特性丟失,索引,外鍵等
2:匯入匯出
通過mysqldump工具可以匯出到檔案。但是會預設在在create table加drop table語句,不注意會造成資料丟失
2:建立查詢
先建立一個新儲存引擎的表,通過insert ---select匯入,這種方式在資料量層級低的情況下是不錯的選擇,如果資料量過大,可以通過分批處理。完成後,新表是對舊錶的複製,但舊錶還存在。也可以在負責過程中對原表加鎖,確保與原表資料一致。
mysql 儲存引擎MYSIAM和INNODB特性比較