我有一个 mysql 5.1 服务器,其中包含大约 450 个表的数据库,占用 4GB 。这些表中的绝大多数(除了 2 个)都是 MyIsam。这在大多数情况下都很好(不需要事务),但是应用程序一直在增加流量,并且某些表由于更新时的表锁定而受到影响。这就是现在有 2 个表是 InnoDB 的原因。
较小表(100k 行)上的转换根本不需要很长时间,从而导致最少的停机时间。然而,我的一些跟踪表接近 5000 万行。有没有办法ALTER TABLE...ENGINE InnoDB在大桌子上加速?如果没有,是否有其他方法可以最大限度地减少这些写入繁重表的停机时间?
我在应用程序中有一个电影剪辑和照片表;这些表包含一个标签列,允许用户按标签搜索电影/照片;然而,整个数据库是使用 InnoDB 表设计的,专门用于数据完整性。
由于表不是 MyISAM,我不能使用全文功能(这很糟糕)。我正在考虑将这 2 个表更改为 MyISAM 表;然而,我在某处读到结合 MyISAM 和 InnoDB 表是一个非常糟糕的主意。
我真的很想在这些表上使用全文功能。
我的问题是这些:
我有一个数据库,由于一些问题,我需要将一些表从 MyISAM 转换为 InnoDB。
我基本上是这样做的:
set sql_log_bin = 0;
set sql_mode = 'STRICT_ALL_TABLES';
ALTER TABLE `table1` ENGINE = INNODB;
ALTER TABLE `table2` ENGINE = INNODB;
ALTER TABLE `table3` ENGINE = INNODB;
ALTER TABLE `table4` ENGINE = INNODB;
ALTER TABLE `table5` ENGINE = INNODB;
ALTER TABLE `table6` ENGINE = INNODB;
Run Code Online (Sandbox Code Playgroud)
它工作正常,但据我所知,我现在应该重新配置 my.cnf 然后重新启动 mysql 服务器,对吗?
如果服务器同时包含 MyISAM 和 InnoDB 表,我应该如何调整 my.cnf 文件?