-
RedisLua脚本不能实现真正的分布式事务回滚,仅能通过条件化原子写入预防性拒绝,失败后需业务层设计补偿机制。
-
用 Redis HyperLogLog 做站点 UV 统计:通过 PFADD 写入用户标识,用 PFCOUNT 读取近似去重人数,对比 Set 精确去重的内存成本,并说明适用场景和误差边界。
-
从 MySQL 8.4 Index Condition Pushdown 入手,讲清为什么用了索引仍可能回表拖慢,以及如何用 EXPLAIN、optimizer_switch 和线上指标验证 ICP 收益。
-
增大repl-backlog-size能修复断连后全量回滚,因其为主节点提供足够大的环形缓冲区暂存断连期间的写命令;只要从节点重连时请求的slave_repl_offset仍在该缓冲区内(即master_repl_offset−slave_repl_offset≤repl_backlog_histlen),即可触发PARTIALRESYNC实现增量同步,避免FULLRESYNC。
-
RedisPub/Sub不支持延迟投递,一发即广播、离线即丢失;可靠延时需绕开Pub/Sub,改用ZSET存消息+调度器触发PUBLISH,并用Lua保证原子性。
-
MySQL 8.0前子查询中ORDER BY + LIMIT报错是因语法不支持,错误码1235;解决方法是外移排序逻辑,改用派生表或窗口函数,并确保WHERE条件置于窗口外、日期范围用开区间避免截断。子查询里用 ORDER BY + LIMIT 1 为什么总报错?在MySQL 8.0之前,要是在子查
-
A VG(SUM(x))一定报错,因SQL标准禁止嵌套聚合函数,解析器在语法分析阶段即拒绝;所有主流数据库均报“cannot nest aggregate functions”错误,本质是SUM输出标量而A VG需输入一组值。A VG(SUM(x)) 为什么一定报错 这是因为SQL解析器在语法分析阶
-
ORDER BY RAND()在MySQL中极慢,因其必须全表扫描、为每行计算RAND()并全量排序,即使LIMIT 1也无法避免,100万行耗时可达30秒,且索引完全失效;替代方案为主键范围随机采样等避开排序的方法。因为 RAND() 在大多数数据库里触发全表扫描 + 全行随机数计算 + 全量排序
-
应使用deleted_at时间戳字段(TIMESTAMP或DATETIME类型),默认为NULL;NULL表示未删除,非NULL表示已软删除,避免用is_deleted布尔字段以防语义模糊和非法赋值。软删除字段该用什么类型和默认值 直接加 is_deleted 布尔字段最常见,但容易踩坑:Postg
-
SpringBoot默认不开启Redis读写分离,纯主从模式下即使配置read-from也无效;必须使用哨兵/集群模式或自定义MasterReplica.connect(),并配合LettuceClientConfigurationBuilderCustomizer注入ReadFrom.REPLICA_PREFERRED才能生效。
-
通过订单列表慢查询案例,演示如何阅读 EXPLAIN 的 type、key、rows、Extra 字段,并设计联合索引优化 WHERE、ORDER BY 和 LIMIT 分页。
-
从数据库重启后热点接口 P99 抖动切入,讲清 MySQL 8.x InnoDB Buffer Pool dump/load、冷启动诊断、预热脚本、参数检查和上线演练。
-
Redis WAIT 用于等待当前连接此前写命令被副本确认,但超时后仍会返回已确认的副本数。本文用 SET、WAIT 和 INFO replication 演示如何判断返回值、区分复制确认与强一致,并处理连接复用和超时边界。
-
调小down-after-milliseconds并非提速关键,它仅控制单哨兵标记SDOWN的阈值;真正影响故障转移速度的是探测间隔、quorum共识、hello广播周期及failover-timeout与从节点同步能力的协同匹配。
-
需结合XINFOCONSUMERS与XINFOGROUPS判断Streams实时消费延迟:关注pel-count、pending数、idle值及last-delivered-id与流尾ID的字典序比较,避免误判离线或假死状态。