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;

时间: 2024-11-05 20:18:36

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 my

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 <方

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

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

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技术内幕-InnoDB存储引擎-读书笔记(二)

MySQL技术内幕-InnoDB存储引擎-读书笔记(二) 作为php开发,使用mysql总是少不了的 系列文章博客链接 http://itsong.net/articles/466.html 第三章 文件 mysql与innodb几个类型的文件 参数文件,配置路径.初始化参数.内存大小等 日志文件,包括错误日志,二进制日志,慢查询日志,查询日志 socket文件,用unix域套接字,unix domain socket来进行连接时需要的文件,这一般是本机连接,比通常tcp快 pid文件,进程id

Mysql技术内幕——InnoDB存储引擎

一.mysql体系结构和存储引擎 1.1.数据库和实例的区别 数据库:物理操作系统或其他形式文件类型的集合.在mysql下数据库文件可以是frm,myd,myi,ibd结尾的文件. 数据库实例:由数据库后台进程/线程以及一个共享内存区组成.数据库实例才是真正用来操作数据库文件的. mysql数据库是单进程多线程的程序,与sql server比较类似.也就是说,Mysql数据库实例在系统上的表现就是一个进程. 1.2.mysql的体系结构 mysql由连接池组件.管理服务和工具组件.sql接口组建