当前位置:Gxlcms > 数据库问题 > MySQL改变表的存储引擎

MySQL改变表的存储引擎

时间:2021-07-01 10:21:17 帮助过:4人阅读


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改变表的存储引擎

标签:注意   mysql   外键   ack   微软   名称   选项   mil   过程   

人气教程排行