MySQL技术文章
-
MySQL Clone 恢复后不需要重新猜复制起点。本文说明如何从 performance_schema.clone_status 读取一致性 GTID 或文件位点,分别衔接复制通道,并处理配置未克隆、日志已清理和多线程中继日志恢复失败等问题。139 收藏 -
MySQL 多值索引会把 JSON 数组元素拆成多条索引记录,因此能加速成员判断,却不能从索引还原完整数组。本文解释回表原因、EXPLAIN 误区,并给出生成列与关系化拆分方案。336 收藏 -
MySQL 生成列索引未命中表达式查询时,重点检查生成列定义、表达式结构、结果类型、JSON_UNQUOTE 和 EXPLAIN 计划,区分匹配失败与成本选择。286 收藏 -
从树形执行计划的 Materialize、临时子查询表和自动去重索引节点,判断 MySQL 是否真正采用了子查询物化。121 收藏 -
MySQL NOWAIT 不等待行锁,遇到争用会立即返回错误。本文从事务边界、索引范围和业务语义三方面设计快速降级,区分 SKIP LOCKED、普通读取与稍后重试。403 收藏 -
MySQL 递归 CTE 需要同时防止层级过深与父子路径成环。本文给出携带 depth 和分隔 path 的安全查询模板,并补充递归上限、查询超时、终止查询、回滚和复盘清单。275 收藏 -
MySQL JSON_TABLE 展开多层数组的关键,是让每个 NESTED PATH 相对父级行源继续匹配,并把父级标量列定义在对应 COLUMNS 作用域中。本文用订单、商品、批次三级 JSON 给出完整 SQL,解释父级字段重复、序号列、空数组补 NULL 与兄弟子句非笛卡尔积等边界。137 收藏 -
MySQL 8.4 与当前 9.7 会解析窗口帧 EXCLUDE,却在执行时直接报错。本文解释 CURRENT ROW、GROUP、TIES 对移动聚合集合的标准语义,并给出在 MySQL 中用 SUM、COUNT、NULLIF 和显式同值行规则改写的可靠方法。126 收藏 -
MySQL Histogram 统计信息不会随每次数据变更自动持续更新,过期后可能让优化器误判过滤率、rows 和访问路径。本文用 COLUMN_STATISTICS、EXPLAIN 与 ANALYZE TABLE 给出判断、重建和回滚边界。145 收藏 -
MySQL 不可见索引适合在删除二级索引前做可回退验证:先记录查询计划和工作负载基线,再切换 INVISIBLE,通过 EXPLAIN、Performance Schema 与慢查询日志对比影响,最后按业务阈值恢复可见或进入删除评审。422 收藏 -
Optimizer Trace 适合解释 MySQL 优化器为什么选择某个索引、访问方式或连接顺序。本文给出当前会话抓取、读取决策节点、识别追踪不完整和补充运行时验证的实操方法。480 收藏 -
MySQL 在线备份恢复演练不能只看命令返回成功,还要在隔离实例中核对行数、主键范围、业务聚合值、触发器和存储程序,形成可复盘的恢复证据。222 收藏 -
MySQL 批量写入没有通用的最佳事务行数。本文用固定数据集对比 100 到 10000 行事务,采集吞吐、批次与提交延迟、redo 增量,并注入失败测量回滚时间,最终按业务门槛选出兼顾吞吐与恢复成本的最小事务。160 收藏 -
utf8mb4 排序规则不只是影响 ORDER BY,还会决定字符串比较、查询命中和 UNIQUE 索引是否判重。本文从大小写、重音、尾随空格三个维度,给出 MySQL 8.4 下的选择方法与迁移检查清单。337 收藏 -
MySQL 分区表查询仍扫描全部分区时,可从 EXPLAIN 的 partitions 列、条件表达式、分区键类型与分区方式逐层定位,并用日期范围示例完成修复。420 收藏