概述合理的分片键可实现数据均衡分布与高并发扩展, 复合索引与查询过滤协同可降低扫描与排序成本。通过查询规划分析与执行统计, 可系统性验证优化成效。关键实践与参数分片键选择: 高基数、写入均衡、查询可过滤热点避免: 时间序列场景使用哈希或复合键抵抗热点复合索引: 按查询过滤与排序字段有序设计覆盖查询: 减少回表, 降低 `docsExamined`规划分析: 使用 `explain("executionStats")` 观测执行示例/配置/实现sh.enableSharding("shop") sh.shardCollection("shop.orders", { customerId: 1, createdAt: 1 }) db.orders.createIndex({ customerId: 1, status: 1, createdAt: -1 }) db.orders.createIndex({ createdAt: -1 }) db.orders.find({ customerId: 123, status: "PAID" }).sort({ createdAt: -1 }).limit(20).explain("executionStats") 验证执行统计: 记录 `nReturned` `totalDocsExamined` `totalKeysExamined` 与耗时, 目标降低扫描与提高命中分布均衡: 使用 `chunkMetadata` 与 `balancerStatus` 验证分片均衡与迁移吞吐写入性能: 对比无索引与复合索引下的批量写入与查询延迟排序代价: 验证覆盖索引时排序在索引内完成, 减少内存使用注意事项分片键不可变更, 需在建库时审慎设计索引数量应控制在查询必要范围, 防止写入放大哈希分片降低范围查询效率, 需结合实际场景权衡定期回顾工作负载与查询模式, 根据数据演化维护索引

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部