MySQL技术文章
-
MySQL 不可见索引可以模拟删除而保留快速回滚能力。本文从索引约束、不可见化、执行计划、慢查询和工作负载三层观察,给出决定是否 DROP INDEX 的检查顺序。358 收藏 -
本文用会员与付费用户的查询示例说明 MySQL INTERSECT 如何取两组结果的交集,并解释默认去重、INTERSECT ALL、列结构和排序范围。358 收藏 -
本文围绕 MySQL 派生条件下推,说明如何用 optimizer_switch 控制会话级默认行为,再用查询级 hint 精确覆盖单条语句,并结合 EXPLAIN 识别适用边界。358 收藏 -
MySQL CTE 会在什么情况下物化而不是合并?本文从查询结构、递归 CTE、61 张基表边界和 EXPLAIN 计划出发,说明 MERGE、NO_MERGE 与 derived_merge 的判断方法。352 收藏 -
从 SHOW ENGINE INNODB STATUS 读懂持锁与等待锁,定位 MySQL 事务交叉加锁的闭环,并给出访问顺序、索引和重试的处理方案。351 收藏 -
数据库 · MySQL | 1星期前 | 连接池 · 故障排查 · MySQL教程 · mysql 连接池 wait_timeout database/sql SetConnMaxIdleTime SetConnMaxLifetime 空闲连接 PingContext
MySQL 连接池空闲连接失效,通常是服务端、代理或网络设备先关闭了空闲连接,应用在下一次复用时才发现。本文按时间边界排查 wait_timeout,并用 Go database/sql 的空闲时间、生命周期、PingContext 和 Stats 给出可执行处理方案。350 收藏 -
MySQL JSON_STORAGE_FREE 只有在 JSON 列通过 JSON_SET、JSON_REPLACE 或 JSON_REMOVE 进行合适的部分更新后,才可能返回正数。本文用可复用的 SQL 说明如何判断空闲空间、为什么结果为 0,以及如何结合 JSON_STORAGE_SIZE 排查。347 收藏 -
MySQL 存储过程需要把参数校验失败和底层异常清楚地交给调用方时,可以用 SIGNAL 设置 SQLSTATE、MESSAGE_TEXT 与 MYSQL_ERRNO。本文从最小示例、handler、诊断区和排查边界说明怎样建立稳定的错误契约。347 收藏 -
MySQL 分区表是否真的减少了扫描范围,不能只看查询能否返回结果,而要看 EXPLAIN 的 partitions 列。本文用 RANGE 分区示例说明如何对照分区定义、WHERE 条件和执行计划,区分命中一个分区、命中多个目标分区与没有发生分区裁剪。347 收藏 -
MySQL 8.4 可用 SET_VAR 临时启用不可见索引候选,无需改变索引可见性。本文说明单语句写法、会话原值恢复、连接池风险,以及允许候选不等于强制选中。345 收藏 -
MySQL 的 UPDATE 和 DELETE 也可以先用 EXPLAIN 观察读取路径。本文从 type、key、rows、filtered 和 JSON 计划入手,说明怎样识别全表扫描、估算偏差与写入前的范围风险。343 收藏 -
澄清多表UPDATE目标行只更新一次的规则,给出按完整业务键聚合和确定性选择最新记录的SQL,区分来源冲突、任务重试与并发封批问题。342 收藏 -
MySQL JSON_OVERLAPS 用于判断两个 JSON 是否共享数组元素、完整对象键值对或相等标量。本文通过数组、对象、NULL 和类型差异案例说明返回 1、0、NULL 的边界,并对照 JSON_CONTAINS 的 AND 语义。341 收藏 -
utf8mb4 排序规则不只是影响 ORDER BY,还会决定字符串比较、查询命中和 UNIQUE 索引是否判重。本文从大小写、重音、尾随空格三个维度,给出 MySQL 8.4 下的选择方法与迁移检查清单。337 收藏 -
本文说明如何用 MySQL PS_CURRENT_THREAD_ID() 取得当前会话在 Performance Schema 中的内部 THREAD_ID,并区分 CONNECTION_ID、PROCESSLIST_ID、PS_THREAD_ID 的映射关系与 NULL、报错边界。337 收藏