青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Prayer

在一般中尋求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

fragment on db2 and informix

Posted on 2012-03-05 22:57 Prayer 閱讀(927) 評論(0)  編輯 收藏 引用 所屬分類: DB2
http://hi.baidu.com/shenqb/blog/item/1c9ea8de8894644fccbf1aa1.html

轉載自 koolkite
最終編輯 koolkite
表分區功能是一種數據組織方案,即,表數據根據一個或多個表列中的值分布到多個存儲對象(稱為數據分區或范圍)中。每個數據分區都是單獨存儲的。這 些存儲對象可以在不同的表空間中,也可以在相同表空間中。按照 CREATE TABLE 語句的 PARTITION BY 子句中指定那樣將表數據分區。此定義中使用的列被稱為表分區鍵列。DB2 表分區功能與 Informix® Dynamic Server 和 Informix Extended Parallel Server 提供的數據分段組織方法相對應。
Informix 方法

Informix 支持若干種數據組織方案,在 Informix 產品中,這些方案稱為分段。其中一種較常使用的分段類型是 FRAGMENT BY EXPRESSION。這種類型的分段的工作方式與 CASE 語句非常相似,其中有一個與表的每個分段相關聯的表達式。檢查這些表達式以便確定行的放置位置。

Informix 與 DB2 數據庫系統的比較

DB2 數據庫提供了豐富的補充功能,這些功能與 Informix 數據組織方案直接對應,這使客戶能夠相對容易地從 Informix 語法轉換為 DB2 語法。DB2 數據庫管理器將生成列與 CREATE TABLE 語句的 PARTITION BY RANGE 子句配合使用,以處理復雜的 Informix 方案。表 78 對 Informix 和 DB2 數據庫產品中使用的數據組織方案作了比較。

 

表 78. 所有 Informix 與 DB2 數據組織方案的映射
數據組織方案 Informix 語法 DB2 版本 9.1 語法
  • Informix:基于表達式
  • DB2:表分區
FRAGMENT BY EXPRESSION PARTITION BY RANGE
  • Informix:循環法
  • DB2:缺省
FRAGMENT BY ROUND ROBIN 沒有語法:DB2 數據庫管理器自動在容器之間分布數據
  • Informix:范圍分布
  • DB2:表分區
FRAGMENT BY RANGE PARTITION BY RANGE
  • Informix:系統定義的散列
  • DB2:數據庫分區
FRAGMENT BY HASH DISTRIBUTE BY HASH
  • Informix:HYBRID
  • DB2:在進行表分區的情況下進行數據庫分區
FRAGMENT BY HYBRID DISTRIBUTE BY HASH 和 PARTITION BY RANGE
  • Informix:不適用
  • DB2:多維集群
不適用 ORGANIZE BY DIMENSION
示例

下列示例詳細說明了在 DB2 中如何實現與任何使用表達式的 Informix 分段方案等同的結果。

示例 1:下面這個基本的 Create Table 語句顯示了 Informix 分段以及等同的 DB2 數據庫系統表分區語法:

Informix 語法:

CREATE TABLE demo(a INT) FRAGMENT BY EXPRESSION
a = 1 IN db1,
a = 2 IN db2,
a = 3 IN db3;

DB2 語法:

CREATE TABLE demo(a INT) PARTITION BY RANGE(a)
(STARTING(1) IN db1,
STARTING(2) IN db2,
STARTING(3) ENDING(3) IN db3);

Informix XPS 支持稱為 hybrid 的兩層分段方案,在此方案中,使用一個表達式來在協作服務器之間分布數據,并使用第二個表達式來在協作服務器內分布數據。這使所有協作服務器都能夠參與查 詢(即,在所有協作服務器上都有數據),并使查詢能夠利用數據分區消除功能的優勢。

通過結合使用 CREATE TABLE 語句的 DISTRIBUTE BY 和 PARTITION BY 子句,DB2 數據庫系統實現了與 Informix hybrid 等同的組織方案。

示例 2:以下示例顯示了組合子句的語法:

Informix 語法

CREATE TABLE demo(a INT, b INT) FRAGMENT BY HYBRID HASH(a)
EXPRESSION b = 1 IN dbsl1,
b = 2 IN dbsl2;

DB2 語法

CREATE TABLE demo(a INT, b INT) IN dbsl1, dbsl2
DISTRIBUTE BY HASH(a),
PARTITION BY RANGE(b) (STARTING 1 ENDING 2 EVERY 1);

此外,可以使用多維集群來進一步組織數據:

CREATE TABLE demo(a INT, b INT, c INT) IN dbsl1, dbsl2
DISTRIBUTE BY HASH(a),
PARTITION BY RANGE(b) (STARTING 1 ENDING 2 EVERY 1)
ORGANIZE BY DIMENSIONS(c);

這樣,列 a 值相同的所有行都在同一個數據庫分區中。所有列 b 值相同的行都在同一個表空間中。對于具有給定的 ab 值的行,會將再具有相同 c 值的所有行集中到一個磁盤上。此方法非常適合于 OLAP 類型的下尋操作,這是因為,僅需掃描單個數據庫分區上單個表空間中的一個或數個擴展數據塊就可以滿足此類查詢。

應用表分區以解決常見的應用程序問題

下列各節討論如何應用各種 DB2 表分區功能以解決常見的應用程序問題。每一節都特別側重于采取最佳措施來將各種 Informix 分段方案映射到等同的 DB2 表分區方案。

創建簡單數據分區范圍時的注意事項

其中一種最常見的表分區應用是根據日期鍵對大型事實表進行分區。如果需要創建大小統一的日期范圍,請考慮使用自動生成的 CREATE TABLE 語法格式。

示例

示例 1:以下示例顯示自動生成的語法格式:

CREATE TABLE orders
(
l_orderkey DECIMAL(10,0) NOT NULL,
l_partkey INTEGER,
l_suppkey INTEGER,
l_linenumber INTEGER,
l_quantity DECIMAL(12,2),
l_extendedprice DECIMAL(12,2),
l_discount DECIMAL(12,2),
l_tax DECIMAL(12,2),
l_returnflag CHAR(1),
l_linestatus CHAR(1),
l_shipdate DATE,
l_commitdate DATE,
l_receiptdate DATE,
l_shipinstruct CHAR(25),
l_shipmode CHAR(10),
l_comment VARCHAR(44))
PARTITION BY RANGE(l_shipdate)
(STARTING '1/1/1992' ENDING '12/31/1993' EVERY 1 MONTH);

這將創建 24 個范圍,即對 1992-1993 的每個月創建一個范圍。嘗試插入 l_shipdate 超出該范圍的行將導致錯誤。

示例 2:將上一示例與以下 Informix 語法作比較:

create table orders
(
l_orderkey decimal(10,0) not null,
l_partkey integer,
l_suppkey integer,
l_linenumber integer,
l_quantity decimal(12,2),
l_extendedprice decimal(12,2),
l_discount decimal(12,2),
l_tax decimal(12,2),
l_returnflag char(1),
l_linestatus char(1),
l_shipdate date,
l_commitdate date,
l_receiptdate date,
l_shipinstruct char(25),
l_shipmode char(10),
l_comment varchar(44)
) fragment by expression
l_shipdate < '1992-02-01' in ldbs1,
l_shipdate >= '1992-02-01' and l_shipdate < '1992-03-01' in ldbs2,
l_shipdate >= '1992-03-01' and l_shipdate < '1992-04-01' in ldbs3,
l_shipdate >= '1992-04-01' and l_shipdate < '1992-05-01' in ldbs4,
l_shipdate >= '1992-05-01' and l_shipdate < '1992-06-01' in ldbs5,
l_shipdate >= '1992-06-01' and l_shipdate < '1992-07-01' in ldbs6,
l_shipdate >= '1992-07-01' and l_shipdate < '1992-08-01' in ldbs7,
l_shipdate >= '1992-08-01' and l_shipdate < '1992-09-01' in ldbs8,
l_shipdate >= '1992-09-01' and l_shipdate < '1992-10-01' in ldbs9,
l_shipdate >= '1992-10-01' and l_shipdate < '1992-11-01' in ldbs10,
l_shipdate >= '1992-11-01' and l_shipdate < '1992-12-01' in ldbs11,
l_shipdate >= '1992-12-01' and l_shipdate < '1993-01-01' in ldbs12,
l_shipdate >= '1993-01-01' and l_shipdate < '1993-02-01' in ldbs13,
l_shipdate >= '1993-02-01' and l_shipdate < '1993-03-01' in ldbs14,
l_shipdate >= '1993-03-01' and l_shipdate < '1993-04-01' in ldbs15,
l_shipdate >= '1993-04-01' and l_shipdate < '1993-05-01' in ldbs16,
l_shipdate >= '1993-05-01' and l_shipdate < '1993-06-01' in ldbs17,
l_shipdate >= '1993-06-01' and l_shipdate < '1993-07-01' in ldbs18,
l_shipdate >= '1993-07-01' and l_shipdate < '1993-08-01' in ldbs19,
l_shipdate >= '1993-08-01' and l_shipdate < '1993-09-01' in ldbs20,
l_shipdate >= '1993-09-01' and l_shipdate < '1993-10-01' in ldbs21,
l_shipdate >= '1993-10-01' and l_shipdate < '1993-11-01' in ldbs22,
l_shipdate >= '1993-11-01' and l_shipdate < '1993-12-01' in ldbs23,
l_shipdate >= '1993-12-01' and l_shipdate < '1994-01-01' in ldbs24,
l_shipdate >= '1994-01-01' in ldbs25;

注意,Informix 語法提供了上下不封頂的范圍以捕獲預期范圍外的日期。通過添加使用 MINVALUE 和 MAXVALUE 的范圍,可以將 DB2 語法修改為與 Informix 語法匹配。

示例 3:以下示例將示例 1 修改為與 Informix 語法匹配:

CREATE TABLE orders
(
l_orderkey DECIMAL(10,0) NOT NULL,
l_partkey INTEGER,
l_suppkey INTEGER,
l_linenumber INTEGER,
l_quantity DECIMAL(12,2),
l_extendedprice DECIMAL(12,2),
l_discount DECIMAL(12,2),
l_tax DECIMAL(12,2),
l_returnflag CHAR(1),
l_linestatus CHAR(1),
l_shipdate DATE,
l_commitdate DATE,
l_receiptdate DATE,
l_shipinstruct CHAR(25),
l_shipmode CHAR(10),
l_comment VARCHAR(44)
) PARTITION BY RANGE(l_shipdate)
(STARTING MINVALUE,
STARTING '1/1/1992' ENDING '12/31/1993' EVERY 1 MONTH,
ENDING MAXVALUE);

這種技術允許將任何日期插入到表中。

使用生成列按表達式進行分區

雖然 DB2 數據庫并不直接支持按表達式進行分區,但支持按生成列進行分區,因此有可能獲得相同的結果。

在決定是否使用此方法前,請考慮下列用法準則:

  • 生成列是真實的列,它占用物理磁盤空間。使用生成列的表會略微變大。
  • 對于在分區表進行分區時所基于的列,不能改變其生成列表達式。嘗試執行此操作將產生消息 SQL0190。如果按下一節描述的方式將新數據分區添加到使用生成列的表中,通常要求改變定義生成列的表達式。目前,不支持改變定義生成列的表達式。
  • 當表使用生成列時,對于何時可以應用數據分區消除是有限制的。
示例

示例 1:以下示例使用 Informix 語法,在這種情況下適合使用生成列。在本示例中,進行分區時所基于的列存放了加拿大的省和地域。由于省列表不大可能更改,因此生成列表達式也不大可能更改。

CREATE TABLE customer (
cust_id INT,
cust_prov CHAR(2))
FRAGMENT BY EXPRESSION
cust_prov = "AB" IN dbspace_ab
cust_prov = "BC" IN dbspace_bc
cust_prov = "MB" IN dbspace_mb
...
cust_prov = "YT" IN dbspace_yt
REMAINDER IN dbspace_remainder;

示例 2:在此示例中,使用生成列對 DB2 表進行分區:

CREATE TABLE customer (
cust_id INT,
cust_prov CHAR(2),
cust_prov_gen GENERATED ALWAYS AS (CASE
WHEN cust_prov = 'AB' THEN 1
WHEN cust_prov = 'BC' THEN 2
WHEN cust_prov = 'MB' THEN 3
...
WHEN cust_prov = 'YT' THEN 13
ELSE 14 END))
IN tbspace_ab, tbspace_bc, tbspace_mb, .... tbspace_remainder
PARTITION BY RANGE (cust_prov_gen)
(STARTING 1 ENDING 14 EVERY 1);

這里,CASE 語句中的表達式與 FRAGMENT BY EXPRESSION 子句中的相應表達式匹配。CASE 語句將每個原始表達式映射到一個數字,該數字存儲在生成列(在本示例中是 cust_prov_gen)中。此列是存儲在磁盤上的真實列,因此,表占用的空間量會比 DB2® 通過表達式直接支持的分區所必需的空間量略多。本示例使用短語法格式。因此,必須在 CREATE TABLE 語句的 IN 子句中列示用來放置數據分區的表空間。如果使用長語法格式,則每個數據分區都需要不同的 IN 子句。

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美国产日韩二区| 老妇喷水一区二区三区| 亚洲精品影院| 99精品国产在热久久下载| 亚洲一区在线看| 久久资源av| 99视频精品全国免费| 欧美一区二区三区日韩| 欧美精品福利| 精品动漫一区| 香蕉成人伊视频在线观看| 狠狠色综合色区| 一区二区三区视频在线看| 久久午夜精品一区二区| 99国产成+人+综合+亚洲欧美| 欧美在线视频在线播放完整版免费观看 | 久久国产精品久久久| 欧美成人午夜77777| 午夜精品亚洲一区二区三区嫩草| 欧美日本一道本在线视频| 亚洲精品在线视频| 亚洲精品色婷婷福利天堂| 欧美日韩国产一级| 亚洲一区二区三区精品动漫| 韩日在线一区| 亚洲精品一区二区三区在线观看| 久久久久国产精品一区| 伊人久久大香线蕉综合热线| 免费的成人av| 欧美大片在线观看一区二区| 亚洲美女网站| 在线亚洲观看| 国产伊人精品| 欧美国产精品va在线观看| 欧美激情中文字幕乱码免费| 亚洲视频高清| 欧美一区亚洲| 亚洲精品资源| 亚洲综合成人在线| 在线观看亚洲精品| 99riav国产精品| 国产一区二区高清不卡| 亚洲第一区色| 欧美午夜精品久久久久久浪潮| 午夜久久黄色| 美女视频一区免费观看| 亚洲一区国产一区| 久久―日本道色综合久久| 欧美日韩一卡| 麻豆久久婷婷| 国产精品男女猛烈高潮激情| 另类欧美日韩国产在线| 欧美日韩你懂的| 久久婷婷激情| 国产精品福利网| 欧美国产另类| 国产欧美精品日韩| 最新亚洲一区| 久久久国产视频91| 久久国产手机看片| 久久国产日韩欧美| 久久夜色精品| 欧美激情区在线播放| 性做久久久久久免费观看欧美| 美女国产一区| 久久精品91| 欧美日韩影院| 欧美高清视频在线播放| 国产一区二区三区四区老人| 99视频超级精品| 日韩视频一区二区三区在线播放免费观看 | 国产日韩欧美综合在线| 一本不卡影院| 日韩亚洲欧美高清| 噜噜噜久久亚洲精品国产品小说| 欧美一区影院| 欧美性做爰毛片| 亚洲欧洲一区二区三区在线观看| 国模私拍一区二区三区| 午夜精彩国产免费不卡不顿大片| 中文一区二区在线观看| 欧美电影在线观看| 亚洲国产成人精品久久久国产成人一区 | 久久三级视频| 国产精品一区二区黑丝| 一本色道久久99精品综合| 91久久精品国产91性色| 麻豆精品视频在线| 亚洲高清久久网| 亚洲精品少妇网址| 欧美激情一区二区三区在线视频 | 欧美激情亚洲激情| 亚洲福利av| 美女图片一区二区| 亚洲国产一区二区三区a毛片| 亚洲国产99精品国自产| 毛片av中文字幕一区二区| 欧美寡妇偷汉性猛交| 亚洲激情成人| 欧美日本精品在线| 在线视频欧美精品| 亚洲在线国产日韩欧美| 国产精品乱看| 久久99伊人| 欧美韩日视频| 亚洲免费观看高清在线观看| 欧美激情一二三区| 在线综合欧美| 久久精品99| 免费视频久久| 亚洲精品男同| 篠田优中文在线播放第一区| 国产精品夜夜夜| 久久精品1区| 亚洲黄色影片| 欧美一级在线亚洲天堂| 国产一区导航| 免费观看30秒视频久久| 日韩视频免费在线| 久久精品在线免费观看| 在线观看一区| 欧美体内谢she精2性欧美| 亚洲视频999| 欧美成人69| 亚洲图片欧美午夜| 国产综合精品| 欧美v日韩v国产v| 亚洲一区在线直播| 免费观看亚洲视频大全| 一区二区三区高清不卡| 国产午夜精品久久久久久久| 男女精品网站| 亚洲欧美成人一区二区在线电影 | 久久精品视频网| 亚洲国产日韩欧美在线图片| 亚洲午夜91| 一区在线电影| 欧美色区777第一页| 久久精品国亚洲| 一二三四社区欧美黄| 美女诱惑黄网站一区| 亚洲自拍三区| 亚洲理论在线| 狠狠入ady亚洲精品| 欧美日韩视频| 久久久久综合网| 亚洲一区二区免费| 亚洲成人自拍视频| 久久亚洲春色中文字幕| 这里只有精品视频在线| 欧美亚洲一区在线| 在线成人小视频| 国产欧美欧美| 欧美三区在线观看| 欧美高清在线视频观看不卡| 先锋影音一区二区三区| 99精品视频免费观看视频| 欧美成人r级一区二区三区| 欧美在线免费视频| 中文av一区二区| 一区电影在线观看| 亚洲日韩第九十九页| 一区二区三区在线免费播放| 亚洲在线中文字幕| 亚洲国产一区二区三区青草影视| 亚洲精品欧美一区二区三区| 久久精品国产99国产精品| 一区二区三区.www| 亚洲国产成人精品久久| 国产欧美一区二区精品仙草咪| 亚洲国产天堂网精品网站| 国产精品久久久久av免费| 欧美精品日韩一区| 欧美波霸影院| 裸体丰满少妇做受久久99精品| 欧美一级理论性理论a| 亚洲一区二区三区四区中文 | 免费在线日韩av| 久久视频精品在线| 欧美在线999| 久久成人18免费观看| 欧美在线国产精品| 欧美一级欧美一级在线播放| 亚洲欧美日本国产有色| 亚洲免费中文| 亚欧成人在线| 久久精品国产精品亚洲精品| 欧美资源在线观看| 麻豆精品网站| 亚洲国产成人久久综合| 91久久久久久| 亚洲少妇最新在线视频| 午夜精品久久久99热福利| 性亚洲最疯狂xxxx高清| 久久久久久久网| 欧美成人综合| 欧美色中文字幕| 国产一区二区三区精品欧美日韩一区二区三区| 国产麻豆成人精品| 在线观看欧美激情|