Go语言技术文章
-
MySQL utf8mb4 排序规则不是只影响 ORDER BY,也会改变字符串的相等判断,从而让唯一索引出现新增冲突或放宽边界。本文用 INFORMATION_SCHEMA、COLLATE 对比和迁移前分组检查,说明如何安全判断与处理。431 收藏 -
Redis pipeline 负责减少批量命令的网络往返,不提供事务隔离和自动回滚。本文对比 pipeline、MULTI/EXEC、WATCH 与 Lua,帮助你按一致性需求选择方案。320 收藏 -
联合索引遇到中间列范围条件后,后列通常不能继续缩小同一个连续扫描区间。本文用键组顺序和 EXPLAIN 说明原因,并给出索引重排判断清单。454 收藏 -
Redis AOF 重写时,内存风险主要看 fork 之后的 COW 增长,磁盘风险则要拆成剩余空间、写入吞吐和 fsync 排队。本文用 INFO、MEMORY STATS、df 与 iostat 建立一套可复用的判断清单。501 收藏 -
用 MySQL EXPLAIN ANALYZE 结合 actual time、rows、loops 与 Using temporary、Using filesort,定位临时表和排序的真实开销,再决定改 SQL 还是改索引。196 收藏 -
Redis Cluster 遇到 CROSSSLOT 时,先用 CLUSTER KEYSLOT 找出不同槽位,再用业务 ID hash tag 重构相关 key,并评估迁移与热点风险。218 收藏 -
MySQL 切换事务隔离级别后查询结果仍不变,通常是当前事务已经建立了快照,或切换只作用于下一事务。本文用两个会话说明 REPEATABLE READ、READ COMMITTED、自动提交和锁定读的边界。307 收藏 -
用 INFO replication 对照主库与副本 offset,结合链路、同步状态和 backlog 覆盖范围,判断 Redis 副本是在追赶、断链还是需要全量同步。402 收藏 -
MySQL 分区表查询没走分区裁剪时,先看分区表达式,再用 EXPLAIN 的 partitions 列确认扫描范围,最后把过滤条件改成可被优化器推导的分区键等值或范围。134 收藏 -
从最近访问、累计频率、热点迁移和 TTL 设计几个维度比较 Redis 的 allkeys-lru 与 allkeys-lfu,并给出配置和观测检查清单。106 收藏 -
MySQL 死锁日志最先要找的是等待事务和阻塞事务。本文从 LATEST DETECTED DEADLOCK 读出两端关系,再用 data_lock_waits 关联事务、线程、表和 SQL,最后说明锁顺序、索引与安全重试的修复重点。467 收藏 -
解释 Redis WATCH 监视键在 EXEC 前被修改时为什么返回 nil,并用双客户端示意、有限重试和边界清单处理乐观锁冲突。159 收藏 -
MySQL JSON 数组不能直接按普通列建索引。本文用 InnoDB 多值索引把标量数组映射成可查询的索引记录,并说明 MEMBER OF、JSON_CONTAINS、JSON_OVERLAPS 及空数组、类型和排序限制。482 收藏 -
Redis Lua 返回 RESP3 map 时,客户端是否拿到字典取决于脚本内部的 redis.setresp(3) 与连接侧的 HELLO 3 是否分别配置正确。本文拆开两层协议,说明 RESP2 为何会把 map 展平成交替键值数组,并给出客户端解析检查表。379 收藏 -
MySQL 不可见索引适合用来评估索引替代方案:先核对候选索引和基线计划,再让优化器暂时忽略它,结合 EXPLAIN、慢查询与工作负载判断是否仍有依赖,最后决定恢复、替换还是删除。226 收藏