MySQL技术文章
-
MySQL CHECK 失败后,先从错误中取得约束名,再用 SHOW CREATE TABLE 和 INFORMATION_SCHEMA.CHECK_CONSTRAINTS 反查表达式,最后把候选值拆成多个布尔子条件逐列计算。本文还说明 TRUE、FALSE、UNKNOWN、NULL 与隐式类型转换的差异。386 收藏 -
MySQL GTID 自动定位可让副本按已执行事务集向新源请求缺失事务。本文给出候选源核对、SOURCE_AUTO_POSITION 切换命令、状态验收和已清理 GTID 的处理边界。110 收藏 -
MySQL 生成列没有单独的刷新按钮:依赖列变化时,存储生成列和它的索引在行写入过程中维护,虚拟生成列则在读取时计算。本文用最小 SQL 区分两种时机,并排查事务可见性与执行计划未用索引的常见误判。201 收藏 -
MySQL EXPLAIN ANALYZE 中的 loops 表示迭代器实际执行次数。本文结合 rows、actual time 和嵌套循环 JOIN,说明如何读懂它并定位估算偏差。190 收藏 -
MySQL 的 JSON 标量提取结果未必天然适合作为函数索引键。本文说明 JSON_UNQUOTE 返回 LONGTEXT 时为什么需要 CAST,并给出字符串、数值、金额类型的索引与查询匹配写法。204 收藏 -
数据库 · MySQL | 4天前 | MySQL · 事务 · InnoDB · 锁定读 MySQL NOWAIT FOR UPDATE NOWAIT FOR SHARE NOWAIT InnoDB行锁 ERROR 3572
MySQL 锁定读默认会等待冲突行锁,追加 NOWAIT 后可立即返回 3572 错误。本文用双连接示例说明 FOR UPDATE NOWAIT 的写法、事务回滚、错误处理,以及它与默认等待和 SKIP LOCKED 的边界。253 收藏 -
用一组混合 JSON 数据拆开 JSON_TABLE 的缺失路径、类型转换、默认值与报错边界,给出可直接改写的 SQL 配置方法。251 收藏 -
MySQL 直方图默认采用手动更新模式。批量导入删除、数据倾斜迁移、执行计划估算明显偏离或迁移恢复后应优先评估更新;MySQL 8.4 可启用 AUTO UPDATE,但仍需理解触发边界。306 收藏 -
MySQL 不可见索引可以模拟删除而保留快速回滚能力。本文从索引约束、不可见化、执行计划、慢查询和工作负载三层观察,给出决定是否 DROP INDEX 的检查顺序。358 收藏 -
MySQL DDL 出现 Waiting for table metadata lock 时,可用 sys.schema_table_lock_waits 与 performance_schema.metadata_locks 找到等待和阻塞会话,再核对事务后安全处理。228 收藏 -
MySQL 8.4 可以在关闭时保存 Buffer Pool 中最近使用页的表空间与页编号,并在下次启动后由后台线程重新加载。本文给出配置、手动触发、进度检查和常见失效排查方法。425 收藏 -
MySQL Prepared statement 通常按会话缓存内部结构;引用表或视图的元数据变化、表定义缓存刷新时,下一次执行会自动重新预编译。本文用触发清单和 Com_stmt_reprepare 说明排查边界。387 收藏 -
定位 MySQL 的 Illegal mix of collations,不要先改全库字符集;应先对报错表达式两侧执行 COLLATION() 与 COERCIBILITY(),再检查列定义和连接变量。486 收藏 -
MySQL 导入备份遇到 GTID_PURGED 冲突时,先比较备份 GTID 集与目标端 gtid_executed、gtid_purged、gtid_owned,再按新副本、已有实例或多份局部备份选择保留、注释或省略 GTID 元数据。455 收藏 -
MySQL 复制过滤不是按配置文件书写顺序覆盖,而是先改写库名,再判断库级规则,最后按精确表 do、精确表 ignore、通配表 do、通配表 ignore 的固定顺序命中即退出。本文结合 STATEMENT、ROW 与 DDL 的差异,给出可推演的判断方法。382 收藏