• 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;
  • 相关阅读:
    iOS获取设备唯一标识的各种方法?IDFA、IDFV、UDID分别是什么含义?
    李洪强iOS开发之FMDB线程安全的用法
    李洪强iOS开发之-FMDB的用法
    李洪强iOS开发之-sql数据库的使用
    iOS截屏功能
    李洪强和你一起学习前端之(6)css行高,盒模型,外边距
    iOS网络_优化请求性能
    iOS-ARC-环境下如何查看引用计数的变化
    远程桌面连接没有授权此用户进行远程登陆
    路由重发布
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4582718.html
Copyright © 2020-2023  润新知