mysql提供了多種資料庫儲存引擎,儲存引擎負責mysql資料庫中的資料的儲存和提取。不同的儲存引擎具有不同的特性,有時可能須要將乙個已經存在的表的儲存引擎轉換成另外的乙個儲存引擎。有非常多方法能夠完畢這樣的轉換,每一種方法都會有優缺點,應當依據實際情況去選擇。以下講述三種轉換mysql表引擎的方法:
alter table
轉換mysql表引擎最簡單的方法是直接使用alter table去改動表的定義。以下的這條語句將mytable表引擎轉換成innodb
mysql>alter table mytable engine = innodb;
長處:簡單、能夠使用於不論什麼的表引擎。
缺點:須要執行非常長時間,轉換的過程是先定義乙個新的引擎表,然後把原表中的資料複製過來。
在複製的過程中會消耗系統大量的i/o能力。同一時候還會在原表上加上讀鎖。所以,在乙個非常繁忙的系統中使用這樣的轉換方式是行不通的,縱然這非常easy。
另外,須要注意的是,假設使用這樣的方式轉換表引擎會失去和原表引擎相關的特性。
比如,將一張innodb表轉換成myisam表,然後再轉換成innodb表。縱然你什麼都沒有做,可是原表中的外來鍵將會消失。
匯入和匯出
為了更好的控制轉換的過程。能夠是使用mysqldump工具將資料匯出到檔案。然後改動檔案裡的create table語句的engine選項,注意改動表名。由於乙個資料庫中不可能有兩個同名的表,即時它們使用不同的儲存引擎。
shell>mysqldump -u username -p 資料庫名 表名 > 檔名稱
vi改動檔案裡的create table語句
mysql>source 帶路徑檔名稱
建立與查詢
第三種方式結合了第一種高效和另外一種方式安全。
不須要匯出整個表的資料。而是先建立乙個新的儲存引擎表。然後利用insert....select語法來到資料。
mysql>create table innodb_table like myisam_table ;
mysql>alter table innodb_table engine = innodb ;
mysql>insert into innodb_table select * from myisam_table;
MySQL表儲存引擎
常用的4種儲存引擎 myisam innodb memory和merge。myisam是mysql5.5版本之前的預設儲存引擎。myisam不支援事務 也不支援外來鍵,其優勢是訪問的速度快,對事務完整性沒有要求或者以select insert為主的應用基本上都可以使用這個引擎來建立表。資料儲存形式 ...
MySQL的儲存引擎(表型別)
筆記 mysql屬於資料庫管理系統,包括資料庫和用於訪問管理資料庫的介面系統。資料庫負責儲存資料,介面系統負責管理資料庫。不同使用者對資料的容量 訪問速度 資料安全性有不用需求。為了滿足使用者的不同需求,mysql採用多種儲存引擎進行資料儲存。儲存引擎指定了表的儲存型別 即如何儲存和索引資料 是否支...
MySQL更改表的儲存引擎
mysql它提供了多種資料庫儲存引擎,儲存引擎負責mysql儲存和檢索資料的資料庫。不同的儲存引擎具有不同的特性,能須要將乙個已經存在的表的儲存引擎轉換成另外的乙個儲存引擎。有非常多方法能夠完畢這樣的轉換,每一種方法都會有優缺點。應當依據實際情況去選擇。以下講述三種轉換mysql表引擎的方法 alt...