Go语言技术文章
-
Redis Hash 变大后,真正难排查的常是某几个字段值异常膨胀。本文用 HSCAN NOVALUES 先低成本找字段,再按需回读长度并设置告警阈值,避免把整份 Hash 搬到应用内存。187 收藏 -
MySQL 8.4 Clone Plugin 适合把一个实例的 InnoDB 数据快速复制到另一个实例,但它不是跨大版本备份工具。本文从插件安装、捐赠端授权、接收端发起 CLONE INSTANCE,到版本、引擎和恢复结果核对,整理一条可回滚的实例级恢复路径。186 收藏 -
用 Redis SET NX EX 原子创建带过期时间的分布式锁,配合唯一 token 和 Lua 原子释放,避免锁永久残留或误删其他实例的新锁。186 收藏 -
MySQL 按分组取每组最新记录时,先用 ROW_NUMBER() 在 PARTITION BY 分组内按时间倒序编号,再由外层筛选 rn=1。本文说明稳定排序、并列时间、分组粒度、过滤边界和索引复核方法。185 收藏 -
Redis Lua 脚本一旦超过 lua-time-limit,会阻塞其他命令并返回 -BUSY。本文用一个长脚本现场说明如何确认阻塞、何时可以 SCRIPT KILL、写入后为什么只能重启,以及如何在脚本侧避免再次拖住主线程。184 收藏 -
用 InnoDB 短事务配合 SELECT ... FOR UPDATE SKIP LOCKED,让多个消费者跳过已锁任务并安全更新状态,同时说明索引、空队列、长任务和异常恢复边界。184 收藏 -
通过一个最小副本初始化项目说明 MySQL Clone 插件如何传输 InnoDB 物理快照、复制坐标和元数据,并讲清权限、兼容条件、覆盖重启边界及 GTID 追平方法。184 收藏 -
线上 Redis 里堆积了过期业务前缀或历史缓存时,不能直接用 KEYS 和 DEL 硬删。用 SCAN 分批遍历、先记录样本、按速率提交 UNLINK,并保留停止开关和统计结果,能把清理风险压到可控范围。183 收藏 -
Redis ZREVRANK 默认按分数从高到低返回成员排名,WITHSCORE 可在同一次读取中带回分数。本文用一个排行榜示例核对并列分数、缺失成员和边界排名,避免把返回的零值误判成异常。183 收藏 -
金额字段优先使用 DECIMAL,但 DECIMAL(10,2) 不是万能答案。本文用 M、D、整数位和 SQL mode 拆解字段范围,给出建表与边界检查示例,帮助你按业务上限选择精度和小数位。183 收藏 -
Redis 连接池偶发超时,不能只把超时时间调大。本文按命令执行、连接占用和网络往返三层排查,结合 INFO clients、CLIENT LIST 与 SLOWLOG 区分服务端慢、连接池耗尽和客户端等待。182 收藏 -
精度丢失,究其本质,乃是类型链的断裂所致。比如,BigDecimal未传递scale参数,DECIMAL列定义过窄,以及SQL Server的money类型未被MyBatis默认识别,这三种情况导致了80%以上的问题。就像BigDecimal(35.35, scale=2)最终存储为35,这是因为J181 收藏 -
Redis Pipeline 不是批次越大越快。本文从 RTT、回复队列和单批延迟三个角度,给出可落地的批量窗口设计与 Go 实现。181 收藏 -
用一个订单、商品和批次的 JSON 示例,说明 MySQL JSON_TABLE 的 NESTED PATH 相对路径、空数组补 NULL、类型处理和重复行排查方法。181 收藏 -
用 MySQL 8.4 EXPLAIN ANALYZE 对齐 rows、actual rows 和 loops,判断估算偏差、统计信息与慢查询热点。181 收藏