Go语言技术文章
-
MySQL 用 SUM OVER 计算累计值时,如果希望每个月重新开始,关键不是给 SUM 加条件,而是把包含年份的月份键放进 PARTITION BY,并用稳定的时间与主键排序。本文给出可直接改写的 SQL 和排查清单。380 收藏 -
Redis Functions 会把 Lua 逻辑作为函数库保存。本文用一个订单状态校验函数说明 FUNCTION LOAD、REPLACE、FUNCTION LIST 和 FUNCTION DELETE 的切换边界,给出发布前验收与失败回滚顺序。379 收藏 -
Redis Lua 返回 RESP3 map 时,客户端是否拿到字典取决于脚本内部的 redis.setresp(3) 与连接侧的 HELLO 3 是否分别配置正确。本文拆开两层协议,说明 RESP2 为何会把 map 展平成交替键值数组,并给出客户端解析检查表。379 收藏 -
Redis 连接池耗尽不等于 Redis 慢。本文用 go-redis PoolStats、SLOWLOG GET 和 CLIENT LIST 区分慢命令、池等待与请求生命周期未结束,并给出修复顺序。378 收藏 -
Redis 的 EXEC 返回 nil/null,通常表示 WATCH 监视的键在提交前被触碰,不能据此判断具体哪个客户端打断了事务。本文区分监视冲突、队列错误和事务内命令错误,并给出带上限的重试写法。377 收藏 -
MySQL JSON 列不能直接按任意路径高效过滤时,可以用 generated column 把固定路径提取成可索引的 SQL 类型。本文从表达式、字符排序规则、VIRTUAL/STORED 和 EXPLAIN 四个方面给出实现方法与边界。377 收藏 -
数据库 · Redis | 1个月前 | Redis · 内存管理 · 故障排查 · 缓存运维 · redis OOM CLIENT NO-EVICT maxmemory-clients noeviction 客户端驱逐
Redis 写入报 OOM 时,先区分数据键无法淘汰与客户端输出缓冲触发驱逐。本文用 CLIENT NO-EVICT、maxmemory-clients、maxmemory-policy 和 INFO memory 还原两条故障链,给出核对命令、控制连接保护和回退边界。376 收藏 -
MySQL 8.0 的 SELECT FOR UPDATE NOWAIT 能在目标行被占用时立即返回,而不是让请求排队。本文用订单库存场景拆解锁冲突返回、事务回滚与唯一索引边界。376 收藏 -
Redis 7.0 起可以用 CLIENT NO-EVICT 保护控制连接,但它只影响客户端淘汰,不会替代 maxmemory 或键淘汰策略。本文用一条监控连接说明 ON/OFF、配置前提和验收边界。376 收藏 -
MySQL JSON_OVERLAPS 用于判断两个 JSON 文档是否存在共同元素,适合筛选标签、权限或适用范围数组。本文给出查询写法,并说明 JSON_CONTAINS、类型精确匹配、NULL、嵌套数组和 InnoDB 多值索引的边界。376 收藏 -
Redis SCAN 不会把整个键空间一次性锁住,但完整遍历仍是 O(N) 工作。COUNT 只是单次工作量提示,配合游标、MATCH、TYPE 和渐进式巡检才能控制线上影响。375 收藏 -
用 Redis ZADD 的 NX、GT 与 CH 选项设计可重复执行的排行榜更新流程,处理同分、回退、重复消息和降级查询等常见边界。374 收藏 -
解释 MySQL 同表 OR 条件何时可能采用 Index Merge,带你从 EXPLAIN 的 type、key、rows、Extra 判断 union 与 sort_union,并通过单语句对照实验评估是否值得保留。373 收藏 -
Redis Cluster 的多 key 命令要求相关 key 位于同一个 hash slot。本文解释 hash tag 的花括号规则,用 CLUSTER KEYSLOT 检查键名,并说明 CROSSSLOT、MOVED、TRYAGAIN 与热点风险的区别。372 收藏 -
数据库 · MySQL | 2天前 | MySQL · InnoDB · 数据库运维 · mysql 死锁 错误日志 events_statements_history_long data_lock_waits Performance Schema
MySQL 可用错误汇总表统计 1213,用语句历史表定位受害 SQL,用锁表观察当前阻塞;完整死锁图仍应写入错误日志长期留存。372 收藏