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. 让超出父视图范围的子视图响应事件,在UIView范围外响应点击
  2. ACM: 还是畅通工程-并查集-最小生成树-解题报
  3. view 上推效果
  4. centOS7 mini配置linux服务器(二) 配置IP
  5. JavaScript 加号运算符详解
  6. js 控制超出字数显示省略号
  7. 使用google的pprof工具以及在gin中集成pprof
  8. Ubuntu18.04 搭建zookeeper单机版集群
  9. Database学习 - mysql数据类型约束
  10. Linux学习之常用文件处理命令(一)
  11. java项目中登陆时记住密码
  12. SikuliI:安装过程(Windows)
  13. python第三十五课——生成器
  14. iOS 定时器的比较
  15. [bug] VUE 的 template 中使用 ES6 语法导致页面空白
  16. 团体程序设计天梯赛 L2-016. 愿天下有情人都是失散多年的兄妹
  17. Memcached 集群架构方面的问题
  18. APM最佳实践: 诊断平安城市视频网性能问题
  19. 状态维持在web层 每层都可以Cache
  20. Apache Shiro(四)-登录认证和权限管理WEB支持(Servlet)

热门文章

  1. 动态语言切换(续)-designer中的retranslateUi(带源码)
  2. Java中泛型的各种使用
  3. MailKit和MimeKit的.NET基础邮件服务
  4. 美国人教你这样用Google,你真的会变特工
  5. ASP.NET 部分视图
  6. rpm卸载包遭遇 specifies multiple packages 错误
  7. Data flow diagram-数据流图
  8. caffe(6) Blob,Layer,Net 以及对应配置文件的编写
  9. java反射与多态(父类调用子类)的代码演示
  10. iOS开发—— Couldn't add the Keychain Item