MySQL技术文章
-
多个 worker 从 MySQL InnoDB 任务表取件时,普通 FOR UPDATE 可能互相等待。本文用最小 SQL 说明 SKIP LOCKED 如何跳过已锁行、如何在短事务中更新状态,以及 NOWAIT、锁释放和失败重试的边界。239 收藏 -
MySQL 长事务读到旧值,常与隔离级别和快照创建时机有关。本文用双会话示例对比 RR 首次一致性读、显式快照与 RC 每次读,并说明读类型、自身修改和事务结束的边界。214 收藏 -
MySQL 查询计划与预期不一致时,可在当前会话开启 optimizer trace,从 INFORMATION_SCHEMA.OPTIMIZER_TRACE 阅读候选访问路径、代价和完整性字段,再结合 EXPLAIN 做判断。466 收藏 -
数据库 · MySQL | 1天前 | MySQL · 执行计划 · 查询优化 · 分区表 · mysql partition pruning 分区裁剪 RANGE COLUMNS EXPLAIN partitions
MySQL 分区裁剪看的是分区键条件能否被优化器化简为可判断的常量或范围。本文从分区定义、EXPLAIN 的 partitions 列、函数表达式和隐式类型转换入手,给出定位条件写法的排障路径。124 收藏 -
MySQL 8.0.13 及以上可以用函数索引直接索引 DATE(created_at) 的结果,但索引定义必须使用双层括号,查询表达式也要保持一致。本文从创建、命中判断和生成列替代三个方面说明日期表达式查询的落地写法。451 收藏 -
MySQL 不可见索引可以在不直接删除索引的情况下测试优化器计划:先记录索引和 EXPLAIN,再将普通二级索引设为 INVISIBLE,最后用 use_invisible_indexes 做单条语句对照,依据计划、性能和约束影响决定恢复或删除。332 收藏 -
MySQL 可用 JSON_OVERLAPS 判断两个 JSON 数组是否至少共享一个元素。本文以标签筛选说明数字与字符串、嵌套数组、SQL NULL 和空数组的区别,并给出只读 SQL 示例与查询回退思路。498 收藏 -
MySQL JSON_TABLE 展开数组后出现重复行,先检查行路径是否过宽,再用父表主键和各层 FOR ORDINALITY 组成稳定关联键。本文用订单与嵌套数组示例区分真实重复、路径问题和后续 JOIN 造成的重复。406 收藏 -
MySQL 使用 LAG 比较相邻记录时,分组首行没有上一条记录,默认返回 NULL。本文说明如何固定窗口顺序、使用 default,并区分真实 NULL 与首行缺失。303 收藏 -
MySQL 窗口函数取每组最新记录时,不能只按时间排序;应使用 PARTITION BY 划分分组,在窗口 ORDER BY 中用时间和唯一键组成稳定排序,再根据是否允许并列选择 ROW_NUMBER、RANK 或 DENSE_RANK。265 收藏 -
数据库 · MySQL | 2天前 | MySQL · 数据库运维 · RESOURCE_GROUP Performance Schema MySQL RESOURCE GROUP CPU 资源 SET RESOURCE GROUP
MySQL RESOURCE GROUP 可以把服务器线程放进不同资源组,通过 CPU 亲和性和线程优先级做资源治理。本文用一个 USER 资源组示例,说明创建、绑定、读取归属和恢复默认组的边界。369 收藏 -
数据库 · MySQL | 2天前 | MySQL · 主从复制 · 数据一致性 MySQL复制 replicate-wild-do-table 复制过滤 CHANGE REPLICATION FILTER
从库表白名单、语句与行复制差异、初始化快照和回滚路径四个方面,说明 MySQL 复制过滤怎样降低副本数据暴露与误同步风险。102 收藏 -
MySQL CTE 不一定物化。本文用 MERGE 与 NO_MERGE 对照 SQL,比较中间结果复用和生成成本,说明聚合与派生表的限制,以及执行计划中的性能判断方法。470 收藏 -
MySQL Instant DDL 不是所有列属性变更都能做到只改元数据。本文按支持条件、锁影响和回退路径区分改默认值、改名、改类型与 NULL 属性等操作,给出执行前检查清单。133 收藏 -
MySQL 直接重命名列会让仍使用旧字段名的 SQL 立即失效。本文区分 RENAME COLUMN 与 CHANGE,说明索引和外键的自动跟随范围,以及视图、存储程序、生成列和分区表达式的人工复核边界,并给出新增列、回填、双写和切换的兼容迁移方案。450 收藏