MySQL技术文章
-
用 RANGE COLUMNS 按月份组织 MySQL 分区表,先核对分区边界,再安全删除越过保留线的历史分区,并处理 MAXVALUE 分区的滚动维护。327 收藏 -
sys.schema_unused_indexes 只能说明当前统计周期没有记录到索引事件,不能直接等同于业务永远不使用。本文给出从观察周期、业务 SQL、执行计划到 invisible index 灰度验证的安全删除流程。327 收藏 -
MySQL 8.4 的 CHECK 约束已经可以真正拦截不满足条件的写入,但约束状态、NULL 三值逻辑和隐式转换会让排查结果与直觉不同。本文用可复现实验核对约束定义、失败写入和历史脏数据清理边界。326 收藏 -
解释 MySQL JSON 数组普通索引失效的原因,说明 CAST AS ARRAY 多值索引、三类可优化谓词、类型一致性及覆盖索引和空数组限制。326 收藏 -
MySQL 字符串比较结果异常时,按连接、列和表达式三层定位 collation,再用查询级 COLLATE 或列级配置完成修复。326 收藏 -
解释 MySQL 外键 ON DELETE SET NULL 为什么要求子表外键列允许 NULL,并用父子表示例、建表语句和动作对比说明如何选择 SET NULL、CASCADE 与 RESTRICT。325 收藏 -
介绍 MySQL EXPLAIN FORMAT=JSON 中 cost_info 的层级、字段含义和 JSON_EXTRACT 提取方法,说明如何结合访问类型、扫描行数与版本边界判断查询优化方向。325 收藏 -
MySQL 查询偶尔选择 Index Merge 时,可以用 NO_INDEX_MERGE optimizer hint 在单条语句范围内临时关闭索引合并。本文比较 optimizer_switch、无索引参数和指定索引参数的写法,并说明如何用 EXPLAIN 判断提示是否真正改变访问路径。325 收藏 -
遇到 MySQL 锁等待超时,先区分 InnoDB 行锁、死锁和元数据锁,再用 sys.innodb_lock_waits 找到等待事务与阻塞事务。本文给出从连接 ID、事务年龄、锁定对象到处理动作的完整排查路径,并说明 ERROR 1205 只回滚当前语句时的边界。325 收藏 -
MySQL 的 ALTER TABLE 即使使用在线 DDL,也可能在提交表定义时等待独占元数据锁。本文从 Waiting for table metadata lock 现象出发,结合 SHOW FULL PROCESSLIST、performance_schema.metadata_locks 和 threads 找到持锁会话,再把处理动作安排到合适的变更窗口。324 收藏 -
MySQL 8.4 锁定服务通过 namespace、lock_name 和 timeout 取得共享读锁。本文说明 SQL 函数的最小写法、读写冲突、多锁调用原子性、按命名空间释放及 Performance Schema 排查边界。324 收藏 -
用 mysqldump 的一致性读、备份时点 GTID 和副本状态联合确认 InnoDB 在线备份的快照边界,解释为什么 Seconds_Behind_Source 不能单独证明备份一致。323 收藏 -
MySQL INTERSECT 用来保留两组查询的共同记录。本文从列投影、DISTINCT 与 ALL、查询范围、括号优先级和稳定排序逐步排查,帮助你写出结果口径清楚的集合查询。323 收藏 -
MySQL EXPLAIN ANALYZE 会把优化器估算的成本与行数,和执行时的实际耗时、实际行数、循环次数放在同一棵执行树里。本文用订单查询的偏差案例,演示如何读 actual time、rows、loops,判断统计信息、索引选择和数据分布问题,并给出慢查询定位与回归检查方法。321 收藏 -
迁移 MySQL utf8mb4 排序规则前,系统检查字符字段、索引、唯一键、外键、生成列与尾部空格语义,提前发现重复值和兼容性风险。319 收藏