博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL改变表的存储引擎
阅读量:5924 次
发布时间:2019-06-19

本文共 974 字,大约阅读时间需要 3 分钟。

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;

转载地址:http://wkavx.baihongyu.com/

你可能感兴趣的文章
又一款 Fish Shell 主题: eden
查看>>
magento 1只有登录后才能访问网站
查看>>
LinkedHashSet内部是如何工作的(翻译)
查看>>
不一样的山顶角
查看>>
chrome扩展开发之旅 第五篇
查看>>
JS递归与二叉树的遍历
查看>>
基于HTML5的WebGL呈现A星算法的3D可视化
查看>>
Android Studio 1.5 RC1搭建NDK开发环境
查看>>
Apache JMeter 5.1.1 发布,压力测试工具
查看>>
2018届各大互联网公司校招薪资曝光汇总
查看>>
如何用 CSS 和 D3 创作一个无尽的六边形空间
查看>>
架构师必须要知道的阿里的中台战略与微服务
查看>>
快速体验 Sentinel 集群限流功能,只需简单几步
查看>>
手把手教你用RecyclerView实现猫眼电影选择效果
查看>>
《wireshark网络分析实践》1:wireshark简介
查看>>
实用贴:hadoop系统下载安装教程
查看>>
SAP使用BAPI创建物料主数据的最小输入
查看>>
腾瑞制药完成新一轮融资,君联资本、中金资本和IDG资本 ...
查看>>
携新一代车规级固态激光雷达而来,速腾聚创为助力自动驾驶量产有何新动作? ...
查看>>
idea 创建运行web项目时,报错: Can not issue executeUpdate() for SELECTs解决方案
查看>>