首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将MyISAM转换为InnoDB

将MyISAM转换为InnoDB
EN

Database Administration用户
提问于 2015-08-13 13:40:40
回答 3查看 1.5K关注 0票数 1

在将myisam转换为innodb时需要考虑的事项是什么。

我有一张80 GB左右的带有引擎myisam的桌子。我想把它变成无害的。转换所需考虑的是什么。

我在用percona MySQL。我检查了表索引,上面的表没有全文搜索索引。

我计划使用percona在线方案更改。

做这项活动需要考虑哪些因素/前提?

EN

回答 3

Database Administration用户

发布于 2015-08-13 14:43:48

  1. InnoDB表往往比MyISAM表占用更多的空间。
  2. 在转换过程中,正在创建新的物理文件,因此您必须在磁盘上有空闲空间(很难估计,但为了安全起见,我可以说是120 g)。
  3. 如果使用Percona工具在线进行更改,则将使用触发器将原始表上的所有修改存储在临时表中。因此,根据DML操作,即插入/更新/删除,您可能需要更多的空间。注意,在高流量表上,触发器可能会影响性能。
  4. 可能需要调优一些与InnoDB相关的配置。

如果在您的设置中,您有两个或更多的服务器,如主从或主从(S),我认为最好是脱机,一次一台服务器。

票数 4
EN

Database Administration用户

发布于 2015-08-17 05:19:45

我有一个MyISAM2InnoDB博客,它彻底地涵盖了你的问题。

讨论了指标间的差异,特别是PRIMARY KEYFULLTEXT、空间(2x-3x为典型)、LOCK TABLES、减少key_buffer_size、增加innodb_buffer_pool_size (非常重要)等。

票数 1
EN

Database Administration用户

发布于 2015-08-17 06:01:31

不确定这个问题是否解决了。但是,正如建议的那样,您可以这样做: 1. ALTER方法: ALTER ENGINE=INNODB;这种方法的注意事项:正如您提到的,您有一个大表,这个命令需要时间来执行。

  1. 创建表并插入方法:您可以使用INNODB存储引擎创建一个空表,并开始将源表中的数据转储到该表中。如果数据很大,可以根据主键执行条件插入。以块形式插入数据。

在进行此操作之前,您应该考虑查看以下几个链接:http://dev.mysql.com/doc/refman/5.6/en/converting-tables-to-innodb.html https://rtcamp.com/tutorials/mysql/myisam-to-innodb/ https://mariadb.com/kb/en/mariadb/converting-tables-from-myisam-to-innodb/

希望这会有帮助!

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/110917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档