【发布时间】:2014-06-01 12:06:36
【问题描述】:
我知道DB2 中的分区是如何工作的,但我不知道这个分区值究竟存储在哪里。编写创建分区查询后,例如:
CREATE TABLE orders(id INT, shipdate DATE, …)
PARTITION BY RANGE(shipdate)
(
STARTING '1/1/2006' ENDING '12/31/2006'
EVERY 3 MONTHS
)
运行上述查询后,我们知道每 3 个月按订单创建分区,但是当我们运行选择查询时,查询引擎会引用此分区。我很想知道这实际上存储在哪里,无论是在同一个表中还是 DB2 有一个不同的表,每个表的分区值都存储在其中。
谢谢,
【问题讨论】:
-
这个问题的答案取决于平台,这是一个普遍的问题。为了提供更好的服务作为参考站点,我们为什么不针对每个平台回答这个问题,而不是简单地询问 OP 与哪个平台相关。
-
“很想知道这个实际存储在哪里”——这个到底是什么?您是在询问分区范围定义还是分区键列值?
-
@mustaccio :我说的是分区值,即我根据您猜测分区键列值。当我们创建分区时,可能会在某些地方存储此键值,以便查询引擎可以轻松读取此值。(例如:日期为 '1/1/2006' 的数据从行号 1001 开始等)。我希望我能让你理解我的问题。期待您的帮助。谢谢
-
列值,无论它们是否是分区键,都像往常一样存储在数据对象的表行中。
-
您的意思是说在为其创建分区的同一个表中。 (我刚刚加入了一个使用 DB2 分区概念的新团队,我必须查看一些表的分区键值是什么,而且我不知道从哪里获取这些数据。)请告诉我一个我可以获得实现分区概念的表的分区键值对的方式。再次感谢:)