MySQL改变表的存储引擎

MySQL提供了多种数据库存储引擎,存储引擎负责MySQL数据库中的数据的存储和提取。不同的存储引擎具有不同的特性,有时可能需要将一个已经存在的表的存储引擎转换成另外的一个存储引擎,有很多方法可以完成这种转换,每一种方法都会有优缺点,应当根据实际情况去选择,下面讲述三种转换MySQL表引擎的方法:

ALTER TABLE

转换MySQL表引擎最简单的方法是直接使用ALTER TABLE去修改表的定义。下面的这条语句将mytable表引擎转换成InnoDB

mysql>ALTER TABLE mytable ENGINE = InnoDB;

优点:简单、可以使用于任何的表引擎。

缺点:需要执行很长时间,转换的过程是先定义一个新的引擎表,然后把原表中的数据复制过来。在复制的过程中会消耗系统大量的I/O能力,同时还会在原表上加上读锁。所以,在一个非常繁忙的系统中使用这种转换方式是行不通的,纵然这很简单。

另外,需要注意的是,如果使用这种方式转换表引擎会失去和原表引擎相关的特性。例如,将一张InnoDB表转换成MyISAM表,然后再转换成InnoDB表,纵然你什么都没有做,但是原表中的外键将会消失。

导入和导出

为了更好的控制转换的过程,可以是使用mysqldump工具将数据导出到文件,然后修改文件中的CREATE TABLE语句的ENGINE选项,注意修改表名,因为一个数据库中不可能有两个同名的表,即时它们使用不同的存储引擎。

SHELL>
mysqldump   -u   用户名   -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;

时间: 2024-10-13 00:57:37

MySQL改变表的存储引擎的相关文章

mysql修改表的存储引擎(myisam<=>innodb)

查看当前数据库的所支持的数据库引擎以及默认数据库引擎 mysql> show engines; +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +----

MySQL更改表的存储引擎

MySQL它提供了多种数据库存储引擎,存储引擎负责MySQL存储和检索数据的数据库.不同的存储引擎具有不同的特性,能须要将一个已经存在的表的存储引擎转换成另外的一个存储引擎.有非常多方法能够完毕这样的转换,每一种方法都会有优缺点.应当依据实际情况去选择.以下讲述三种转换MySQL表引擎的方法: ALTER TABLE 转换MySQL表引擎最简单的方法是直接使用ALTER TABLE去改动表的定义.以下的这条语句将mytable表引擎转换成InnoDB mysql>ALTER TABLE myta

Linux上检查MySQL数据表的存储引擎类型三板斧

MySQl主要使用两种存储引擎:MyISAM 和 Innodb.MyISAM是非事务的,因此拥有读取更快,然而InnoDB完全支持细颗粒度的事务锁定(比如:commit/rollback).当你创建一张新的MySQL表时,你要选择它的类型(也就是存储引擎).如果没有选择,你就会使用与预设置的默认引擎. 如果你想要知道已经存在的MySQL数据表的类型,这里有几种方法达到. 方法一 如果你可以访问phpMyAdmin,你可以从phpMyAdmin找出默认的数据库类型.从phpMyAdmin中选中数据

shell脚本:<批量检查并更改MySQL数据库表的存储引擎><工作中总结>

Work Description: 在搭建完Percona XtraDB Cluster(一种MySQL架构,简称PXC),需要把old mysql中的数据导入到new mysql中,但PXC只支持InnoDB表,非InnoDB表无法同步到PXC的其它节点上,因此我需要批量统一表的引擎. Event Description: 1.需要写个shell脚本,完成两个目的:<1>查询(ck)ENGINE的状态 <2>更改(al)引擎状态 2.需要在管理机上,访问远程MySQL <方

mysql修改表的存储引擎

#首先建立一个表结构相同的表 mysql>create table user2 like user; #修改存储引擎 mysql>alter table user2 engine=innodb; #导入数据 mysql>insert into user2 select * from user;

MySQL查看和修改表的存储引擎

如何查看MySQL的当前存储引擎? 一般情况下,mysql会默认提供多种存储引擎,你可以通过下面的查看: 看你的mysql现在已提供什么存储引擎: mysql> show engines; 看你的mysql当前默认的存储引擎: mysql> show variables like '%storage_engine%'; 你要看某个表用了什么引擎(在显示结果里参数engine后面的就表示该表当前用的存储引擎): mysql> show create table 表名; 如何查看Mysql服

修改mysql表的存储引擎

方法一. alter table mytable engine = InnoDB;//将mytable表引擎改为InnoDB. 方法二. 使用mysqldump 将表导出,然后修改 表create table 部分 engine 方法三. create table innodb_table like my_table;//创建一张新表 alter table innodb_table engine = InnoDB;//修改新表的存储引擎 insert into innodb_table  se

MYSQL 浅谈MyISAM 存储引擎

思维导图 介绍 mysql中用的最多存储引擎就是innodb和myisam.做为Mysql的默认存储引擎,myisam值得我们学习一下,以下是我对<高性能MYSQL>书中提到的myisam的理解,请大家多多指教. 特点 > 不支持事务 证明如下: >> 表记录:t2表的engine是myisam. >> 操作 注意:如果你在数据库进行事务操作,但是事务无法成功,你就要看你的表引擎了,看这种引擎是否支持事务. >> 下面请看innodb中的事务操作 &g

MySQL中常用的存储引擎(MyISAM 和InnoDB)

 数据库存储引擎是数据库底层软件组件,数据库管理系统(DBMS)使用存储引擎进行创建.查询.更新和删除数据操作.不同的存储引擎提供不同的存储机制.索引技巧.锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能.现在许多的数据库管理系统都支持多种不同的存储引擎.MySQL的核心就是存储引擎. 使用 SHOW ENGINES; 命令查看MySQL支持的存储引擎,  Support 列表示某种引擎是否可以使用,YES表示可以,NO表示不可以,DEFAULT表示当前默认存储引擎. mysql> SH