MySQL存储引擎–如何将MyISAM转换为InnoDB

时间:2023-02-20 08:59:56


大型网站发展缓慢的最大原因之一是他们的数据库没有得到优化。许多较老的站点仍在其数据库中使用MyISAM存储引擎。近年来,InnoDB表现出了更好的性能和更可靠的性能。使用InnoDB而不是MyISAM的一个重要原因是缺少完整的表级锁定。这使您的查询处理得更快。

  • InnoDB具有行级锁定。MyISAM只有完整的表级锁定。
  • InnoDB具有所谓的引用完整性,它涉及到支持外键(RDBMS)和关系约束,而MyISAM没有。
  • InnoDB支持事务,这意味着您可以提交和回滚。MyISAM没有。
  • InnoDB更可靠,因为它使用事务日志进行自动恢复。MyISAM没有。

你用的是MyISAM还是InnoDB?

如果你在一个全新的站点上运行,那么你很可能已经在使用innodbmysql存储引擎了。但是对于旧的站点,你可能需要做一个快速检查。有些站点甚至可能混合并匹配了MyISAM和InnoDB表,通过将它们全部转换,您可以看到改进。按照以下简单步骤进行检查。

第1步

登录到phpMyAdmin并点击进入mySQL数据库。

第2步

快速扫描或排序“Type”列,您可以看到您的表正在使用哪些存储引擎类型。在下面的示例中,您可以看到其中两个表仍在使用MyISAM。

MySQL存储引擎–如何将MyISAM转换为InnoDB


或者,您可以运行一个查询来查看是否存在任何myISAM表。将“database”替换为数据库名称。

SELECT TABLE_NAME,
ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'database' and ENGINE = 'myISAM'

使用phpMyAdmin将MyISAM转换为InnoDB

您可以很容易地将MyISAM转换为InnoDB。下面的示例使用wp\u comments表。只需运行ALTER命令将其转换为InnoDB存储引擎。注意:我们总是建议在对MySQL数据库执行任何操作之前备份它。

ALTER TABLE wp_comments ENGINE=InnoDB;

确保您运行的是MySQL
5.6.4或更高版本,否则,您可能会遇到InnoDB尚不支持全文索引的问题。如果你是Kinsta的客户,你不需要担心这个。

或者,也可以使用phpMyAdmin手动转换它们。只需单击myISAM表,单击“操作”选项卡,然后更改存储引擎。

MySQL存储引擎–如何将MyISAM转换为InnoDB


译者附录:

使用InnoDB切记在服务器关机前关闭MySQL服务,否则会造成数据丢失。