• <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>

            Prayer

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

            DB2 V9表分區 4

            Posted on 2010-04-15 23:40 Prayer 閱讀(1050) 評論(0)  編輯 收藏 引用 所屬分類: DB2
            手工生成方法為PARTITION BY子句中列示的每個范圍創建一個新數據分區?這種語法格式提高了定義范圍時的靈活性,從而增加了數據和LOB布置選項?對清單12所創建的示例分區表TEST3,如果用手工方式創建,可以在DB2CLP窗口中,連上數據庫,先發出DROP TABLE命令,刪除示例分區表TEST3,再發出CREATE TABLE命令創建示例分區表TEST3,其分區鍵RQ允許錄入的時間段為“2007-01-01”到“2007-12-31”,具體如清單13所示:

            - - 清單13 .手工創建示例分區表TEST3 


            C:\> DB2 CONNECT TO DB2TEST1 數據庫連接信息 數據庫服務器 = DB2 / NT 9.1.0 SQL 授權標識 = RHETTE 本地數據庫別名 = DB2TEST1 C:\> db2 drop table test3 DB20000I SQL命令成功完成?
            C:\> db2 CREATE TABLE TEST3 ( ID INTEGER NOT NULL , RQ DATE NOT NULL , IMAGE BLOB (1 M ) NOT NULL LOGGED NOT COMPACT ) PARTITION BY RANGE (RQ NULLS LAST) (PARTITION DATAPATITION1 STARTING FROM ('2007-01-01') INCLUSIVE ENDING AT ('2007-02-01') EXCLUSIVE IN TABLESPACE1 LONG IN LARGETBS1 , PARTITION DATAPATITION2 STARTING FROM ('2007-02-01') INCLUSIVE ENDING AT ('2007-03-01') EXCLUSIVE IN TABLESPACE2 LONG IN LARGETBS2 , PARTITION DATAPATITION3 STARTING FROM ('2007-03-01') INCLUSIVE ENDING AT ('2007-04-01') EXCLUSIVE IN TABLESPACE3 LONG IN LARGETBS3 , PARTITION DATAPATITION4 STARTING FROM ('2007-04-01') INCLUSIVE ENDING AT ('2007-05-01') EXCLUSIVE IN TABLESPACE1 LONG IN LARGETBS1 , PARTITION DATAPATITION5 STARTING FROM ('2007-05-01') INCLUSIVE ENDING AT ('2007-06-01') EXCLUSIVE IN TABLESPACE2 LONG IN LARGETBS2 ,PARTITION DATAPATITION6 STARTING FROM ('2007-06-1') INCLUSIVE ENDING AT ('2007-07-1') EXCLUSIVE IN TABLESPACE3 LONG IN LARGETBS3 , PARTITION DATAPATITION7 STARTING FROM ('2007-07-01') INCLUSIVE ENDING AT ('2007-08-01') EXCLUSIVE IN TABLESPACE1 LONG IN LARGETBS1 , PARTITION DATAPATITION8 STARTING FROM ('2007-08-01') INCLUSIVE ENDING AT ('2007-09-01') EXCLUSIVE IN TABLESPACE2 LONG IN LARGETBS2 , PARTITION DATAPATITION9 STARTING FROM ('2007-09-01') INCLUSIVE ENDING AT ('2007-10-01') EXCLUSIVE IN TABLESPACE3 LONG IN LARGETBS3 , PARTITION DATAPATITION10 STARTING FROM ('2007-10-01') INCLUSIVE ENDING AT ('2007-11-01') EXCLUSIVE IN TABLESPACE1 LONG IN LARGETBS1 , PARTITION DATAPATITION11 STARTING FROM ('2007-11-01') INCLUSIVE ENDING AT ('2007-12-01') EXCLUSIVE IN TABLESPACE2 LONG IN LARGETBS2 , PARTITION DATAPATITION12 STARTING FROM ('2007-12-01') INCLUSIVE ENDING AT ('2007-12-31') EXCLUSIVE IN TABLESPACE3 LONG IN LARGETBS3) INDEX IN USERSPACE1 DB20000I SQL命令成功完成?



                這樣我們通過手工方式創建了示例分區表TEST3,用來對表數據進行分區的列是RQ,表數據將存儲在下列表空間中:TABLESPACE1,TABLESPACE2和TABLESPACE3?缺省情況下,索引將存儲在以下表空間中:USERSPACE1?此語句生成12個數據分區,每個數據分區包含1個鍵值:

            ? (RQ) >= ( ' 2007-01-01 ' ) , (RQ) < (' 2007-02-01 ' )
            ? (RQ) >= ( ' 2007-02-01 ' ) , (RQ) < (' 2007-03-01 ' )
            ? . . . . . .
            ? (RQ) >= ( ' 2007-12-01 ' ) , (RQ) <= (' 2007-12-31 ' ) 

                每個數據分區通過PARTITION命令進行了命名,名字分別DATAPARTITION1,DATAPARTITION2, . . . . . . DATAPARTITION12? 

                接下來我們對示例分區表TEST3插入數據,在DB2CLP窗口中,發出INSERT INTO命令,具體如清單14所示:

            - - 清單14 .對示例分區表TEST3插入一條記錄 

            C:\> DB2 INSERT INTO TEST3 VALUES ( 1 , '2007-01-10' , blob ( 'the first rows' ) ) DB20000I SQL命令成功完成?

                命令成功完成,把行插入示例分區表時,根據該行的鍵值以及它所處的范圍自動將其放入正確的數據分區,這樣我們數據就插入到了數據分區DATAPARTITION1中了?如果該行處于對該表定義的所有范圍之外,插入就會失敗,并且將把以下錯誤返回給應用程序,比如我們插入一條如清單15所示的記錄,RQ的值為'2006-01-10',不在'2007-01-01'和'2007-12-31'的范圍內:

            - - 清單15 .對示例分區表TEST3插入一條分區鍵范圍外的記錄 

            C:\> DB2 INSERT INTO TEST3 VALUES (1 , '2006-01-10' , blob ( 'the first rows' ) ) DB21034E 該命令被當作 SQL語句來處理,因為它不是有效的“命令行處理器”命令&#65377;在 SQL 處理期間,它返回: SQL0327N 無法將行插入表 " RHETTE.TEST3 " 中,因為它在定義的數據分區范圍之外&#65377; SQLSTATE = 22525


                此時我們對查看示例分區表中的記錄,通過在WHERE子句中指定分區鍵的值,可以能夠避免掃描不相關的數據,直接從DATAPARTITION1數據分區中得到想要的記錄,從而提高查詢處理性能,具體如清單16所示:

            - - 清單16 .查詢示例分區表TEST3 

            C:\> db2 select id,rq from test3 where rq='2007-01-10' ID RQ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 2007-01-10 1 條記錄已選擇&#65377;


                如果想在范圍之間允許存在間隔,可以使用MINVALUE和MAXVALUE指定間隔的范圍,MINVALUE表示最小的值,就是比你插入的任何值都會小的意思,MAXVALUE表示最大的值,就是比你插入的任何值都要大的意思?對示例分區表TEST3,我們可以增量兩個數據分區:
            ? 數據分區OTHERS1,范圍從MINVALUE到 ” 2007-01-01” ,不包含” 2007-01-01”;所有比” 2007-01-01 ”小的值,都會放入到此分區中?
            ? 數據分區OTHERS2,范圍從 ” 2008-01-01” 到MAXVALUE,包含” 2008-01-01”;所有比 ” 2008-01-01” 大的值,都會放入到此分區中?
            具體如清單17中藍色標記部分所示:

            - - 清單17 .手工創建示例分區表TEST3 

            C:\> db2 drop table test3 DB20000I SQL命令成功完成? C:\> db2 CREATE TABLE TEST3 ( ID INTEGER NOT NULL , RQ DATE NOT NULL , IMAGE BLOB (1 M ) NOT NULL LOGGED NOT COMPACT ) PARTITION BY RANGE (RQ NULLS LAST) (PARTITION DATAPATITION1 STARTING FROM ('2007-01-01') INCLUSIVE ENDING AT ('2007-02-01') EXCLUSIVE IN TABLESPACE1 LONG IN LARGETBS1 , PARTITION DATAPATITION2 STARTING FROM ('2007-02-01') INCLUSIVE ENDING AT ('2007-03-01') EXCLUSIVE IN TABLESPACE2 LONG IN LARGETBS2 , PARTITION DATAPATITION3 STARTING FROM ('2007-03-01') INCLUSIVE ENDING AT ('2007-04-01') EXCLUSIVE IN TABLESPACE3 LONG IN LARGETBS3 , PARTITION DATAPATITION4 STARTING FROM ('2007-04-01') INCLUSIVE ENDING AT ('2007-05-01') EXCLUSIVE IN TABLESPACE1 LONG IN LARGETBS1 , PARTITION DATAPATITION5 STARTING FROM ('2007-05-01') INCLUSIVE ENDING AT ('2007-06-01') EXCLUSIVE IN TABLESPACE2 LONG IN LARGETBS2 ,PARTITION DATAPATITION6 STARTING FROM ('2007-06-1') INCLUSIVE ENDING AT ('2007-07-1') EXCLUSIVE IN TABLESPACE3 LONG IN LARGETBS3 , PARTITION DATAPATITION7 STARTING FROM ('2007-07-01') INCLUSIVE ENDING AT ('2007-08-01') EXCLUSIVE IN TABLESPACE1 LONG IN LARGETBS1 , PARTITION DATAPATITION8 STARTING FROM ('2007-08-01') INCLUSIVE ENDING AT ('2007-09-01') EXCLUSIVE IN TABLESPACE2 LONG IN LARGETBS2 , PARTITION DATAPATITION9 STARTING FROM ('2007-09-01') INCLUSIVE ENDING AT ('2007-10-01') EXCLUSIVE IN TABLESPACE3 LONG IN LARGETBS3 , PARTITION DATAPATITION10 STARTING FROM ('2007-10-01') INCLUSIVE ENDING AT ('2007-11-01') EXCLUSIVE IN TABLESPACE1 LONG IN LARGETBS1 , PARTITION DATAPATITION11 STARTING FROM ('2007-11-01') INCLUSIVE ENDING AT ('2007-12-01') EXCLUSIVE IN TABLESPACE2 LONG IN LARGETBS2 , PARTITION DATAPATITION12 STARTING FROM ('2007-12-01') INCLUSIVE ENDING AT ('2007-12-31') EXCLUSIVE IN TABLESPACE3 LONG IN LARGETBS3 ,PARTITION OTHERS1 STARTING FROM (MINVALUE) EXCLUSIVE ENDING AT ('2007-01-01') EXCLUSIVE IN TABLESPACE1 LONG IN LARGETBS1 , PARTITION OTHERS2 STARTING FROM ('2008-01-01') INCLUSIVE ENDING AT (MAXVALUE) EXCLUSIVE IN TABLESPACE2 LONG IN LARGETBS2 ) INDEX IN USERSPACE1 DB20000I SQL命令成功完成?


                此時我們再次插入清單15中所插入的值,就可以成功了,具體如清單18所示:

            - - 清單18 .對示例分區表TEST3插入一條記錄 

            C:\> DB2 INSERT INTO TEST3 VALUES (1,'2006-01-10' , blob ( ' the first rows ' ) ) DB20000I SQL命令成功完成?



                對清單10中,把數值型的列作為表分區鍵,也可以用手工的方式進行創建,具體如清單19所示:

            - - 清單19 .創建示例分區表TEST4 

            C:\> DB2 CREATE TABLE RHETTE.TEST4 ( COL1 INTEGER NOT NULL , COL2 BIGINT NOT NULL ) PARTITION BY RANGE ( COL2 NULLS LAST ) ( PARTITION DATAPARTION1 STARTING FROM ( 1 ) INCLUSIVE ENDING AT ( 10 ) INCLUSIVE IN TABLESPACE1 , PARTITION DATAPARTITION2 STARTING FROM ( 11 ) INCLUSIVE ENDING AT ( 20 ) INCLUSIVE ) DB20000I SQL命令成功完成?

                使用手工方式創建分區表可以將多個列用作表分區鍵,比如我們在DB2CLP窗口中創建示例分區表TEST5,具體如清單20所示:

            - - 清單20 .創建示例分區表TEST5 

            C:\> DB2 CREATE TABLE TEST5 ( year INT , month INT ) PARTITION BY RANGE( year , month ) ( STARTING FROM ( 2007 , 1 ) ENDING ( 2007 , 3 ) IN TABLESPACE1 , ENDING ( 2007 , 6 ) IN TABLESPACE2 , ENDING ( 2007 , 9 ) IN TABLESPACE3 ) DB20000I SQL命令成功完成?
                命令成功完成,這樣我們就成功地創建了示例分區表TEST5,其包含3個數據分區,即2007年前3個季度,每個季度一個數據分區?需要注意的是,當將多個列用作表分區鍵時,將把這些列視為組合鍵(類似于索引中的組合鍵),其中,后面的列依賴于前面的列?指定的每個起始值或結束值(所有列一起)不能超出512個字符?此限制與 SYSCAT.DATAPARTITIONS目錄視圖中的LOWVALUE和HIGHVALUE 列大小對應?如果指定超出512個字符的起始值或結束值,就會導致錯誤SQL0636N,原因碼為9? 表分區是多列的,而不是多維的?在表分區中,使用的所有列都包含在單個維中?
            另外,還可以將生成列用作表分區鍵?接下來我們在DB2CLP窗口中,創建示例分區表TEST6,其包含 12 個數據分區的表,即每個月一個數據分區?對于任何年份,一月份的所有行都將被放到第一個數據分區中,二月份的行將被放到第二個數據分區中,依此類推,具體如清單21所示:
            - - 清單21 .創建示例分區表TEST6 

            C:\> DB2 CREATE TABLE TEST6 ( RQ date,YF int GENERATED ALWAYS AS ( month( RQ ) ) ) PARTITION BY RANGE ( YF ) (STARTING FROM 1 ENDING AT 12 EVERY 1 ) DB20000I SQL命令成功完成?



                命令成功完成,這樣我們成功創建了示例分區表TEST6,需要注意的是對于表分區鍵中使用的生成列,不能改變或刪除其表達式?不允許對表分區鍵中使用的列添加生成列表達式?對于表分區鍵中使用的列,如果嘗試添加?刪除或改變該列的生成列表達式,就會導致錯誤(SQL0270N,原因碼為52)?
            精品久久综合1区2区3区激情 | 久久久久亚洲AV无码专区桃色 | 亚洲精品无码专区久久久| 看全色黄大色大片免费久久久| 国产精品gz久久久| 亚洲中文字幕伊人久久无码| 欧美久久久久久| 伊人久久大香线蕉综合影院首页| 中文字幕日本人妻久久久免费 | 国产精品无码久久综合| 波多野结衣中文字幕久久 | 日韩亚洲欧美久久久www综合网 | 国产精品欧美久久久久无广告 | 久久久WWW成人免费毛片| 免费一级欧美大片久久网| 亚洲&#228;v永久无码精品天堂久久 | 亚洲国产另类久久久精品小说| 久久精品亚洲一区二区三区浴池| 狠狠色丁香久久综合五月| 久久美女人爽女人爽| 99久久国产亚洲综合精品| 国产高潮国产高潮久久久91 | 亚洲精品无码久久久| 久久伊人精品一区二区三区| 久久国产精品-久久精品| 亚洲一级Av无码毛片久久精品| 国产成人精品免费久久久久| 国产精品天天影视久久综合网| 囯产精品久久久久久久久蜜桃| 99久久国产综合精品五月天喷水 | 一本大道久久东京热无码AV | 青青久久精品国产免费看| 色偷偷88888欧美精品久久久| 国产精品日韩深夜福利久久| 久久综合给久久狠狠97色| 久久久久久久久66精品片| 国产亚洲色婷婷久久99精品91| 精品亚洲综合久久中文字幕| 色综合久久无码中文字幕| 久久精品国产精品亚洲精品 | 国产精久久一区二区三区|