MySQL技术文章
-
通过 MySQL Optimizer Trace 查看候选索引、估算行数、成本与最终选择原因,掌握同一会话开启、读取和关闭追踪的方法。500 收藏 -
联合索引列顺序不能只看区分度。本文用订单查询逐项判断等值前缀、首个范围列、排序方向与稳定分页,再结合 key_len、Using filesort 和 EXPLAIN ANALYZE 验证设计。500 收藏 -
数据库 · MySQL | 2星期前 | MySQL · InnoDB · MySQL锁等待 performance_schema.data_lock_waits data_locks锁对象 InnoDB事务阻塞 锁等待链定位
从 data_lock_waits 和 data_locks 还原等待事务、阻塞事务及锁对象,再映射到 InnoDB 会话和最后 SQL,形成一套可复核的 MySQL 锁等待链定位方法。497 收藏 -
MySQL GROUP_CONCAT 的稳定结果取决于函数内部的 ORDER BY、文本 COLLATE、并列键和长度上限。本文用标签聚合示例说明排序、去重、NULL、分隔符与 group_concat_max_len 的实际边界。488 收藏 -
说明 MySQL Hash Join 的构建端、join_buffer_size、多个连接缓冲和并发放大关系,并给出执行计划判断、磁盘溢写识别与参数调整建议。488 收藏 -
MySQL Instant DDL 不是全局开关。本文用 ALGORITHM=INSTANT、InnoDB 元数据和 TOTAL_ROW_VERSIONS 排查表结构限制,并说明何时改用 INPLACE 或 COPY。486 收藏 -
定位 MySQL 的 Illegal mix of collations,不要先改全库字符集;应先对报错表达式两侧执行 COLLATION() 与 COERCIBILITY(),再检查列定义和连接变量。486 收藏 -
MySQL JSON 数组不能直接按普通列建索引。本文用 InnoDB 多值索引把标量数组映射成可查询的索引记录,并说明 MEMBER OF、JSON_CONTAINS、JSON_OVERLAPS 及空数组、类型和排序限制。482 收藏 -
Optimizer Trace 适合解释 MySQL 优化器为什么选择某个索引、访问方式或连接顺序。本文给出当前会话抓取、读取决策节点、识别追踪不完整和补充运行时验证的实操方法。480 收藏 -
MySQL 按部门、店铺或其他分组取排名第二的记录,关键是先用窗口函数生成组内名次,再由外层查询过滤。本文比较 ROW_NUMBER、RANK 和 DENSE_RANK 的并列边界,并补充稳定排序、过滤层级与 NULL 值处理。478 收藏 -
从范围条件估算失真入手,讲清 MySQL 直方图的适用场景、创建语法、统计查看、EXPLAIN 检查以及更新和删除边界。478 收藏 -
旧表启用 MySQL CHECK 约束前,先用反向查询找出历史违规数据,按业务规则分批修复或隔离,再以 NOT ENFORCED 暂存命名约束,确认全表通过后切换为 ENFORCED。475 收藏 -
整理 MySQL GTID 复制切换前的核对方法,区分接收集合与执行集合,用 GTID_SUBSET 和 GTID_SUBTRACT 判断候选副本是否覆盖主库事务,并保留回退依据。469 收藏 -
MySQL 死锁日志最先要找的是等待事务和阻塞事务。本文从 LATEST DETECTED DEADLOCK 读出两端关系,再用 data_lock_waits 关联事务、线程、表和 SQL,最后说明锁顺序、索引与安全重试的修复重点。467 收藏 -
用MySQL窗口函数按分组生成稳定名次,再通过CTE或派生表筛选每组前N条,并说明ROW_NUMBER、RANK、DENSE_RANK的并列边界。465 收藏