EXPLORE · 循迹而来

MySQL

FOLLOW YOUR CURIOSITY

把同一个话题,读得更深。

这个话题下有 20 篇手记。

用免注册试用和分享邀请给小程序拆掉注册墙

281 阅读

记录炊想 2.0.16 如何用微信身份、复用用户表、分享邀请和转化埋点拆掉邮箱注册墙,并对照当前 3.1.0:先浏览,主动勾选协议后微信登录,邮箱可选绑定或找回原账号,邀请双方各得 10 次搭配。历史游客方案与现行登录流程分别说明。

零拷贝与 IO 模型等综合面试问答

1354 阅读

本篇面试指南围绕系统设计与实现展开,涵盖项目亮点、零拷贝原理、五大IO模型及NIO与多路复用区别、Future阻塞获取结果机制、ReentrantLock 与 synchronized 的实现与差异、AQS、乐观/悲观锁、Paxos 协议、B+树特性、TCP 拥塞控制、JVM 实践、数据库分库分表及其缺点、分布式事务(TCC)方案、RocketMQ 消息可靠性保证,以及常见算法题。通过概念阐释与实现细节,帮助读者系统复习面试热点。

一天里做完的十几项优化

317 阅读

一台 2 核 1.7 GB、出口约 4 Mbps 的服务器上跑着六个 Spring Boot 应用。本文记录一次先测量、后动手的全面体检:证书自动续期与每日备份,用 rsync 加可复现构建把发版上传从 50 分钟压到十几秒,把占文章页 85% 的内联脚本逐字节核对后外置,第三方前端库改用固定版本副本,归档页从 260 毫秒降到 40 毫秒,修正软 404 与扫描器噪音,并记录音乐版权误判的真实原因,以及测完内存数据后决定不做的取舍。

从消失的博主标签查到 1478 倍的写放大

466 阅读

起点只是评论区的「博主」标签不见了,往下追却牵出了写放大 1478 倍的 binlog、一页 42 MB 的留言配图、跨五层嵌套的孤儿数据,以及同一个问题在代码里的四种答案。本文按排查顺序记录十四次改动的根因与取舍,包括两次把测量工具的毛病错当成站点故障的判断失误。

Java项目该如何选择8.4LTS与9.7LTS

306 阅读

MySQL 8.0 已于 2026 年 4 月正式进入 EOL,大量仍运行在 8.0 上的 Java 项目需要重新规划数据库版本。与此同时,MySQL 9.7 已成为新的 LTS,因此升级问题不再只是“8.4 还是 9.x”。本文结合官方升级路径,从 MySQL 8.4 与 9.7 的选择、认证插件变化、Connector/J、TLS、Upgrade Checker、SQL 回归、备份和回滚等方面,给出一套适用于 Spring Boot 项目的实际迁移方案。对于存量系统,更稳妥的策略通常是先迁移到 8.4 LTS,在稳定运行后再根据生命周期决定是否继续升级 9.7 LTS。

MySQL元数据锁与Online DDL排障实战

250 阅读

MySQL 的 Online DDL 并不意味着完全无锁。即使使用 INSTANT 算法,加字段仍可能等待元数据锁,并把后续查询拖入排队,最终耗尽 Java 服务的共享连接池。本文以 MySQL 8.4 和 InnoDB 为例,通过多会话实验还原阻塞链,结合锁记录、sys 视图与事务信息定位根因,区分变更算法、元数据锁等待和连接获取超时,并给出取消变更、缩短事务、兼容发布与故障演练方法,帮助建立可观测、可中止、可验证的数据库发布流程。

MySQL锁等待与连接池排队排查实战

380 阅读

接口变慢,并不一定是SQL执行慢。连接池排队、连接持有时间过长、行锁竞争和未结束的事务,都可能让系统在CPU不高时出现明显卡顿。本文以Java、HikariCP和MySQL为例,通过可复现实验拆分连接获取、数据库访问和连接占用时间,并结合sys视图定位阻塞者与长事务。同时分析连接池扩容、超时配置和事务拆分的适用边界,建立从应用监控到数据库诊断的排查路径,帮助开发者避免盲目加索引、加连接或重启服务。

从搜不到 AI 到重构博客搜索链路

340 阅读

博客搜索看似只是一次关键词查询,但真正可靠的搜索需要处理输入规范化、召回策略、排序逻辑、分页一致性、缓存隔离以及用户反馈等多个环节。本文记录一次真实的博客搜索重构过程:针对短关键词“AI”无法命中的问题,分析 MySQL 全文检索与模糊匹配叠加导致的召回缺陷,重新设计搜索契约,将字面匹配作为结果召回依据,全文检索作为排序辅助,同时完善 URL 编码、分页边界、空结果状态和自动化测试。通过这次改造,搜索功能从“偶尔能用”变成了一条行为明确、结果稳定、可持续演进的搜索链路。

AI评论审核背后的状态机与一致性设计

470 阅读

AI 评论审核真正的难点并不是调用大模型,而是如何让一个异步、不稳定、可重试的外部能力融入业务流程。本文以 Spring Boot 博客评论系统为例,介绍如何通过状态机、事务提交后回调、乐观锁式条件更新、失败分层重试、事务一致性和前端结果定位,构建可靠的 AI 评论审核链路。通过明确状态流转、防止过期任务覆盖人工操作、保证回复数据一致性,并完善用户侧反馈闭环,让 AI 功能从“能运行”提升到“可维护、可恢复、可上线”的工程化实现。

金叶炸金花

484 阅读

这不是一个在浏览器里随机发三张牌的演示页面,而是一套完整的多人在线游戏系统。它支持实时对战、房间管理、断线恢复、AI 机器人、积分流水、历史记录和管理后台,并围绕服务端权威、状态一致性、并发控制与隐私隔离进行了系统设计。

一次OOM排查实录

805 阅读

日志在运行时被硬截断,排查后发现是 Linux OOM Killer 将进程强制 kill,根因是 2 GB 服务器同时运行 3 个未限制堆大小的 Spring Boot 项目、MySQL 8.0 和监控组件,JVM 默认占用近 3 GB,MySQL 参数又消耗数百 MB,且没有 Swap 作为缓冲。通过为每个 JVM 设置‑Xms/‑Xmx(如 512 M、256 M),调小 MySQL 的 innodb_buffer_pool、max_connections、关闭 performance_schema 并添加 2 GB swap,内存使用降至安全范围,进程不再被 OOM Killer 杀死。经验教训是:小内存机器必须限制 JVM、精简 MySQL 配置并配置 swap,长期方案是迁移数据库或升级机器。

CentOS 7 安装 JDK MySQL Redis 和 Nginx

2076 阅读

本文提供在 CentOS 7 上一步步安装 JDK 8、MySQL 8、Redis 6 与 Nginx 的完整指南。包括卸载旧 Java、使用 yum 安装 OpenJDK 并配置环境变量;添加阿里云和 MySQL 官方仓库、安装并启动 MySQL、开放 3306 端口;安装编译依赖后源码编译 Redis、编辑配置、创建 systemd 服务实现开机自启;通过 epel 安装 Nginx、设置开机启动、检查状态并放通 HTTP/HTTPS 防火墙端口。