MySQL技术文章
-
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 的 ALTER TABLE 即使使用在线 DDL,也可能在提交表定义时等待独占元数据锁。本文从 Waiting for table metadata lock 现象出发,结合 SHOW FULL PROCESSLIST、performance_schema.metadata_locks 和 threads 找到持锁会话,再把处理动作安排到合适的变更窗口。324 收藏 -
用 mysqldump 的一致性读、备份时点 GTID 和副本状态联合确认 InnoDB 在线备份的快照边界,解释为什么 Seconds_Behind_Source 不能单独证明备份一致。323 收藏 -
MySQL INTERSECT 用来保留两组查询的共同记录。本文从列投影、DISTINCT 与 ALL、查询范围、括号优先级和稳定排序逐步排查,帮助你写出结果口径清楚的集合查询。323 收藏 -
MySQL EXPLAIN ANALYZE 会把优化器估算的成本与行数,和执行时的实际耗时、实际行数、循环次数放在同一棵执行树里。本文用订单查询的偏差案例,演示如何读 actual time、rows、loops,判断统计信息、索引选择和数据分布问题,并给出慢查询定位与回归检查方法。321 收藏 -
迁移 MySQL utf8mb4 排序规则前,系统检查字符字段、索引、唯一键、外键、生成列与尾部空格语义,提前发现重复值和兼容性风险。319 收藏 -
说明 MySQL GET DIAGNOSTICS 如何区分语句信息和条件信息,并在存储程序中读取 SQLSTATE、错误号、消息文本及影响行数。318 收藏 -
用 SESSION 级 foreign_key_checks 安排 MySQL 外键迁移,保存原值、完成导入并用孤儿数据查询确认恢复结果。318 收藏 -
数据库 · MySQL | 1星期前 | MySQL · 事务 · InnoDB · Serializable READ COMMITTED REPEATABLE READ MySQL事务隔离级别 一致性读 InnoDB快照
从 InnoDB 快照建立时机入手,比较四种事务隔离级别对一致性读、并发提交和锁定读的影响,并给出两个会话的最小验证模板。317 收藏 -
MySQL 分区表按时间清理历史数据时,逐行 DELETE 可能带来长事务、undo 增长和锁等待。本文从一次线上删除变慢的现象出发,说明如何确认分区边界、选择 DROP PARTITION,并用复查动作验证空间和业务影响。316 收藏 -
MySQL CTE 不一定会被物化:优化器可能把它合并到外层查询,也可能建立内部临时表。本文用 MERGE、NO_MERGE 和 EXPLAIN FORMAT=JSON 说明怎样判断计划选择。315 收藏