Go语言技术文章
-
MySQL 排序规则变化后出现等值结果不同、排序顺序变化或索引计划异常时,按列定义、连接会话、EXPLAIN 和 WEIGHT_STRING() 逐层定位,并给出保留列属性的统一迁移方案。158 收藏 -
MySQL 逻辑备份的并发写入窗口应区分 InnoDB DML、相关 DDL 和非事务表。本文说明单事务快照的适用条件、MySQL 8.4 工具兼容性,以及独立产物、失败保留和业务交接安排。444 收藏 -
MySQL 复制延迟不能只看一个时间差。本文按 replica_parallel_workers、复制通道状态、协调线程和工作线程逐层分析,帮助定位并行度不足、单线程拖尾与重试错误。488 收藏 -
多个 worker 从 MySQL InnoDB 任务表取件时,普通 FOR UPDATE 可能互相等待。本文用最小 SQL 说明 SKIP LOCKED 如何跳过已锁行、如何在短事务中更新状态,以及 NOWAIT、锁释放和失败重试的边界。239 收藏 -
MySQL 长事务读到旧值,常与隔离级别和快照创建时机有关。本文用双会话示例对比 RR 首次一致性读、显式快照与 RC 每次读,并说明读类型、自身修改和事务结束的边界。214 收藏 -
MySQL 查询计划与预期不一致时,可在当前会话开启 optimizer trace,从 INFORMATION_SCHEMA.OPTIMIZER_TRACE 阅读候选访问路径、代价和完整性字段,再结合 EXPLAIN 做判断。466 收藏 -
数据库 · MySQL | 3星期前 | 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 收藏 -
Go ExtraFiles 的下标对应子进程 3+i,而非父进程原描述符。本文说明标准流、平台限制与关闭责任,并用双文件示例区分映射错误、读取偏移和总数误判。356 收藏 -
Go 的 exec.Cmd.Wait 不只等待子进程退出,还会等待标准输入输出相关的复制协程。若后代进程继承 stdout 或 stderr 的写端,父进程退出后仍可能等不到 EOF。本文说明如何排查 StdoutPipe 读取顺序,使用 WaitDelay 设定收口上限,并区分 ErrWaitDelay、ExitError 与上下文取消。460 收藏