您的位置:首页 > 健康 > 美食 > 六安城市网地址在哪里_彩票网站维护会跑路吗_八八网_线上推广费用预算

六安城市网地址在哪里_彩票网站维护会跑路吗_八八网_线上推广费用预算

2025/7/3 12:24:31 来源:https://blog.csdn.net/qq_35461948/article/details/144685562  浏览:    关键词:六安城市网地址在哪里_彩票网站维护会跑路吗_八八网_线上推广费用预算
六安城市网地址在哪里_彩票网站维护会跑路吗_八八网_线上推广费用预算

        上一篇:《第1章-7 其它存储引擎》,接着讲讲如何转换表的引擎,平时基本用不上,特定情况才会去操作。

转换表的引擎

        有很多种方法可以将表的存储引擎转换成另外一种引擎。每种方法都有其优点和缺点。我们主要讲述其中的三种方法。

ALTER TABLE

        将表从一个引擎修改为另一个引擎最简单的办法是使用ALTER TABLE语句。下面的语句将mytable的引擎修改为InnoDB :

ALTER TABLE mytable ENGINE = InnoDB;

        上述语法可以适用任何存储引擎。但有一个问题﹔需要执行很长时间。MySQL会按行将数据从原表复制到一张新的表中,在复制期间可能会消耗系统所有的I/O能力,同时原表上会加上读锁。所以,在繁忙的表上执行此操作要特别小心。一个替代方案是采用接下来将讨论的导出与导入的方法,手工进行表的复制。

        如果转换表的存储引擎,将会失去和原引擎相关的所有特性。例如,如果将一张 InnoDB表转换为MyISAM,然后再转换回 InnoDB,原InnoDB表上所有的外键将丢失。

导出与导入

        为了更好地控制转换的过程,可以使用mysqldump工具将数据导出到文件,然后修改文件中CREATE TABLE语句的存储引擎选项,注意同时修改表名,因为同一个数据厍中个能存在相同的表名,即使它们使用的是不同的存储引擎。同时要注意mysqldump默认会目动在CREATE TABLE语句前加上 DROP TABLE语句,不注意这一点可能会导致数据丢失

创建与查询(CREATE和 SELECT)

        第三种转换的技术综合了第一种方法的高效和第二种方法的安全。不需要导出整个表的数据,而是先创建一个新的存储引擎的表,然后利用INSERT…SELECT语法来导数据:

CREATE TABLE innodb_table LIKE myisam_table;
ALTER TABLE innodb_table ENGINE=InnoDB;
INSERT INTO innodb_table SELECT * FROM myisam_table;

        数据量不大的话,这样做工作得很好。如果数据量很大,则可以考虑做分批处理,针对每一段数据执行事务提交操作,以避免大事务产生过多的undo。假设有主键字段id,重复运行以下语句(最小值×和最大值y进行相应的替换)将数据导入到新表:

START TRANSACTION;
INSERT INTO innodb_table SELECT *FROM myisam_table
WHERE id BETWEEN x AND y;
COMMIT;

        这样操作完成以后,新表是原表的一个全量复制,原表还在,如果需要可以删除原表。如果有必要,可以在执行的过程中对原表加锁,以确保新表和原表的数据一致。

        Percona Toolkit提供了一个pt-online-schema-change的工具

在使用CSV引擎到数据的时候,适合用第三种去操作。

总结:

        转换表引擎的影响是很大的,优先使用第三种方式:重新创建和插入数据。转换表引擎平时基本不用,更多是提供一个处理思路

        

         上一篇:《第1章-7 其它存储引擎》

         下一篇:《

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com