Go语言技术文章
-
MySQL 里用 ORDER BY RAND() 做随机推荐,小表还能凑合,大表高并发下容易触发全表排序、临时表放大和 CPU 飙升。更稳的做法是先缩小候选集合,再用候选 ID 池、随机键或业务侧抽样把查询控制在索引范围内。378 收藏 -
Redis 过期键通知适合做自动清理的提醒信号,但不能当成可靠消息队列。更稳的做法是订阅事件触发清理任务,同时保留补偿扫描、幂等门禁、失败重试和告警复盘。441 收藏 -
Redis 热点 key 在高并发下同时过期,所有请求会一起回源数据库,表现为 DB QPS 突增、接口超时和 Redis 命中率下降。排查时先看热点 key 的 TTL、命中率和回源日志,修复时用互斥锁、逻辑过期、随机 TTL 和降级保护控制回源压力。119 收藏 -
MySQL 读写分离不是简单把 SELECT 丢到从库。它适合读多写少、查询压力明显大于写入压力的业务,但会带来复制延迟、读己之写、路由规则和故障切换问题。上线前要先确认读写比例、数据一致性要求和回主策略。334 收藏 -
MySQL 多租户订单表变慢时,先用 tenant_id 领头的联合索引稳住常见查询;当热点租户持续拉高 rows、慢日志和队列等待,再考虑租户路由、冷热分流或独立分片。259 收藏 -
本文用删除冗余索引的场景讲清 MySQL 不可见索引:它让优化器先忽略索引,用 EXPLAIN、慢查询和业务指标观察影响,再决定恢复可见或真正删除。468 收藏 -
从 Redis 缓存治理趋势出发,分析单一 TTL 的不足,给出软过期、写侧失效通知、新鲜度指标和渐进落地路径,帮助团队在高峰流量下减少脏读窗口。280 收藏 -
数据库 · MySQL | 2个月前 | MySQL · InnoDB · 性能排查 · 故障复盘 · 长事务 · mysql PURGE 长事务 Undo history list length 写入延迟
复盘一次 MySQL 写入延迟突然升高的问题:从影响面和时间线入手,通过 innodb_trx、history list length 和 purge 状态定位长事务拖住 undo 清理,并给出修复和防复发清单。242 收藏 -
本文从零构建一个 MySQL 审计日志小项目:用订单表、审计表和触发器记录状态变更,演示本地运行、按订单查询、索引设计和过期清理。486 收藏 -
数据库 · MySQL | 2个月前 | MySQL · 磁盘空间 · 故障复盘 · 临时表 · 报表优化 · mysql 临时表 Created_tmp_disk_tables 磁盘打满 报表接口 故障复盘
本文用一次报表接口超时故障复盘说明 MySQL 临时表打满磁盘的排查过程:从影响面、时间线、触发 SQL、根因定位到临时止血和防复发措施。114 收藏 -
本文按数据生命周期说明 MySQL 消息已读表设计:消息如何产生,已读记录如何去重写入,未读数如何查询,重复点击和并发如何处理,以及历史数据如何清理。243 收藏 -
本文从大促库存扣减的热点行争用出发,分析单行库存模型的锁等待瓶颈,演进到分桶库存、汇总校验和灰度上线方案,并说明取舍与验证指标。141 收藏 -
数据库 · Redis | 2个月前 | Redis · 缓存治理 · Keyspace Notifications · 过期事件 · redis Pub/Sub Keyspace Notifications 过期事件 缓存监听 补偿任务
本文用 Redis Keyspace Notifications 演示如何监听过期 Key,配置 notify-keyspace-events,接收 __keyevent@0__:expired 事件,并说明事件通知的丢失风险与补扫兜底做法。181 收藏 -
从零做一个 Redis 慢命令快照小工具,采集 SLOWLOG 样本,解析命令耗时和 Key 线索,按命令类型聚合成 Markdown 报告,用于接口延迟排查和上线前验收。501 收藏 -
从 Redis Key 生命周期治理趋势入手,分析散落 Key、无 TTL、大 Key 和过期策略带来的问题,给出规则登记、扫描任务、告警处理、复盘指标的渐进式采用路径。400 收藏