摘要:
这篇文章面向已经会写 SQL、但还没系统建立过索引设计观的后端工程师。 读完你应该能回答四个问题: 一条 SQL 的成本到底花在哪里,索引消掉了其中哪一部分? 面对一个查询场景,联合索引的列顺序该怎么排,依据是什么? "最左前缀""回表""覆盖索引""索引下推"分别约束了什么,边界在哪里? 线上发现 阅读全文
这篇文章面向已经会写 SQL、但还没系统建立过索引设计观的后端工程师。 读完你应该能回答四个问题: 一条 SQL 的成本到底花在哪里,索引消掉了其中哪一部分? 面对一个查询场景,联合索引的列顺序该怎么排,依据是什么? "最左前缀""回表""覆盖索引""索引下推"分别约束了什么,边界在哪里? 线上发现 阅读全文
posted @ 2026-09-22 19:50
松下问码人
阅读(32)
评论(0)
推荐(0)
核心结论先摆出来:先更新数据库、再删除缓存(Cache Aside) 是通用读缓存场景下唯一可取的顺序。但它给你的不是强一致,而是"把不一致窗口压到工程可接受"。真正兜住底线的是三样东西:TTL 过期、删除失败的重试、以及不要在事务提交前删缓存。如果业务真的要求缓存与数据库强一致,那么正确的动作往往
一句话结论:Future、CompletionService、CompletableFuture 都能把串行请求变并发,但只有后两者能让你按完成顺序拿到结果。而在真实线上系统里,决定这段代码是否可靠的,往往不是选了哪个 API,而是线程池、超时预算、异常语义和可观测性这四件事有没有做对。 一、从一个
浙公网安备 33010602011771号