没有不值得去解决的问题,也没有不值得去学习的技术!

分类: MySQL

  • 本文记录一次 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 26.04 上利用 Docker 搭建 Go Gin 开发环境的全过程。通过编写 Dockerfile 预装 Git,构建 Go 1.26 Alpine 镜像,并编写 docker-compose.yml 接入现有的 MySQL 和 Redis 自定义网络。最终实现了在容器内运行 Gin 应用,成功验证了数据库连通性及 API 请求,实现了代码与数据库容器的分离部署。

  • 本文介绍了在 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 在前端代码块中原样展示,且适用于代码高亮插件。

  • 在 MySQL 8.0 环境中,包含 10000 个参数的 IN 条件查询导致执行时间过长,引发接口响应超时。经排查发现,将参数数量减少至 5 个后响应恢复正常,且数据表记录总数为 2000 万条。分析认为 SQL 未正确使用索引,通过调整 SQL 语句强制使用 USE INDEX,有效解决了查询耗时过长和超时问题。

  • 文章基于资深后端开发视角,复盘了传统MySQL手工分库分表在扩容、跨分片操作及运维方面的痛点,对比了TiDB、OceanBase等主流NewSQL分布式数据库的优劣势与适用场景,重点阐述了TiDB在兼容MySQL协议与自动分片上的价值。文中还厘清了TiDB与ElasticSearch的边界,指出两者定位互补,需根据是否需要全文检索决定是否保留检索引擎,并给出了兼顾事务处理与检索需求的架构演进路线。

  • 网站后台因 MySQL 连接报错无法访问,经排查发现服务因数据表损坏停止启动。深入分析日志并检查磁盘资源,确认根分区空间已耗尽。通过将 Linode 实例存储配置从 80GB 升级至 160GB,释放了磁盘空间。重启服务后再次访问,网站后台恢复正常登录,不再报错。

  • 本文针对 Yii2 框架中接口响应字段类型与 MySQL 数据库定义不一致的问题进行了说明。通过将 components[‘db’] 中的 PDO::ATTR_STRINGIFY_FETCHES 和 PDO::ATTR_EMULATE_PREPARES 属性设置为 false,调整了数据库连接的配置。重新测试接口后发现,status 等字段的数据类型已恢复为 tinyint,确保了响应类型与数据库表结构保持一致。

  • 文章针对 Yii2 运行时出现的 Malformed UTF-8 characters 异常进行分析,定位原因在于响应数据包含 MySQL 的 Point 类型字段。虽尝试使用 ST_X 和 ST_Y 空间函数及 addSelect() 方法提取经纬度来规避直接序列化错误,但考虑到模型层自动处理的复杂性,最终放弃使用 Point 类型字段,将数据库结构调整为使用两个独立的 Decimal 字段分别存储经纬度。

  • 本文针对在 phpMyAdmin 登录时提示 mysqli::real_connect 认证方法未知的问题进行分析。由于 MySQL 8.0 默认使用 caching_sha2_password,而 PHP 7.3.9 环境不兼容,解决方法包括在 MySQL 配置文件中添加默认认证插件设置并重启服务,以及手动更新已有 root 用户的认证插件为 mysql_native_password。完成操作后,再次登录 phpMyAdmin 即可成功。

👨‍💻 个人品牌

王世强|PHP / Go 技术顾问

15+ 年 Web 后端开发经验,专注于系统维护、架构优化、性能调优及 Linux 运维。

持续运营技术博客 10+ 年,累计发布 1000+ 篇原创技术文章。

为创业团队、中小企业及独立开发者提供长期技术支持与远程合作服务。

👉 关于我 & 合作

.env (14) add (16) AI 翻译 (30) Apache (13) Array (19) A Tour of Go (67) Cache (13) CentOS (23) ChatGPT (20) ChatGPT Plus (15) chrome (19) Cloudflare (33) Codex (22) composer (42) composer.json (22) composer install (13) composer update (14) console (16) Container (25) curl (16) delete (31) Docker (32) Dockerfile (15) EdgeOne (33) environment variable (19) error (24) file (15) filter (20) Git (27) GitHub (23) Gitlab (15) GLM-5.2 (26) Go (61) go-tour-i18n (14) Google AdSense (29) Go 语言 (24) GraphQL (24) GraphQL API (14) Gutenberg (34) http (21) https (22) Interface (19) Jquery (13) json (24) Laravel (37) Laravel 6 (55) Laravel 9 (25) Lighthouse (17) Lighthouse 5 (14) Linux (22) Migrate (13) Module (17) MySQL (78) MySQL 5.7 (22) Nginx (63) normalize.css (28) OKX (15) OneinStack (21) PHP (67) php-fpm (19) php.ini (24) PHP 7.1.12 (22) PHP 7.4 (26) phpmyadmin (15) PhpStorm (24) Polylang (58) postman (18) Query (17) queue (16) Rancher (24) Redis (50) RESTful (27) RESTful API (23) Shopify (19) SlyTranslate (20) SQL (24) String (14) TortoiseGit (14) Twenty Twenty-Five (20) Ubuntu (40) update (20) VPN (17) W3 Total Cache (38) Windows 10 (46) WireGuard (28) WordPress (132) WordPress 多语言 (13) WPCode (23) Wstunnel (15) Yii (40) Yii 2 (70) Yii 2.0 (51) ZgoCloud (13) 多语言网站 (13) 多语言翻译 (35) 技术博客 (15) 故障排查 (15) 数据库迁移 (16) 浏览器 (14) 阿里云 (19)

2026 年 9 月
 123456
78910111213
14151617181920
21222324252627
282930