EF Core 11 makes your split queries faster3 months agohttps://steven-giesel.com/blogPost/d4401fd0-805a-4703-9d9e-5fe3b57c25eaEF Core 11 通过从集合查询中剪除不必要的引用导航属性,提升了拆分查询的性能。在 EF Core 10 中,包含多个引用导航属性的拆分查询会在集合查询中引入额外的 JOIN 和 ORDER BY 列,导致效率低下。EF Core 11 移除了这些不必要的连接,从而以更少的数据库工作和内存分配实现更快的查询。基准测试显示,与 EF Core 10 相比,在 EF Core 11 中使用拆分查询时,执行时间和内存使用量均有所减少。
Designing DB partitions you don't have to babysit3 months agohttps://explainanalyze.com/p/designing-partitioning-you-dont-have-to-babysit/PostgreSQL和MySQL要求分区键必须包含在primary key中,这可能导致唯一性和查询性能问题。分区剪裁作为核心优化手段,若WHERE子句未包含分区键则会失效,导致查询速度缓慢。静态分区边界随时间推移可能出现失衡,需要人工重新平衡并带来运维负担。按主键(如BIGINT自增列)进行分区可确保自动剪裁而无需修改代码。自动化服务可通过监控数据增长、拆分通用分区及处理数据保留策略来管理分区,减少人工操作。时间对齐边界可从日期列推导得出,无需将其包含在分区键中,从而避免查询条件泄露。pg_partman和TimescaleDB等工具虽能自动化基于时间的分区,但可能导致键值泄露到查询中;自主开发服务可提供更高灵活性。哈希和列表分区需监控数据倾斜或通用分区中的值提升,自动化重点在于检测而非拆分。选择已存在于所有关键查询中的列作为分区键(如主键),可防止抽象泄露并保持性能。