程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL改變表的存儲引擎

MySQL改變表的存儲引擎

編輯:MySQL綜合教程

MySQL改變表的存儲引擎


MySQL提供了多種數據庫存儲引擎,存儲引擎負責MySQL數據庫中的數據的存儲和提取。不同的存儲引擎具有不同的特性,有時可能需要將一個已經存在的表的存儲引擎轉換成另外的一個存儲引擎,有很多方法可以完成這種轉換,每一種方法都會有優缺點,應當根據實際情況去選擇,下面講述三種轉換MySQL表引擎的方法:
ALTER TABLE 轉換MySQL表引擎最簡單的方法是直接使用ALTER TABLE去修改表的定義。下面的這條語句將mytable表引擎轉換成InnoDB mysql>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;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved