MySQL改變表的儲存引擎

來源:互聯網
上載者:User

標籤:mysql   儲存引擎   

MySQL提供了多種資料庫儲存引擎,儲存引擎負責MySQL資料庫中的資料的儲存和提取。不同的儲存引擎具有不同的特性,有時可能需要將一個已經存在的表的儲存引擎轉換成另外的一個儲存引擎,有很多方法可以完成這種轉換,每一種方法都會有優缺點,應當根據實際情況去選擇,下面講述三種轉換MySQL表引擎的方法:
ALTER TABLE轉換MySQL表引擎最簡單的方法是直接使用ALTER TABLE去修改表的定義。下面的這條語句將mytable表引擎轉換成InnoDBmysql>ALTER TABLE mytable ENGINE = InnoDB;優點:簡單、可以使用於任何的表引擎。缺點:需要執行很長時間,轉換的過程是先定義一個新的引擎表,然後把原表中的資料複製過來。在複製的過程中會消耗系統大量的I/O能力,同時還會在原表上加上讀鎖。所以,在一個非常繁忙的系統中使用這種轉換方式是行不通的,縱然這很簡單。另外,需要注意的是,如果使用這種方式轉換表引擎會失去和原表引擎相關的特性。例如,將一張InnoDB錶轉換成MyISAM表,然後再轉換成InnoDB表,縱然你什麼都沒有做,但是原表中的外鍵將會消失。
匯入和匯出為了更好的控制轉換的過程,可以是使用mysqldump工具將資料匯出到檔案,然後修改檔案中的CREATE TABLE語句的ENGINE選項,注意修改表名,因為一個資料庫中不可能有兩個同名的表,即時它們使用不同的儲存引擎。 SHELL> mysqldump   -u   使用者名稱   -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.