【问题标题】:DB2 PartitioningDB2 分区
【发布时间】: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 分区概念的新团队,我必须查看一些表的分区键值是什么,而且我不知道从哪里获取这些数据。)请告诉我一个我可以获得实现分区概念的表的分区键值对的方式。再次感谢:)

标签: db2 database-partitioning


【解决方案1】:

DB2 中的表分区存储在表空间中。 对于常规表(如果不使用表分区),表数据存储在单个表空间中(不考虑 LOB)。 对于分区表,可以将多个表空间用于其分区。 这是通过 CREATE TABLE 语句的 "" 子句实现的。

CREATE TABLE parttab
...
in TBSP1, TBSP2, TBSP3

在本例中,第一个分区将存储在 TBSP1 中,第二个分区存储在 TBSP2 中,第三个分区存储在 TBSP3 中,第四个存储在 TBSP1 中,依此类推。

表分区在 DB2 中命名 - 默认情况下为 PART1 ..PARTn - 所有这些详细信息都可以在系统目录视图 SYSCAT.DATAPARTITIONS 中查找,包括指定的分区范围。

另见http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.sql.ref.doc/doc/r0021353.html?cp=SSEPGG_10.5.0%2F2-12-8-27&lang=en

用作分区键的列可以在 syscat.datapartitionexpression 中查找。

创建分区表的语法也很长,可以明确指定分区名称以及存储分区的表空间。

对于应用程序,分区表看起来像一个普通的表。 分区可以从分区表中分离。在这种情况下,分区与分区表“断开连接”并转换为表而不移动数据(反之亦然)。

最好的问候 迈克尔

【讨论】:

    【解决方案2】:

    DB2 将为每个分区创建单独的物理位置。所以每个分区都会有自己的表空间。当您在此分区表上选择时,您的 SQL 可能会直接转到单个分区,也可能会跨越多个分区,具体取决于您的 SQL 的方式。此外,这可能允许您的 SQL 并行运行,即可以同时访问许多 TS 以加快 SELECT。

    【讨论】:

      【解决方案3】:

      经过一番研究,我终于弄明白了,想把这个信息分享给别人,希望对别人有用。

      如何查看这个键值? => 对于 LUW (Linux/Unix/Windows),您可以在 Table Object Editor 或 Object Viewer Script 选项卡中看到键。对于 z/OS,有一个名为“限制键”的对象查看器选项卡。我已打开问题 TDB-885 为 LUW 表创建对象查看器选项卡。

      检查这些值的简单查询:

      从 SYSCAT.DATAPARTITIONS 中选择 *

      哪里的选项卡 = ? AND TABNAME = ?

      按顺序排列

      参考:http://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.5.0/com.ibm.db2.luw.sql.ref.doc/doc/r0021353.html?lang=en

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-30
        • 2013-10-25
        • 1970-01-01
        • 1970-01-01
        • 2015-02-13
        • 1970-01-01
        相关资源
        最近更新 更多