mysql - Hive,分区与未分区数据库所花费的时间
问题描述
因此,我有 2 个用于数据集的表,它们是未分区表和分区表。
当我看到分区数据的报告时,累积 CPU 时间显着减少,但与未分区数据相比,总时间是相同的。
为什么是这样 ?
解决方案
由于这是一个严格的理论问题,您将得到一个严格的理论答案。分区导致表被拆分为具有相同结构的较小表。这使您的SELECT
查询可以在不同的表上执行(实际上是SELECT * FROM table_part1 UNION ALL table_part2
vs SELECT * FROM table
)。
总时间将相同,因为您正在读取相同数量的数据。您可以将table_part1
和table_part2
放在不同的物理磁盘上,这可能会使读取速度更快,因为您将有更少的 IO 等待。但一般来说,对于在同一表空间内分区的表,您将看到两个查询(分区和未分区)的可比时间。
至于 CPU,我们可以推测有一些优化使得操作更小的表更容易。分区表可能更适合内存(包括 CPU 缓存)。在这种情况下,结果可能取决于初始表和分区表的大小 - 对于两侧的超大表,您最终可能会得到相同的 CPU 负载。
推荐阅读
- java - WebClient 类不存在
- python - python-telegram-bot - 处理 ReplyKeyboardMarkup 的输出
- python - Python MySQL 参数查询编程错误:1064 (42000)
- winapi - 如何通知用户即将将文件拖放到我的窗口上
- javascript - 频率计数器未定义/2 的幂不等于
- twilio - 我需要能够将呼叫从 Twilio Elastic SIP 中继转移到 Twilio Autopilot
- ios - 有没有办法通过自定义意图从第一个 Siri 呼叫中获取输入?
- javascript - 在循环+ nodejs中使用带有异步/等待的循环
- laravel - 收到以下错误 Illuminate\Database\QueryException could not find driver (SQL: select count(*) as aggregate from `snippets`)
- c - 指向可变大小参数的 C 函数指针