首页 > 解决方案 > Hive,分区与未分区数据库所花费的时间

问题描述

因此,我有 2 个用于数据集的表,它们是未分区表和分区表。

当我看到分区数据的报告时,累积 CPU 时间显着减少,但与未分区数据相比,总时间是相同的。

为什么是这样 ?

标签: mysqldatabasehive

解决方案


由于这是一个严格的理论问题,您将得到一个严格的理论答案。分区导致表被拆分为具有相同结构的较小表。这使您的SELECT查询可以在不同的表上执行(实际上是SELECT * FROM table_part1 UNION ALL table_part2vs SELECT * FROM table)。

总时间将相同,因为您正在读取相同数量的数据。您可以将table_part1table_part2放在不同的物理磁盘上,这可能会使读取速度更快,因为您将有更少的 IO 等待。但一般来说,对于在同一表空间内分区的表,您将看到两个查询(分区和未分区)的可比时间。

至于 CPU,我们可以推测有一些优化使得操作更小的表更容易。分区表可能更适合内存(包括 CPU 缓存)。在这种情况下,结果可能取决于初始表和分区表的大小 - 对于两侧的超大表,您最终可能会得到相同的 CPU 负载。


推荐阅读