MySQL技术文章
-
MySQL 主从延迟不能只看 Seconds_Behind_Master。本文从复制线程状态、Relay_Log_Pos、Performance Schema 事务等待和大事务四个层次排查,并给出可回退的处理顺序。468 收藏 -
MySQL 死锁日志最先要找的是等待事务和阻塞事务。本文从 LATEST DETECTED DEADLOCK 读出两端关系,再用 data_lock_waits 关联事务、线程、表和 SQL,最后说明锁顺序、索引与安全重试的修复重点。467 收藏 -
MySQL JSON 多值索引适合优化数组成员筛选,但不能替代排序索引。本文用 MEMBER OF()、EXPLAIN 和生成列说明可用范围。463 收藏 -
用 INFORMATION_SCHEMA.INNODB_TRX 找出当前 InnoDB 事务,按 TRX_STARTED 判断持续时间,再用 TRX_MYSQL_THREAD_ID 映射到连接,避免把只读会话、锁等待和已结束事务混为一谈。461 收藏 -
MySQL 分区表清理历史数据时,DROP PARTITION 为什么通常比逐行 DELETE 更快?本文从分区边界、索引与日志工作粒度解释差异,并给出执行前后的核对清单。461 收藏 -
删除父表记录时突然变慢,先别急着改事务隔离级别。本文从锁等待、子表外键索引和级联删除三个现场信号入手,给出可复现的检查 SQL、修复顺序与回滚边界。458 收藏 -
删除一条订单主表记录时,如果外键触发级联检查,耗时可能来自子表扫描、级联删除和锁等待。本文用 InnoDB 示例拆开索引与锁范围。457 收藏 -
用部门层级和类别树说明 MySQL 8.4 递归 CTE 的停止条件、cte_max_recursion_depth、循环引用检测与路径验收,避免层级查询卡住或重复展开。454 收藏 -
联合索引遇到中间列范围条件后,后列通常不能继续缩小同一个连续扫描区间。本文用键组顺序和 EXPLAIN 说明原因,并给出索引重排判断清单。454 收藏 -
MySQL 事件已经创建却没有按时执行,通常要分开核对全局调度器、事件自身状态、创建时区和 DEFINER 权限。本文用一个可复查的小项目演示排查顺序,并补上重复触发与错误日志边界。452 收藏 -
MySQL CHECK 写入非法值没报错,通常与 NOT ENFORCED、INSERT IGNORE 或 NULL 导致的 UNKNOWN 有关。本文用建表定义、警告和信息架构查询逐层排查。452 收藏 -
MySQL 遇到 OR 条件时可能选择 Index Merge,但这不代表它一定优于联合索引。本文用订单筛选场景拆开合并扫描、回表、排序与改写边界,给出 EXPLAIN 和 EXPLAIN ANALYZE 的核对方法。451 收藏 -
MySQL JOIN 报 Illegal mix of collations 时,先核对两列的字符集和排序规则,再用查询级 COLLATE 临时恢复,最后统一字段定义并检查索引与匹配语义。446 收藏 -
用 MySQL JSON_SCHEMA_VALID 配合 CHECK 约束,在 JSON 入库前拒绝缺字段、类型不符和数值越界,并用验证报告定位具体失败位置。446 收藏 -
开启 ONLY_FULL_GROUP_BY 后,查询中的非聚合列必须出现在 GROUP BY 中,或能由分组列唯一确定。本文用主键、唯一键、单值过滤、ANY_VALUE 和派生表几个场景,说明如何改写查询并保持结果语义明确。440 收藏