大型WordPress网站速度变慢的最大原因之一是它们的数据库尚未优化。许多较旧的站点仍在其数据库中使用MyISAM存储引擎。近年来,InnoDB表现得更好,更可靠。在MyISAM上使用InnoDB的一个重要原因是缺乏完整的表级锁定。这使您的查询处理速度更快。
InnoDB与MyISAM
以下是InnoDB和MyISAM之间的一些主要区别:
-
- InnoDB具有行级锁定。MyISAM只有完整的表级锁定。
- InnoDB具有所谓的参照完整性,它涉及支持外键(RDBMS) 和关系约束,而MyISAM没有 (DMBS)。
- InnoDB支持事务,这意味着您可以提交和回滚。MyISAM没有。
- InnoDB更可靠,因为它使用事务日志进行自动恢复。MyISAM没有。
您使用的是MyISAM还是InnoDB?
如果您在一个相当新的WordPress站点上运行,您很可能已经在使用InnoDB MySQL存储引擎。但是对于较旧的WordPress网站,您可能需要快速检查一下。一些站点甚至可能混合并匹配了MyISAM和InnoDB表,您可以通过将它们全部转换来看到改进。请按照以下这些简单的步骤进行检查。
第1步
登录到phpMyAdmin并单击进入您的mySQL数据库。
第2步
快速扫描或对“Type”列进行排序,您就可以看到您的表正在使用哪些存储引擎类型。在下面的这个示例中,您可以看到其中两个表仍在使用MyISAM。
查找MyISAM表
或者,您可以运行查询以查看是否存在任何myISAM表。将“database”替换为您的数据库名称。
ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = ‘database’ and ENGINE = ‘myISAM’
SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'database' and ENGINE = 'myISAM'
使用phpMyAdmin将MyISAM转换为InnoDB
您可以相当轻松地将MyISAM转换为InnoDB。下面的这个例子是使用wp_comments
表格。只需运行ALTER命令即可将其转换为InnoDB存储引擎。注意:我们始终建议在对MySQL数据库运行任何操作之前对其进行备份。
ALTER TABLE wp_comments ENGINE=InnoDB;
确保您运行的是MySQL 5.6.4或更高版本,否则,您可能会遇到InnoDB尚不支持全文索引的问题。
或者,您也可以使用phpMyAdmin手动转换它们。只需单击myISAM表,单击进入“Operations”选项卡,然后更改存储引擎。
将MyISAM转换为InnoDB
使用WP-CLI将MyISAM转换为InnoDB
WP-CLI是一个命令行工具,供开发人员管理WordPress安装的常见任务(并不常见)。查看这篇关于如何使用WP-CLI将MyISAM转换为InnoDB的文章。