我有一个表格模型多维数据集,我已将表拆分为分区以提高处理效率。
当我只处理每日分区时,它需要2h 45m。但是,当我处理完整的整个数据库(包括每日和历史数据)时,需要1h 10m。
有谁知道是什么原因造成的?
谢谢!
表格模型中的 ProcessFull 基本上是 ProcessData(从源中获取数据、构建字典等)和 ProcessReCalc(构建索引、属性层次结构等)的组合。虽然 ProcessData 只获取最新的数据(即分区的数据),但 ProcessReCalc 本身需要在整个数据库上执行。一个很好的参考是 Cathy Dumas 的博客文章:http ://cathydumas.com/2012/01/25/processing-data-transactionally-in-amo/
要找到处理的原因,最好深入探查器跟踪/日志,以确定哪些操作需要很长时间才能完成处理。您的数据是否有可能包含大量重复的数据集,例如审计日志?完成整个数据库(与单个分区相比)可能更快,因为它能够更有效地压缩和组织数据,因为可以更好地压缩重复的数据,从而占用更少的内存。检查这一点的一种潜在方法是查看在分区上运行 ProcessFull 与在整个数据库上运行之后的模型大小。如果为真,则后面的处理将导致较小的数据库。
!