Mysql轉換表儲存引擎的三種方式

2022-04-09 15:58:53 字數 1120 閱讀 5855

或許會有一些場景需要改變表的儲存引擎,例如儲存日誌的表如果幾乎只有insert和少量的select操作,為了追求更好的插入效能有可能會需要把儲存引擎更換為myisam。但是,本文不建議在同乙個資料庫中混合使用不同的儲存引擎。

1.alter table

將表從乙個儲存引擎修改為另一種儲存引擎最簡單的方式是執行ddl語句,下面語句將mytable的引擎有innodb改為myisam:

mysql>alter table table_name engine=myisam ;

執行效果如下圖:

這種修改方法試用與任何儲存引擎,但是需要注意的是:如果表的資料量很大,執行的時間會很長,mysql會將原表的資料複製到一張新錶中,在複製的期間可能會消耗完所有的系統i/o能力,同時會對原表上加讀鎖。同時更換儲存引擎後的新錶將丟失舊的儲存引擎一切特性,例如innodb轉換為myisam之後,所有的外來鍵將丟失。

2.匯出與匯入

為了更好的控制轉換過程,可以使用mysqldump工具將資料匯出到檔案,然後手動的修改檔案create table 語句的儲存引擎選項engine,注意同時修改表名,因為同乙個資料庫中不能存在相同的表名,還要注意的是,mysqldump中會預設在create table 前加上drop table 語句,不注意這一點可能會導致資料丟失。

3.create 和 select

這種方式相對於前面兩種高效和安全的特點。不需要匯出整個表的資料,而是建立一張新的表,然後通過insert .....select 語法來匯入資料。

如果資料量不大的話,上面操作處理結果很令人滿意。如果資料量很大,可以分批操作,針對每一段資料執行事務提交,避免大事務帶來的問題,例如可以根據時間篩選或者根據id大小篩選分段提交。

start transaction;  

insert into innodb_table select * from mytable where id between x and y (或者create_time之類); 

commit;

mysql的三種儲存引擎即三種型別的表

mysql 的環境變數 server bin下 引擎 engine 是電子平台上開發程式或系統的核心元件。利用引擎,開發者可迅速建立 鋪設程式所需的功能,或利用其輔助程式的運轉。一般而言,引擎是乙個程式或一套系統的支援部分。常見的程式引擎有遊戲引擎,搜尋引擎,防毒引擎等。儲存引擎就是指表的型別以及表...

MySQL三種常見儲存引擎

mysql中的資料用各種不同的技術儲存在檔案 或者記憶體 中。這些技術中的每一種技術都使用不同的儲存機制 索引技巧 鎖定水平並且最終提供廣泛的不同的功能和能力。通過選擇不同的技術,你能夠獲得額外的速度或者功能,從而改善你的應用的整體功能。這些不同的技術以及配套的相關功能在mysql中被稱作儲存引擎 ...

MySQL常見的三種儲存引擎

1 innodb儲存引擎 innodb是事務型資料庫的首選引擎,支援事務安全表 acid 其它儲存引擎都 是非事務安全表,支援行鎖定和外來鍵,mysql5.5以後預設使用innodb儲存引擎。innodb特點 支援事務處理,支援外來鍵,支援崩潰修復能力和併發控制。如果需 要對事務的完整性要求比較高 ...