因此,我有2个数据集表,分别是未分区表和分区表。
当我看到分区数据的报告时,累积的CPU时间显着减少,但与未分区的数据相比,所花费的总时间是相同的。
这是为什么?
答案 0 :(得分:1)
由于这是一个严格的理论问题,您将获得一个严格的理论答案。分区会导致将一个表拆分为具有相同结构的较小表。这使您的SELECT
查询可以在不同的表上执行(有效地SELECT * FROM table_part1 UNION ALL table_part2
与SELECT * FROM table
)。
由于要读取相同数量的数据,因此总时间相同。您可以将table_part1
和table_part2
放在不同的物理磁盘上,这可能会使读取速度更快,因为您的IO等待时间更少。但是通常,对于在同一表空间中分区的表,您将看到两个查询(分区和未分区)的可比较时间。
对于CPU,我们可以推测已经进行了一些优化,使操作较小的表变得更加容易。分区表可能会更好地适合内存(包括CPU缓存)。在这种情况下,结果可能取决于初始表和分区表的大小-对于两侧的超大表,您可能会以两种方式最终承受相同的CPU负载。