Go语言技术文章
-
用重复排序值与数值间隔两个小实验,说明 MySQL 窗口函数中 ROWS 按行位置、RANGE 按排序值范围取框架,以及默认边界的常见误区。178 收藏 -
MySQL 按天统计时,直接按业务表分组会丢掉没有记录的日期。本文用 WITH RECURSIVE 生成日期序列,再 LEFT JOIN 订单数据并用 COALESCE 补 0,同时处理时间索引和递归上限。177 收藏 -
对比 Redis Lua EVAL/EVALSHA 与 Redis 7+ Functions 的生命周期、配置方式和排查路径,处理 NOSCRIPT、函数注册、CROSSSLOT 与 BUSY 等常见问题。177 收藏 -
Redis 7.0 起可用 Functions 持久化 Lua 函数库。本文用一个哈希更新示例说明 FUNCTION LOAD、FCALL、KEYS/ARGV、REPLACE 以及集群和只读边界。177 收藏 -
Redis 在生成 RDB 快照时可能因 fork 和写时复制出现延迟抖动。本文从慢查询时间线、INFO persistence 指标和内存峰值入手,给出判断、避让与回滚方法。176 收藏 -
MySQL 计算相邻记录时间差的通用写法:先用 LAG() 取上一条时间,再用 TIMESTAMPDIFF() 计算秒或分钟,并处理分组、首行、并列时间和 NULL。176 收藏 -
演示如何在不直接删除索引的情况下,把 MySQL 候选索引设为不可见,对比 EXPLAIN 与工作负载变化,并用单条查询临时恢复候选资格完成反向验证。175 收藏 -
批量 UPDATE 不要只加 LIMIT:用可推进的索引范围固定每批数据,缩短事务锁持有时间,并为失败重试保留清晰边界。173 收藏 -
MySQL JSON 列不能直接建立普通索引时,可用生成列提取稳定标量再建索引,并通过 EXPLAIN 排查路径、类型和命中问题。172 收藏 -
MySQL 8.0前子查询中ORDER BY + LIMIT报错是因语法不支持,错误码1235;解决方法是外移排序逻辑,改用派生表或窗口函数,并确保WHERE条件置于窗口外、日期范围用开区间避免截断。子查询里用 ORDER BY + LIMIT 1 为什么总报错?在MySQL 8.0之前,要是在子查171 收藏 -
A VG(SUM(x))一定报错,因SQL标准禁止嵌套聚合函数,解析器在语法分析阶段即拒绝;所有主流数据库均报“cannot nest aggregate functions”错误,本质是SUM输出标量而A VG需输入一组值。A VG(SUM(x)) 为什么一定报错 这是因为SQL解析器在语法分析阶171 收藏 -
批量处理订单时,不必因为一条异常记录回滚整批事务。本文用 MySQL SAVEPOINT 设计局部回滚边界,配合错误记录、有限重试和最终提交检查,给出可复现的 SQL 与上线排查清单。170 收藏 -
从 CLUSTER KEYSLOT 和 CRC16 哈希槽入手,定位 Redis Cluster 的 CROSSSLOT 报错,用 Key Tag 设计同槽键名,并验收 MGET、MULTI 与 Lua 的批量访问边界。170 收藏 -
MySQL JSON_VALUE 对缺少路径和 JSON null 都可能返回 SQL NULL。本文用 JSON_CONTAINS_PATH、JSON_TYPE 和 ON EMPTY 哨兵值区分路径缺失、JSON null、空字符串与 SQL NULL 文档。170 收藏 -
MySQL 的 REGEXP_LIKE 匹配中文时,结果可能受到表达式、模式、列定义和连接排序规则影响。本文给出 utf8mb4 显式配置、分层排查 SQL 与回归样例。169 收藏