网站地图    收藏   

主页 > 后端 > mysql数据库 >

MySQL改变表的存储引擎 - mysql数据库栏目 - 自学

来源:自学PHP网    时间:2015-04-16 10:50 作者: 阅读:

[导读] 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;

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论