多年来,我一直在阅读/听到关于bigint列上的数据库连接的"性能优势" OVER加入(var)char列.
不幸的是,在寻找关于'simlilar type questions'的真实答案/建议时:
我没有看到使用Hive版本(最好是版本1.2.1或更高版本)的示例,其中大型(BIG-DATA-ISH)数据集(假设5亿个+行)连接到类似大小的数据集:
我选择32的大小,因为它是MD5哈希的大小,转换为字符和255,因为它是我所见过的最大自然键的"范围".
此外,我希望Hive:
有没有人知道这样的例子,通过展示Hive Explain计划,CPU,文件和网络资源+查询运行时证明了证据?
在与大量查询资料的对比,我们可以看到,它DOES从流选择数据时缓存结果,数据分区表(标准SQL).
示例: 当我们使用以下内容对流式数据分区表执行确定性日期扫描时:
where (_PARTITIONTIME > '2017-11-12' or _PARTITIONTIME is null)
...如果我们在该时间范围内触发相同的确切查询,BigQuery会将数据缓存5到20分钟.
在我对文档的解释中,它声明它不应该缓存数据:
'当查询引用的任何表最近收到流式插入(流式缓冲区附加到表)时,即使没有新行已到达'
重要笔记:
我们的问题:
这里发生了什么/为什么BQ缓存会发生?
此数据在BQ缓存中保留的时间是"随机"(5-20分钟之间).这是什么意思?