当前位置: 首页 > news >正文

MySQL改变表的存储引擎

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;

相关文章:

  • 30 个 PHP 的 Excel 处理类
  • Factory Method模式 (一)
  • Androidn Notification的使用,解决找不到setLatestEventInfo方法
  • Mesos 框架的测试平台 minimesos
  • easyui的datagird动态设置当前页数
  • Spring-MVC
  • Irrlicht 3D Engine 笔记系列 之 教程6- 2D Graphics
  • 支撑起整个互联网时代的 7 款开源软件
  • 【Windows 10 应用开发】如何防止应用程序被截屏
  • gradle.org
  • c# 可空类型
  • jQuery的选择器总结
  • 流程管理软件示例:构建闭环的隐患管理
  • dubbo请求调用过程分析
  • AC日记——魔法森林 洛谷 P2387
  • 10个确保微服务与容器安全的最佳实践
  • 2017 前端面试准备 - 收藏集 - 掘金
  • E-HPC支持多队列管理和自动伸缩
  • Fundebug计费标准解释:事件数是如何定义的?
  • IDEA 插件开发入门教程
  • iOS 系统授权开发
  • JS题目及答案整理
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • Service Worker
  • spring security oauth2 password授权模式
  • 初识 webpack
  • 简单数学运算程序(不定期更新)
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 使用 Docker 部署 Spring Boot项目
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 为视图添加丝滑的水波纹
  • 你对linux中grep命令知道多少?
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • 回归生活:清理微信公众号
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • $().each和$.each的区别
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (C语言)逆序输出字符串
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (十一)图像的罗伯特梯度锐化
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .Net FrameWork总结
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • @html.ActionLink的几种参数格式
  • @javax.ws.rs Webservice注解
  • @软考考生,这份软考高分攻略你须知道
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择
  • [ 云计算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的文件和文件夹