有很多方法可以将表的存储引擎转换成另外一种引擎,每种方法都各有优缺点:

A:alter table

将表从一个引擎直接改为另外一个引擎最简单的办法

alter table tb_name engine=innodb;

要注意:这种方法需要执行很长的时间,mysql会按行将数据从原表复制到另外一张新表中,在复制期间可能会消耗系统所有的IO能力,同时原表会加上读锁,所以,在繁忙的表上执行此操作需要特别小心,一个替代的方案是采用后边讨论的方法。另外,转换表的存储引擎,将会失去和原引擎相关的所有特性,如:把innodb转换成myisam,再转回innodb,原innodb表上的所有外键将丢失。

B:导入与导出

可以使用mysqldump工具将数据导出到文件,然后修改文件中的create table语句的存储引擎选项,注意同时修改表名,因为同一个数据库中不能存在相同表名,即使是使用不同的存储引擎也不能同名,同时要注意,mysqldump默认会自动在create table语句前加上drop table语句,不注意这一点可能导致数据丢失。

C:创建与查询

结合前面两种方法的优点,不需要导出整个表的数据,而是先创建一张新的表,然后使用insert…select语法来导出数据到新表:

create table tb_name_new like tb_name_old;

alter table tb_name_new engine=innodb;

insert into tb_name_new select * from tb_name_old;

注意:数据量不大的话,这样做很好,如果数据很大,则可以考虑做分批处理(select加一个where条件,或者使用存储过程带上Limit条件),针对每一段数据执行事务提交操作,以避免大事务产生过多的undo。执行完成后,删除原表,把新表改名。

D:percona-tookit提供了一个pt-online-schema-change工具,可以比较简单,方便地执行上面的过程,避免手工操作可能导致的失误和繁琐。且,这个工具是不锁表的。

mysql转换引擎的方法的更多相关文章

  1. mysql 转换NULL数据方法

    mysql 转换NULL数据方法<pre>SELECT info1,info2, IFNULL(info3,0) as info3 FROM `info1`;</pre>< ...

  2. 修改mysql数据引擎的方法- 提高数据库性能

    前言:同学告我说,他为了能使得数据查询变得快一点,修改的数据引擎,故查询一下,总结一下. 登录mysql后,查看当前数据库支持的引擎和默认的数据库引擎,使用下面命令: mysql>show en ...

  3. Mysql存储引擎及选择方法

    0x00 Mysql数据库常用存储引擎 Mysql数据库是一款开源的数据库,支持多种存储引擎的选择,比如目前最常用的存储引擎有:MyISAM,InnoDB,Memory等. MyISAM存储引擎 My ...

  4. MySql中启用InnoDB数据引擎的方法

    1.存储引擎是什么? Mysql中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力.通过选择不同的技术, ...

  5. MYSQL转换编码的解决方法

    MYSQL转换编码的解决方法 一.在utf8的mysql下 得到中文‘游客’的gbk下的16进制编码 mysql> SELECT hex(CONVERT( '游客' USING gbk )); ...

  6. mysql数据库修改数据表引擎的方法

    对于MySQL数据库,如果你要使用事务以及行级锁就必须使用INNODB引擎.如果你要使用全文索引,那必须使用myisam. INNODB的实用性,安全性,稳定性更高但是效率比MYISAM稍差,但是有的 ...

  7. Mysql存储引擎之TokuDB以及它的数据结构Fractal tree(分形树)

    在目前的Mysql数据库中,使用最广泛的是innodb存储引擎.innodb确实是个很不错的存储引擎,就连高性能Mysql里都说了,如果不是有什么很特别的要求,innodb就是最好的选择.当然,这偏文 ...

  8. mysql 存储引擎MYSIAM和INNODB特性比较

    事物:MYISAM不支持事物,MyISAM类型的表强调的是性能,其执行数度比InnoDB 类型更快.如果不考虑事物,大量的select和insert适合MYISAM表 锁:MYISAM支持表锁    ...

  9. {MySQL存储引擎介绍}一 存储引擎解释 二 MySQL存储引擎分类 三 不同存储引擎的使用

    MySQL存储引擎介绍 MySQL之存储引擎 本节目录 一 存储引擎解释 二 MySQL存储引擎分类 三 不同存储引擎的使用 一 存储引擎解释 首先确定一点,存储引擎的概念是MySQL里面才有的,不是 ...

随机推荐

  1. rsync+sersync实时同步

    A: 运行rsync daemonB: 运行sersync ,会监控目录,发现改变会更新推送到A上 rsync见上面rsync设置 sersync安装配置1.建立目录mkdir -p /opt/ser ...

  2. Emacs 列编辑

    copy from http://chandlewei.blogbus.com/logs/15583440.html 不敢独享,与大家分享.也可以在Emacs中用C-x C-h列出全部命令,查找C-x ...

  3. Java基础之一组有用的类——为标记定义自己的模式(ScanString)

    控制台程序. Scanner类提供了一种方式,用来指定如何识别标记.这需要使用next()方法的两个重载版本.其中的一个版本接受Pattern类型的参数.另一个版本接受String类型的参数,用来指定 ...

  4. 《30天自制操作系统》03_day_学习笔记

    harib00a: 添加的部分从P46开始,制作IPL准备开始从磁盘装载程序了 笔者讲解了软盘的驱动的构造,以及汇编语言读取软盘的方法 MOV AX,0x0820 MOV ES,AX ; 柱面0 ; ...

  5. iOS 延迟执行

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(<#delayInSeconds#> * NSEC_PER_SEC)), ...

  6. 分布式领域CAP理论

    分布式领域CAP理论,Consistency(一致性), 数据一致更新,所有数据变动都是同步的Availability(可用性), 好的响应性能Partition tolerance(分区容错性) 可 ...

  7. PostgreSQL auto_explain

    The auto_explain module provides a means for logging execution plans of slow statements automaticall ...

  8. FlashBuilder 4.7 win64 和 mac版 下载地址

    win64 http://trials3.adobe.com/AdobeProducts/FLBR/4_7/win64/FlashBuilder_4_7_LS10_win64.exe mac http ...

  9. Server.Transfer,Response.Redirect用法点睛

    Server.Transfer,Response.Redirect的区别 如果你读过很多行业杂志和 ASP.NET 示例,你会发现,大多数人使用 Response.Redirect 将用户引导到另一个 ...

  10. C++之路进阶——bzoj1030(文本生成器)

    F.A.Qs Home Discuss ProblemSet Status Ranklist Contest ModifyUser  hyxzc Logout 捐赠本站 Notice:由于本OJ建立在 ...