WordPress数据库表从MyISAM转换为InnoDB
WordPress建站中大型网站速度变慢的最大原因之一是数据库未优化,许多旧站点仍在其数据库中使用 MyISAM 存储引擎。近年来,InnoDB 表现出更好的性能和更可靠的性能。使用 InnoDB 而不是 MyISAM 的一个重要原因是缺少完整的表级锁定。这使您的查询处理得更快。
本文,晓得博客为你介绍如何将WordPress数据库表从MyISAM转换为InnoDB。
为什么数据库对于WordPress优化很重要?
WordPress CMS内容管理系统是一个动态的网络创作系统,这意味着您的网站仅在您的网站收到访问时才存在,这会触发一系列操作来显示您的页面内容。服务器接收访问, WordPress 引擎使用 PHP 函数和 SQL 调用对数据库执行一系列查询,以显示主题中每个页面的内容。
这实际上是整个互联网的工作方式:查询数据库,根据访问者的 cookie 和存储的现有内容,向访问者显示或多或少的个性化内容。也就是说,数据库引擎的性能、优化和速度对于尽可能快地动态生成内容至关重要。我们可以使用缓存系统解决常见查询,但有时必须检查数据库以显示更新的内容,并且越优化越好。
推荐:如何通过MySQL数据库添加新的WordPress用户
MyISAM 和 InnoDB 是什么?
MyISAM 和 InnoDB 是 MySQL数据库中的存储引擎,即它们是数据库管理器的一部分,负责数据库表的存储、管理和检索。简而言之,MyISAM 和 InnoDB 之间的主要区别在于:
- InnoDB 有行级锁,MyISAM 只能做表级锁。
- InnoDB 有更好的崩溃恢复。
- MyISAM 有FULLTEXT搜索索引,InnoDB 直到 MySQL 5.6 才有。
- InnoDB 实现事务、外键和关系约束,MyISAM 没有。
- MyISAM和InnoDB主要区别是不同类型操作的加载速度。
- MyISAM 正好相反,INSERT运行UPDATE速度比 InnoDB 快,但SELECT速度较慢。
- MyISAM 用于数据变化非常频繁和广泛的小型数据库。MyISAM 更好,因INSERT命令UPDATE更快。
- MyISAM 没有自动崩溃恢复,但您可以修复表。
- 支持 MyISAM 的一点是,这些表通常更小,它们比 InnoDB 表占用更少的磁盘空间。
- InnoDB 具有行级锁定。MyISAM 只有全表级锁定。
- InoDB 具有所谓的引用完整性,它涉及支持 外键(RDBMS) 和关系约束,而 MyISAM 没有 (DMBS)。
- InnoDB 支持事务,这意味着您可以提交和回滚。MyISAM 没有。
- InnoDB 更可靠,因为它使用事务日志进行自动恢复。MyISAM 没有。
如何将WordPress表从MyISAM迁移到InnoDB
如果您在一个相当新的 WordPress 站点上运行,那么您可能已经在使用 InnoDB MySQL存储引擎。但是对于较旧的WordPress网站,您可能需要快速检查一下。一些站点甚至可能混合并匹配了 MyISAM 和 InnoDB 表,您可以通过将它们全部转换在其中看到改进。
对数据库进行备份
选择哪种方法并不重要,但在修改数据库中的任何东西之前请制作备份副本。
如果您使用iThemes Security安全插件,那么就可以轻松完成。可以通过邮件将其发送给自己,将其保存在服务器上,或两者兼而有之。
也可以直接在 PHPMyAdmin 中执行此操作,可以在主机上找到的数据库管理工具。只需转到导出选项卡并下载数据库。如果发生灾难,可以在“导入”选项卡中再次导入恢复数据库。
推荐:(图文)BackupBuddy插件教程WordPress备份还原迁移插件教程
检查数据库空间
在开始将表从 MyISAM 转换为 InnoDB 之前,请确保服务器上有足够的磁盘空间来在此过程中存储新旧表。如果您之前的数据库大小为 50 Mb,那么在迁移之前拥有两倍以上。
此外应该记住,InnoDB 表比 MyISAM 表占用更多空间。
推荐:All-in-One WP Migration插件教程,WordPress网站整站备份迁移插件
使用 SQL 命令从 MyISAM 迁移到 InnoDB
如果您已经清楚,并且希望将表从 MyISAM 迁移到 InnoDB ,以利用其在动态站点中的客观性能改进,则可以通过两种方式完成该过程。
迁移最快的方法是使用 SQL 命令。甚至不必退出 PHPMyAdmin,将数据库中的特定表从 MyISAM 迁移到 InnoDB,
将wp_comments表转换为 InnoDB,如果只需要转换一些表,则命令将如下例所示:
ALTER TABLE wp_comments ENGINE=InnoDB;
将数据库中的所有表从 MyISAM 迁移到 InnoDB,如果要转换的所有表,那么命令将是这样的:
SELECT CONCAT('ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ' engine=InnoDB;')
FROM information_schema.TABLES WHERE ENGINE = 'MyISAM';
使用PHPMyAdmin从MyISAM迁移到InnoDB
也可以使用相同的 PHPMyAdmin 界面来执行此操作。只需打开您的数据库并单击一个表,然后单击“操作”选项卡,将在其中找到可以更改引擎的部分。完成该表后,对要转换的其余部分重复该过程。
使用WP-CLI从 MyISAM 迁移到 InnoDB
还可以使用 WordPress WP-CLI 命令界面将 MyISAM 表转换为 InnoDB。它会是这样的:
wp db query "SELECT CONCAT ('ALTER TABLE', TABLE_SCHEMA, '.', TABLE_NAME, 'ENGINE = InnoDB;') FROM information_schema.TABLES WHERE ENGINE = 'MyISAM'" --skip-column-names> db_optimize.sql
总结
以上是晓得博客为你介绍的WordPress数据库表从MyISAM转换为InnoDB的全部内容,希望对你的WordPress网站优化有所帮助,如有问题,欢迎留言探讨。
推荐:WPControl性能优化插件WordPress最简单的优化插件教程
Claude、Netflix、Midjourney、ChatGPT Plus、PS、Disney、Youtube、Office 365、多邻国Plus账号购买,ChatGPT API购买,优惠码XDBK,用户购买的时候输入优惠码可以打95折