Go语言技术文章
-
围绕一条真实列表查询,拆分过滤、排序和返回字段,给出 MySQL 复合覆盖索引的布局方法、EXPLAIN 检查项,以及范围条件和写入成本的上线边界。228 收藏 -
讲清 MySQL 函数索引与生成列索引的选择、JSON 表达式类型边界,以及用 EXPLAIN 检查表达式结果是否真正匹配。228 收藏 -
MySQL DDL 出现 Waiting for table metadata lock 时,可用 sys.schema_table_lock_waits 与 performance_schema.metadata_locks 找到等待和阻塞会话,再核对事务后安全处理。228 收藏 -
Redis 7.4 起可用 HEXPIRE 或 HPEXPIRE 给 Hash 中的指定字段设置独立过期时间。本文给出完整命令流程、HTTL/HPTTL 检查方法、条件选项、覆盖字段清除 TTL 的边界,以及旧版本替代方案。228 收藏 -
数据库 · Redis | 1个月前 | Redis · 缓存 · 运维排查 · redis Pub/Sub Keyspace Notifications 过期通知 notify-keyspace-events
Redis 的过期通知适合做观测和轻量联动,却不能天然当成可靠消息。本文从过期事件漏收现场出发,核对 notify-keyspace-events、订阅连接和 expired 事件边界,再用补偿扫描与幂等处理收住通知丢失风险。226 收藏 -
COUNT(字段)的值始终小于等于COUNT(*),这是因为COUNT(字段)仅对该字段中的非NULL值进行统计,而COUNT(*)则会统计所有的物理行。两者的差值就是该字段中NULL值的数量,这是SQL标准规定的行为,并非程序错误。为什么COUNT(字段)总是 ≤ COUNT(*)COUNT(*)226 收藏 -
MySQL 的 ROLLBACK TO SAVEPOINT 会撤销保存点后的数据修改,但不会等同于释放锁。本文区分记录锁、间隙锁和事务结束边界,并用两个会话说明如何排查回滚后的阻塞。226 收藏 -
MySQL 不可见索引适合用来评估索引替代方案:先核对候选索引和基线计划,再让优化器暂时忽略它,结合 EXPLAIN、慢查询与工作负载判断是否仍有依赖,最后决定恢复、替换还是删除。226 收藏 -
用 Redis Lua 脚本把库存校验、扣减和请求记录写入放进同一次执行,配合 KEYS、ARGV、返回码与幂等记录处理重复请求、库存不足和集群键位边界。226 收藏 -
Redis 向量集合适合把小规模向量检索先落到熟悉的 Redis 里。本文从 VADD 写入、VDIM 维度核对和 VSIM 相似度查询入手,演示如何验收数据是否写对、结果是否可解释,以及哪些边界不适合直接上线。225 收藏 -
给生产中的 InnoDB 大表新增二级索引时,先确认 ALGORITHM=INPLACE 与 LOCK=NONE 的适用边界,再用 metadata_locks、SHOW FULL PROCESSLIST 和索引状态检查锁窗口、失败回退与上线结果。224 收藏 -
针对日期分区查询中 DATE、YEAR 等函数包裹分区键的场景,给出半开区间改写、EXPLAIN 验证、时区边界与不适用条件。224 收藏 -
Redis 修改 maxmemory-policy 后,应先用 CONFIG GET 确认运行时策略,再用 INFO stats 记录 evicted_keys 差值。本文给出策略变更、持久化和淘汰计数判断方法。223 收藏 -
解释 Redis Pipeline 批次过大时命令缓冲、服务端回复队列和客户端结果集如何共同抬高内存,并给出批次估算与分批消费方法。222 收藏 -
Retrieved_Gtid_Set 代表副本已经收到的 GTID 集,不等于已经执行。本文用 GTID_SUBTRACT 区分接收缺口与应用积压,给出可复核的复制状态排查方法。221 收藏