分类: MySQL 5.7
-
本文记录一次 WordPress 动态首页性能问题的完整排查与优化过程。绕过 EdgeOne、Cloudflare 和 W3 Total Cache 后,发现中文首页真实动态生成时间接近 19 秒。通过 PHP-FPM slowlog、MySQL EXPLAIN 与实际 SQL 基准测试,最终定位到 Post Views Counter 的热门文章排行榜查询:完整 wp_posts.* 参与 SUM、GROUP BY 和 ORDER BY,导致 MySQL 5.7 创建磁盘临时表。通过 MU Plugin 将查询改造成“轻量排名 + Top N 完整文章加载”的两阶段结构后,中文动态首页降至约 0.83~0.89 秒,英文首页稳定在约 0.87~0.96 秒,同时保持排行榜顺序、浏览量和 Polylang 语言过滤正确。
-
本文介绍了在 Ubuntu 系统下使用 Docker 引擎管理多版本数据库的开发环境配置过程。文章解决了 VPN 环境下的网络超时问题,通过指定公共 DNS 和配置 DaoCloud 镜像加速器实现了镜像拉取。作者演示了部署 MySQL 5.7、MySQL 8.0 与 Redis 7.2 容器的完整步骤,包括编写 Docker Compose 文件及处理 8.0 连接兼容性。最终实现了容器间的网络互通与数据持久化,为项目提供稳定且版本隔离的数据库支持。
-
针对 WordPress 代码块中 Emoji 显示异常的问题,本文分析了数据库字符集不支持及前端图片替换机制导致其转换为 HTML 实体或 img 标签的原因。通过检查并升级核心表字符集为 utf8mb4、在主题 functions.php 中移除相关过滤器、以及手动修正旧文章内容的三个步骤,可彻底解决该问题,确保 Emoji 在前端代码块中原样展示,且适用于代码高亮插件。
-
在 Windows 10 中尝试将 MySQL 5.7 直接更新至 8.0 时,安装向导提示只能升级至 5.7.44 版本,无法跨版本更新。为确保升级成功,采取了先备份所有数据库,然后卸载系统中所有以 MySQL 开头的软件的方案。卸载完成后重新运行安装程序,此时不再提示升级,而是显示全新安装选项,选择 Full 类型进行安装,安装列表确认了将部署 MySQL 8.0。
-
在 MySQL 5.7 中清空包含 300 多万条记录的表时,当剩余记录达到 200 多万时系统提示 1206 错误,表明锁数量超过了锁表大小。文章参考相关资料,通过编辑 Windows 系统下的 my.ini 配置文件,将 innodb_buffer_pool_size 变量设置为较高值。由于重启服务时遇到错误 1053,最终选择重启计算机。再次执行清空表操作后,问题解决,操作成功完成。
-
本文针对 MySQL 5.7 数据库中查询 json 字段同一层级结构多个相同字段值的问题进行了说明。文章以提取 announcement-bar 下 blocks 中的 settings.text 为例,展示了使用通配符构建路径的 SQL 写法。该查询返回结果为数组,若数据不存在则返回 NULL。文中特别指出,路径中的 announcement-bar 必须加上双引号,否则会因 Invalid JSON path expression 报错。
-
针对 MySQL 5.7 JSON 字段在队列任务并发执行时导致数据丢失的问题,文章记录了尝试使用 JSON_ARRAY_APPEND 函数进行原子操作的过程。在处理删除数组元素时,因 JSON_SEARCH 不支持数字且并发下依然存在残留,曾尝试添加锁,但最终发现问题根源在于另一处代码不断添加数据并频繁入队列。通过调整为数据添加完毕后再统一批量入队列,最终确保数据清空逻辑符合预期,解决了并发冲突与数据不一致。
-
针对 MySQL 5.7 中 theme_table1 表的 JSON 数组字段 theme_table2_ids 存储关联 ID 的场景,本文介绍了如何查询 theme_table2 表记录是否存在于此字段中。文章展示了利用 JSON_CONTAINS 函数编写 SQL 的具体实现过程,通过 JOIN 操作成功实现了基于 JSON 字段的关联查询需求。
-
在 MySQL 5.7 中,针对通过字段 table2_id 关联表 table2 主键 id 的表 table1,需要查询在 table1 中存在但在 table2 中不存在的数据。文章最终给出了解决该关联查询问题的具体 SQL 语句。
-
针对删除 MySQL 表时因外键约束导致的 1217 报错问题,文章介绍了通过查询 INFORMATION_SCHEMA.KEY_COLUMN_USAGE 表来定位引用关系的方法。根据查询结果筛选出对应的数据库及表名,优先删除引用表后再处理原表,即可解决无法删除的问题并成功完成操作。
