MySQL更改表的儲存引擎

來源:互聯網
上載者:User

標籤:

MySQL它提供了多種資料庫儲存引擎,儲存引擎負責MySQL儲存和檢索資料的資料庫。不同的儲存引擎具有不同的特性,能須要將一個已經存在的表的儲存引擎轉換成另外的一個儲存引擎。有非常多方法能夠完畢這樣的轉換,每一種方法都會有優缺點。應當依據實際情況去選擇。以下講述三種轉換MySQL表引擎的方法:
ALTER TABLE轉換MySQL表引擎最簡單的方法是直接使用ALTER TABLE去改動表的定義。以下的這條語句將mytable表引擎轉換成InnoDBmysql>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更改表的儲存引擎

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.