MySQL它提供了多种数据库存储引擎,存储引擎负责MySQL存储和检索数据的数据库。不同的存储引擎具有不同的特性,能须要将一个已经存在的表的存储引擎转换成另外的一个存储引擎。有非常多方法能够完毕这样的转换,每一种方法都会有优缺点。应当依据实际情况去选择。以下讲述三种转换MySQL表引擎的方法:

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;

最新文章

  1. OCP考点实战演练02-日常维护篇
  2. HDU2063 过山车
  3. servle
  4. MyCCL特征码定位原理学习
  5. input lable水平对齐
  6. 让Web API支持$format参数的方法
  7. HDU2888 Check Corners
  8. Android源码剖析之Framework层实战版(Ams管理Activity启动)
  9. HDU4801·二阶魔方
  10. mysql连接超时
  11. RabbitMQ+PHP 消息队列环境配置
  12. thrift例子:python客户端/java服务端
  13. RecyclerView分割线——万能分割线
  14. 实现Android5.0过渡动画兼容库
  15. 1.docker 数据卷的备份和恢复(非大数据量)
  16. db2 表空间扩容
  17. html的textarea默认文案实现换行
  18. hashMap put方法 第三行代码
  19. What is Pay Me to Learn——Google Summer of Code 2013
  20. JavaScript学习笔记系列2:Dom操作(一)

热门文章

  1. c#编程:给定一个正整数求出是几位数并逆序输出
  2. ping localhost 没反应解决方式
  3. Java中的日期操作 分类: B1_JAVA 2015-02-16 17:55 6014人阅读 评论(0) 收藏
  4. CTR深度学习
  5. github-vimium-compile-crx
  6. SpringMVC上传图片总结(1)---常规方法进行图片上传,使用了MultipartFile、MultipartHttpServletRequest
  7. maven pom.xml基本使用方法
  8. Facebook Hacker Cup 2015 Round 1--Winning at Sports(动态规划)
  9. SharedPreferences基础 分类: H1_ANDROID 2013-11-04 22:35 2559人阅读 评论(0) 收藏
  10. php实现求扑克牌顺子(*****)(AC)(分类:把问题分小,利于排错)