Go语言技术文章
-
Redis OBJECT ENCODING 只告诉你 key 当前采用的内部布局。本文用 listpack、hashtable 和 quicklist 说明编码变化的触发条件,并给出结合 MEMORY USAGE 与延迟数据判断真实性能影响的方法。308 收藏 -
MySQL 切换事务隔离级别后查询结果仍不变,通常是当前事务已经建立了快照,或切换只作用于下一事务。本文用两个会话说明 REPEATABLE READ、READ COMMITTED、自动提交和锁定读的边界。307 收藏 -
MySQL InnoDB 中普通 SELECT、UPDATE、FOR SHARE 与 FOR UPDATE 使用的读视图不同。本文通过事务快照、当前版本和锁定动作,给出查询与并发修改的选择方法。306 收藏 -
MySQL 直方图默认采用手动更新模式。批量导入删除、数据倾斜迁移、执行计划估算明显偏离或迁移恢复后应优先评估更新;MySQL 8.4 可启用 AUTO UPDATE,但仍需理解触发边界。306 收藏 -
MySQL 字符串列完整建索引过宽时,可以用前缀索引缩小索引体积,但长度不能凭感觉填写。本文用区分度查询选择候选长度,再结合字符集、字节上限、SHOW INDEX、EXPLAIN 和 ORDER BY 边界完成验证。305 收藏 -
Redis Pipeline 出现单条错误时,不要只看批次级 Exec 返回值。本文用 go-redis 示例说明如何按命令下标定位失败项,区分 WRONGTYPE、redis.Nil 与连接错误,并判断何时需要 TxPipeline。305 收藏 -
Redis SCAN 即使带了 MATCH 和 COUNT,也可能在一次完整迭代中返回重复键。原因是 SCAN 只保存游标,MATCH 负责过滤,COUNT 只是工作量提示;应用侧应使用幂等操作或按需去重,并检查遍历期间的数据变化。305 收藏 -
MySQL 复制延迟排查先区分 IO 接收线程和 SQL 应用线程,再结合读取位点、执行位点、relay log 积压及 Last_IO_Error、Last_SQL_Error 判断问题落点。304 收藏 -
MySQL 查询明明给条件列建了索引,却因为字符串列与数字参数发生隐式类型转换而扫描变慢。本文用可复现实验说明转换发生在哪里、如何用 EXPLAIN 判断影响,并给出参数类型与字段设计的修复边界。303 收藏 -
Redis 写入缓存时用 SET 的 EX 或 PX 同步设置值和 TTL,读取并续期时用 GETEX,避免 GET、SET、EXPIRE 拆分造成竞态;本文还区分单命令原子性与多步业务条件。303 收藏 -
用 MySQL 资源组把批处理线程绑定到指定 VCPU,并结合线程优先级、会话指派和平台限制做可靠的 CPU 资源隔离。303 收藏 -
MySQL 字符串排序异常,通常不是 ORDER BY 失效,而是列、连接或表达式使用的校对规则不同。本文用 utf8mb4 校对规则、大小写敏感和 COLLATE 覆盖,给出可复现的排查与修正方法。302 收藏 -
Redis HyperLogLog 适合统计大规模 UV:用 PFADD 写入访问标识,PFCOUNT 读取估算值,PFMERGE 合并渠道或分片,并根据 0.81% 左右标准误差判断是否需要精确 Set。302 收藏 -
MySQL 时间范围查询能否命中分区,关键不在分区数量,而在分区键、边界定义和 WHERE 谓词是否保持可裁剪形式。本文用 RANGE COLUMNS、半开区间与 EXPLAIN PARTITIONS 说明具体做法。301 收藏 -
Redis 列表做轻量任务队列时,单独使用 RPOP 容易在消费进程崩溃后丢任务。本文用 LMOVE/BLMOVE 把任务先移入 processing list,再用 LREM 确认完成,拆开重复消费、幂等和集群同槽边界。300 收藏