MySQL技术文章
-
讲清 MySQL 函数索引与生成列索引的选择、JSON 表达式类型边界,以及用 EXPLAIN 检查表达式结果是否真正匹配。228 收藏 -
MySQL DDL 出现 Waiting for table metadata lock 时,可用 sys.schema_table_lock_waits 与 performance_schema.metadata_locks 找到等待和阻塞会话,再核对事务后安全处理。228 收藏 -
MySQL 的 ROLLBACK TO SAVEPOINT 会撤销保存点后的数据修改,但不会等同于释放锁。本文区分记录锁、间隙锁和事务结束边界,并用两个会话说明如何排查回滚后的阻塞。226 收藏 -
MySQL 不可见索引适合用来评估索引替代方案:先核对候选索引和基线计划,再让优化器暂时忽略它,结合 EXPLAIN、慢查询与工作负载判断是否仍有依赖,最后决定恢复、替换还是删除。226 收藏 -
递归 CTE 的安全上限不能只依赖 cte_max_recursion_depth。本文从故障场景出发,拆分业务深度、结果行数和执行时间三种边界,并给出 MySQL 的配置与复查方法。226 收藏 -
针对日期分区查询中 DATE、YEAR 等函数包裹分区键的场景,给出半开区间改写、EXPLAIN 验证、时区边界与不适用条件。224 收藏 -
MySQL 在线备份恢复演练不能只看命令返回成功,还要在隔离实例中核对行数、主键范围、业务聚合值、触发器和存储程序,形成可复盘的恢复证据。222 收藏 -
MySQL 直方图不会因为每次写入自动按固定周期刷新。本文用 COLUMN_STATISTICS 判断数据漂移,比较手动刷新与 AUTO UPDATE,并给出采样率、执行计划和回滚检查清单。222 收藏 -
Retrieved_Gtid_Set 代表副本已经收到的 GTID 集,不等于已经执行。本文用 GTID_SUBTRACT 区分接收缺口与应用积压,给出可复核的复制状态排查方法。221 收藏 -
MySQL 多消费者队列可在短事务中使用 FOR UPDATE SKIP LOCKED 领取互不重叠的任务,再通过租约令牌、超时回收和幂等约束降低重复执行风险。210 收藏 -
MySQL 的 JSON 标量提取结果未必天然适合作为函数索引键。本文说明 JSON_UNQUOTE 返回 LONGTEXT 时为什么需要 CAST,并给出字符串、数值、金额类型的索引与查询匹配写法。204 收藏 -
围绕 InnoDB 新增二级索引,说明如何用 ALGORITHM=INPLACE、LOCK=NONE 评估元数据锁等待、在线变更日志、临时排序文件和生产上线边界。202 收藏 -
InnoDB 检测到死锁后通常只回滚一个受害事务,以最小代价打破等待环。本文解释 victim 的选择依据、日志排查方式,以及应用收到 1213 后为什么要重试完整事务。201 收藏 -
MySQL 生成列没有单独的刷新按钮:依赖列变化时,存储生成列和它的索引在行写入过程中维护,虚拟生成列则在读取时计算。本文用最小 SQL 区分两种时机,并排查事务可见性与执行计划未用索引的常见误判。201 收藏 -
MySQL 日期范围查询没有触发分区裁剪,通常与分区表达式不匹配、日期列被函数包裹、类型转换或范围过宽有关。本文用 SHOW CREATE TABLE、INFORMATION_SCHEMA.PARTITIONS 和 EXPLAIN 的 partitions 列定位原因,并给出半开区间改写方法。201 收藏