或许会有一些场景需要改变表的存储引擎,例如存储日志的表如果几乎只有insert和少量的select操作,为了追求更好的插入性能有可能会需要把存储引擎更换为MyISAM。但是,本文不建议在同一个数据库中混合使用不同的存储引擎。

1.ALTER TABLE

将表从一个存储引擎修改为另一种存储引擎最简单的方式是执行DDL语句,下面语句将mytable的引擎有InnoDB改为MyISAM:

mysql>ALTER TABLE table_name ENGINE=MyISAM ;

执行效果如下图:

这种修改方法试用与任何存储引擎,但是需要注意的是:如果表的数据量很大,执行的时间会很长,Mysql会将原表的数据复制到一张新表中,在复制的期间可能会消耗完所有的系统I/O能力,同时会对原表上加读锁。同时更换存储引擎后的新表将丢失旧的存储引擎一切特性,例如InnoDB转换为MyISAM之后,所有的外键将丢失。

2.导出与导入

为了更好的控制转换过程,可以使用mysqldump工具将数据导出到文件,然后手动的修改文件CREATE TABLE 语句的存储引擎选项ENGINE,注意同时修改表名,因为同一个数据库中不能存在相同的表名,还要注意的是,mysqldump中会默认在CREATE TABLE 前加上DROP TABLE 语句,不注意这一点可能会导致数据丢失。

3.CREATE 和 SELECT

这种方式相对于前面两种高效和安全的特点。不需要导出整个表的数据,而是创建一张新的表,然后通过INSERT .....SELECT 语法来导入数据。

如果数据量不大的话,上面操作处理结果很令人满意。如果数据量很大,可以分批操作,针对每一段数据执行事务提交,避免大事务带来的问题,例如可以根据时间筛选或者根据id大小筛选分段提交。

START TRANSACTION;

INSERT INTO innodb_table SELECT * FROM mytable where id between x AND y (或者create_time之类);

COMMIT;

mysql存储引擎的方式_Mysql转换表存储引擎的三种方式相关推荐

  1. mysql 表中添加数据类型_MySQL数据表添加字段(三种方式)

    MySQL 数据表是由行和列构成的,通常把表的"列"称为字段(Field),把表的"行"称为记录(Record).随着业务的变化,可能需要在已有的表中添加新的字 ...

  2. Excel中数据透视表数据源更新的三种方式

    Excel中数据透视表数据源更新的三种方式 1.在原有的基础上重新选择数据源 2.变数据源为表格形式,在创建一个透视表,之后如果添加的数据,选中透视表右键刷新即可 3.利用更新过的数据源再重新创建一个 ...

  3. Action 中获取表单数据的三种方式

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/53138905  冷血之心的博客) Action 中获取表单提交数据 ...

  4. 阻止路由跳转得方式_vue中路由跳转的三种方式 简洁易懂

    router-view 实现路由内容的地方,引入组件时写到需要引入的地方 需要注意的是,使用vue-router控制路由则必须router-view作为容器. 通过路由跳转的三种方式 1.router ...

  5. 使用mysql创建外键约束_Mysql创建外键约束的两种方式

    通过给mysql的表字段添加外键约束,可以有效的保持数据的一致性和完整性,数据就不会很容易出问题. 1.创建表时直接创建外键约束create table books( bookid number(10 ...

  6. oracle读取数据方式,关于oracle数据库读取数据的三种方式

    打开oracle sqldeveloper,连接到HR模式下的数据库,在SQL工作表中,执行如下语句: CREATE TABLE WANG( Name  varchar2(6), ID     num ...

  7. MySQL数据库——MySQL数据表添加字段(三种方式)

    MySQL 数据表是由行和列构成的,通常把表的"列"称为字段(Field),把表的"行"称为记录(Record).随着业务的变化,可能需要在已有的表中添加新的字 ...

  8. 如何把wma转换成mp3格式?三种方式任你使用

    如何把wma转换成mp3格式?音频是记录.传播声音的关键途径之一,也是增强信息交流.情感表达的重要媒介之一.为了能够全面发挥出音频的重要作用,需要通过多样化的格式对其内容进行存储.传播.随着现代化技术 ...

  9. MySQL忽略主键冲突,避免重复插入数据的三种方式

    方案一:ignore 插入时检索主键列表,如存在相同主键记录,不更改原纪录,只插入新的记录. INSERT IGNORE INTO ignore关键字所修饰的SQL语句执行后,在遇到主键冲突时会返回一 ...

最新文章

  1. ASP.Net中自定义Http处理及应用之HttpModule篇
  2. linux svn missingargument -m,缺少參數-m在windows powershell中使用svn。
  3. Devexpress 10.2.3 Demo 批量生成脚本
  4. 玩转动态编译 - 高级篇:一,IL访问静态属性和字段
  5. ADS下C语言中局部变量的存储位置分配
  6. ios动态获取UILabel的高度和宽度
  7. oracle lpad 字符集,oracle Lpad()函数和Rpad()函数的用法
  8. oracle 10g在redhat4.6上的安装
  9. JSON.parse和eval的区别
  10. 一次关于聚合根的激烈讨论
  11. Netlog的数据库及LAMP架构
  12. CSS动画翻转的效果
  13. 网络安全 (九 缓冲区溢出metasploit)
  14. WSO2 XMl转JSON
  15. longitudinal models | 纵向研究 | mixed model
  16. 利用Linux自带的logrotate管理日志
  17. 带你彻底击溃跳表原理及其Golang实现!(内含图解)
  18. SSM框架搭建简单实例
  19. Android使用百度地图sdk,实现微信发送位置功能
  20. HTML转义字符、Javascript转义字符、HTML特殊字符对照表

热门文章

  1. 使用windows activeX 在Webclient UI 中打开word文档
  2. how to get context node reference CN0X from view controller reference
  3. SAP gateway 后台系统的 OData service 服务探测机制实现原理
  4. SAP SuccessFactor学习中心的通知机制
  5. SAP Cloud for Customer和SAP CRM的行业解决方案列表
  6. java生成docx_用java新建一系列文件.docx
  7. docker添加jar包_docker配置容器运行jar包
  8. python linux 优化_Python 代码性能优化技巧
  9. find命令过滤 no such_运维老手常用的linux命令操作
  10. shell 连接 mysql_如何把mysql语句写在shell里,运行后仍然是一个与mysql数据库连接的状态?...