Mysql 转换表的引擎

来源:互联网 发布:mac绝对路径 编辑:程序博客网 时间:2024/05/21 04:25

下面接受三种Mysql 数据库将表的存储引擎转换成另外一种引擎。每种方法都有优缺点。

ALTER TABLE

将表的一个引擎修改为另个引擎最简单的办法就是是用alter table 语句,下面是修改user 表的储存引擎;

mysql> alter table user engine=InnoDB;Query OK, 0 rows affected (0.07 sec)Records: 0  Duplicates: 0  Warnings: 0mysql> show table status like 'user' \G;

上述语法可以适合任何储存引擎。但是有一个问题:需要执行很长时间。Mysql会按行讲源数据复制到另一新表当中,在复制期间可能会消耗系统所有的I/O能力,同时原表会加上锁。所以在繁忙的表上执行此操作要下心。
如果转换表的存储引擎将会丢失和原引擎相关的所有特性。如,将一张InnoDB表转换为MyISAM,然后转换InnoDB,原InnoDB上的所有外键将会丢失。

导入和导出

为了更好的控制转换过程,可是使用mysqldump 工具将数据导入文件中,然后修改文件中的create table 语句中的存储引擎选项,mysqldump 工具默认会在create table 中加上drop 语句。

创建和查询

第三种装换技术综合了第一种的高效和第二种方法的中的安全,不需要导出真个表的数据。而是先创建一个新的存储引擎的表。然后利用 Insert 。。。。select 语句来导出,

mysql> create table myInnoDB like user;Query OK, 0 rows affected (0.04 sec)mysql> alter table myInnoDB engine=innodb;Query OK, 0 rows affected (0.08 sec)Records: 0  Duplicates: 0  Warnings: 0mysql> insert into myInnoDB select * from user;
0 0
原创粉丝点击