Go语言技术文章
-
MySQL 查询计划与预期不一致时,可在当前会话开启 optimizer trace,从 INFORMATION_SCHEMA.OPTIMIZER_TRACE 阅读候选访问路径、代价和完整性字段,再结合 EXPLAIN 做判断。466 收藏 -
数据库 · MySQL | 4星期前 | 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 收藏 -
Redis RDB 适合紧凑快照和快速重启,AOF 更接近实时写入恢复。本文围绕数据安全、AOF 重写、RDB 备份和恢复窗口,说明何时采用两者组合。157 收藏 -
Redis Sentinel认证需区分数据连接、复制、监控和发现入口,本文用配置对应表说明凭据一致性、角色切换准备和错误定位,避免只改一个密码造成连接中断。393 收藏 -
Redis SCAN 不是固定页大小的分页接口。本文说明游标推进、空页判断、MATCH/COUNT 边界,以及重复 key 的去重和幂等处理方案。113 收藏 -
Redis Query Engine 为 JSON 建索引时,关键不是把整个对象塞进 schema,而是把 JSONPath 叶子值按查询任务映射为 TEXT、TAG 或 NUMERIC,并用别名稳定查询字段。本文给出字段设计、排序和排查方法。137 收藏 -
Redis 反复刷新缓存 TTL 时,普通 EXPIRE 可能把更长的剩余时间覆盖掉。本文按首次设置、只延长和只缩短等业务意图,说明 NX、XX、GT、LT 的选择和复查方式。207 收藏 -
Redis Cluster 容量规划不能只看节点内存,还要同时看 16384 个槽位的覆盖情况、主节点槽位分布和热点槽位键数。本文用 redis-cli 与 Python 组织一套可复查的统计方法,说明哪些指标能帮助规划,哪些结论不能直接推出。137 收藏 -
Redis MULTI/EXEC 会把命令串行执行,但不会像关系型数据库一样在运行期错误后自动回滚。本文从错误边界、WATCH 前置检查、幂等状态和补偿记录四个方面设计可重试的业务处理方案。158 收藏