惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
Schneier on Security
The Last Watchdog
The Last Watchdog
Cyberwarzone
Cyberwarzone
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Cyber Attacks, Cyber Crime and Cyber Security
L
Lohrmann on Cybersecurity
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
The Cloudflare Blog
V
V2EX
博客园_首页
博客园 - 聂微东
Vercel News
Vercel News
人人都是产品经理
人人都是产品经理
G
GRAHAM CLULEY
T
Tenable Blog
Last Week in AI
Last Week in AI
Y
Y Combinator Blog
L
LINUX DO - 最新话题
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
SecWiki News
SecWiki News
博客园 - 三生石上(FineUI控件)
S
Secure Thoughts
N
News | PayPal Newsroom
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
T
Troy Hunt's Blog
博客园 - 【当耐特】
Forbes - Security
Forbes - Security
H
Hacker News: Front Page
A
About on SuperTechFans
B
Blog RSS Feed
Engineering at Meta
Engineering at Meta
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
罗磊的独立博客
D
DataBreaches.Net
P
Privacy & Cybersecurity Law Blog
Schneier on Security
Schneier on Security
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Google DeepMind News
Google DeepMind News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Jina AI
Jina AI
D
Docker
P
Proofpoint News Feed

博客园 - bwg007

如何使用 Rsync 实现服务器与网站数据的增量同步备份? 分享一款优惠码复制插件-lecouponcopy 分享一款实用的WordPress自定义关键字自动替换插件-LeKeyReplace 分享一款简单小巧的Windows录屏软件-Wink 苹果手机iPhone6版本过低无法安装微信的解决办法 亚马逊免费云服务器申请教程2025年最新版 频繁收到腾讯云恶意文件通知"/tmp/phpaQUscx'的原因及解决办法 WordPress外部链接添加nofolow标签的设置方法(插件法) WordPress古腾堡编辑器和经典编辑器详细对比,哪个好用? PDF编辑工具有哪些 5款好用的PDF批注编辑软件推荐 Mac截图软件工具哪个好用(6款Mac截图软件工具推荐) 阿里云轻量应用服务器快速安装WordPress网站系统 如何在FreeBSD 12上安装osTicket IPFILTER快速入门指南 typecho程序.htaccess文件 如何安装和配置WordPress(WP)程序 2019阿里云双十二活动发布 香港服务器首年119元 Vultr VPS修改root密码的方法 - bwg007 了解JavaScript的日期和时间
WordPress数据库MyISAM表转换成InnoDB表的具体方法是怎么样的?
bwg007 · 2026-01-27 · via 博客园 - bwg007

将 WordPress 数据库的 MyISAM 表转换为 InnoDB,主要有以下几种方法。操作前,请务必了解其利弊。

🤔 为什么要转换?利弊分析

  • ✅ 优点

    • 高并发性能:InnoDB 支持行级锁,而 MyISAM 是表级锁。在高并发读写(如评论、订单)场景下,InnoDB 能显著减少锁等待,提升网站响应速度。

    • 数据安全性:支持事务和崩溃自动恢复,断电或异常关闭后数据更不易损坏。

    • 现代兼容性:支持外键,与当前 WordPress 版本及多数插件的设计更匹配。

  • ⚠️ 注意事项

    • 磁盘空间:InnoDB 表通常比 MyISAM 占用更多磁盘空间,请确保服务器有足够余量。

    • 旧版 MySQL 限制:若 MySQL 版本低于 5.6.4,InnoDB 不支持全文索引,可能影响依赖此功能的部分搜索插件。

结论:对于绝大多数 WordPress 站点,尤其是使用 WooCommerce 等电商插件的,强烈推荐使用 InnoDB。


🛠️ 准备工作:检查与备份

  1. 检查 MySQL 版本

    确保版本 ≥ 5.6.4,最好是 MySQL 5.7+ 或 MariaDB 10.2+。可通过 SELECT VERSION();命令查看。

  2. 检查现有数据表

    执行以下 SQL 查询,列出所有 MyISAM 表(将 your_db_name替换为你的数据库名):

    sql

    SELECT TABLE_NAME, ENGINE

    FROM information_schema.TABLES

    WHERE TABLE_SCHEMA = 'your_db_name' AND ENGINE = 'MyISAM';

    如果结果为空,说明已全部是 InnoDB,无需操作。

  3. ⚠️ 务必完整备份数据库

    这是最重要的一步,防止操作失误导致数据丢失。可通过 phpMyAdmin 的“导出”功能或服务器命令行 mysqldump工具完成。


🚀 核心操作:三种转换方法

方法一:使用 phpMyAdmin (图形化界面)

  1. 登录 phpMyAdmin,选择你的 WordPress 数据库。

  2. 在表列表中找到“类型”为 MyISAM的表。

  3. 勾选目标表,点击上方的“操作”(Operations) 选项卡。

  4. 在“存储引擎”(Storage Engine) 下拉框中,选择 InnoDB

  5. 点击“执行”(Go) 即可。

方法二:执行 SQL 命令 (通用高效)

  1. 登录 phpMyAdmin,进入你的数据库,点击“SQL”选项卡。

  2. 粘贴以下命令(将 wp_替换为你的表前缀),然后执行:

    sql

    ALTER TABLE wp_commentmeta ENGINE=InnoDB;

    ALTER TABLE wp_comments ENGINE=InnoDB;

    ALTER TABLE wp_links ENGINE=InnoDB;

    ALTER TABLE wp_options ENGINE=InnoDB;

    ALTER TABLE wp_postmeta ENGINE=InnoDB;

    ALTER TABLE wp_posts ENGINE=InnoDB;

    ALTER TABLE wp_termmeta ENGINE=InnoDB;

    ALTER TABLE wp_terms ENGINE=InnoDB;

    ALTER TABLE wp_term_relationships ENGINE=InnoDB;

    ALTER TABLE wp_term_taxonomy ENGINE=InnoDB;

    ALTER TABLE wp_usermeta ENGINE=InnoDB;

    ALTER TABLE wp_users ENGINE=InnoDB;

    你也可以只转换上一步查询出的 MyISAM 表。

方法三:使用 WP-CLI (命令行)

如果你有服务器的 SSH 权限,此方法最高效。

  1. 连接到你的服务器。

  2. 进入 WordPress 根目录。

  3. 执行以下命令,系统将自动转换所有 MyISAM 表:

    bash

    wp db query "SELECT CONCAT('ALTER TABLE ', table_name, ' ENGINE=InnoDB;') FROM information_schema.TABLES WHERE table_schema = DATABASE() AND engine = 'MyISAM';" | wp db query

    你也可以先预览要执行的 SQL 命令:

    bash

    wp db query "SELECT CONCAT('ALTER TABLE ', table_name, ' ENGINE=InnoDB;') FROM information_schema.TABLES WHERE table_schema = DATABASE() AND engine = 'MyISAM';"


✅ 收尾工作:验证与优化

  1. 验证转换结果

    再次执行步骤 2 中的 SQL 查询,确认已无 MyISAM表。或进入 phpMyAdmin 检查表类型。

  2. (可选) 优化数据表

    转换后,可运行以下命令优化表结构和索引,提升性能:

    sql

    OPTIMIZE TABLE wp_posts, wp_postmeta, wp_comments, wp_commentmeta, wp_options, wp_termmeta, wp_term_taxonomy, wp_term_relationships, wp_users, wp_usermeta, wp_links;

    也可通过 WordPress 后台“工具”→“数据库”中的“修复和优化数据库”功能进行。


💡 常见问题 (FAQ)

  • 转换过程会锁表吗?

    会的。ALTER TABLE操作会锁定整张表。建议在网站访问量最低的时段进行,大型站点转换可能需要几分钟甚至更久。

  • 转换后网站打不开或报错?

    大概率是备份不完整或操作失误。立即从备份中恢复数据库,然后仔细检查并重试。

  • 能否用插件一键转换?

    可以,例如 MyISAM to InnoDB Converter​ 插件。但本质上它也是执行 SQL 命令,同样需要提前备份,且对服务器环境有要求。