MySQL技术文章
-
MySQL 中同一条语句多次引用 CTE,通常只会物化一次;本文用 EXPLAIN 和 optimizer_trace 区分共享结果、自动索引与真正重复工作。237 收藏 -
MySQL 8.4 默认不再启用 mysql_native_password,老应用可能在发版后出现账号认证失败。本文用账号盘点、灰度改造、TLS 连通性检查和回退边界,讲清迁移到 caching_sha2_password 的可靠做法。236 收藏 -
从 EXPLAIN 的 key、key_len、type 和 Extra 入手,判断 MySQL 复合索引没有按预期生效的原因,并用最小 SQL 验证最左匹配、范围条件和排序顺序。235 收藏 -
围绕 mysqldump 讲清 InnoDB 一致性导出、对象清单、恢复先后和结果核对,帮助你规划一份真正可恢复的 MySQL 逻辑备份。235 收藏 -
数据库 · MySQL | 2个月前 | MySQL · InnoDB · MySQL 8.4 ALGORITHM=INSTANT TOTAL_ROW_VERSIONS ERROR 4092 Online DDL
MySQL 8.4 默认使用 ALGORITHM=INSTANT 加列或删列,但每次变更会累积表的行版本;本文用 TOTAL_ROW_VERSIONS 和 INFORMATION_SCHEMA 设计阈值监控,说明 ERROR 4092 的安全处理与重建窗口。234 收藏 -
MySQL 的 NULL 不是普通空值,WHERE 条件还会产生 UNKNOWN。本文用订单查询拆开三值逻辑、IS NULL 判断和索引执行计划的边界。234 收藏 -
MySQL 的 COUNT(DISTINCT) 只统计非 NULL 唯一值。本文用订单示例区分已知客户数、缺失行数和包含 NULL 桶的唯一值数量,并给出分组统计与子查询写法。232 收藏 -
MySQL 生产表在线加索引时,真正需要盯住的是 DDL 算法、元数据锁和回滚条件。本文用一套可执行的检查流程,说明如何先判断可用算法,再观察阻塞与进度,最后用低风险方式完成变更。230 收藏 -
MySQL JSON_SCHEMA_VALID() 只能返回 0 或 1。本文用 JSON_SCHEMA_VALIDATION_REPORT() 读取失败原因、JSON Pointer 路径和失败关键字,区分 required 与 type 错误,并给出可接入审计流程的 SQL 写法。230 收藏 -
MySQL 按分组取前几条记录时,可在派生表中用 ROW_NUMBER() 为每组排序编号,再由外层过滤 rn。本文说明稳定排序、并列名次、索引和边界测试。230 收藏 -
用 MySQL 8.0 的 SKIP LOCKED 做并发任务抢占,关键不在于把锁语句拼出来,而在于限定索引范围、保持短事务、正确处理空队列,并用状态更新和幂等键验收重复消费。228 收藏 -
围绕一条真实列表查询,拆分过滤、排序和返回字段,给出 MySQL 复合覆盖索引的布局方法、EXPLAIN 检查项,以及范围条件和写入成本的上线边界。228 收藏 -
讲清 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 收藏