<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    本站不再更新,歡迎光臨 java開發(fā)技術(shù)網(wǎng)
    隨筆-230  評論-230  文章-8  trackbacks-0
    在大量業(yè)務(wù)數(shù)據(jù)處理的項目中,可以考慮使用分區(qū)表來提高應(yīng)用系統(tǒng)的性能并方便數(shù)據(jù)管理,本文詳細介紹了分區(qū)表的使用。

      在大型的企業(yè)應(yīng)用或企業(yè)級的數(shù)據(jù)庫應(yīng)用中,要處理的數(shù)據(jù)量通常可以達到幾十到幾百GB,有的甚至可以到TB級。雖然存儲介質(zhì)和數(shù)據(jù)處理技術(shù)的發(fā)展也很快,但是仍然不能滿足用戶的需求,為了使用戶的大量的數(shù)據(jù)在讀寫操作和查詢中速度更快,Oracle提供了對表和索引進行分區(qū)的技術(shù),以改善大型應(yīng)用系統(tǒng)的性能。

      使用分區(qū)的優(yōu)點:

      ·增強可用性:如果表的某個分區(qū)出現(xiàn)故障,表在其他分區(qū)的數(shù)據(jù)仍然可用;

      ·維護方便:如果表的某個分區(qū)出現(xiàn)故障,需要修復(fù)數(shù)據(jù),只修復(fù)該分區(qū)即可;

      ·均衡I/O:可以把不同的分區(qū)映射到磁盤以平衡I/O,改善整個系統(tǒng)性能;

      ·改善查詢性能:對分區(qū)對象的查詢可以僅搜索自己關(guān)心的分區(qū),提高檢索速度。

      Oracle數(shù)據(jù)庫提供對表或索引的分區(qū)方法有三種:

      ·范圍分區(qū)

      ·Hash分區(qū)(散列分區(qū))

      ·復(fù)合分區(qū)

      下面將以實例的方式分別對這三種分區(qū)方法來說明分區(qū)表的使用。為了測試方便,我們先建三個表空間。

    create tablespace dinya_space01
    datafile ’/test/demo/oracle/demodata/dinya01.dnf’ size 50M
    create tablespace dinya_space01
    datafile ’/test/demo/oracle/demodata/dinya02.dnf’ size 50M
    create tablespace dinya_space01
    datafile ’/test/demo/oracle/demodata/dinya03.dnf’ size 50M

      1.1. 分區(qū)表的創(chuàng)建

      1.1.1. 范圍分區(qū)

      范圍分區(qū)就是對數(shù)據(jù)表中的某個值的范圍進行分區(qū),根據(jù)某個值的范圍,決定將該數(shù)據(jù)存儲在哪個分區(qū)上。如根據(jù)序號分區(qū),根據(jù)業(yè)務(wù)記錄的創(chuàng)建日期進行分區(qū)等。

      需求描述:有一個物料交易表,表名:material_transactions。該表將來可能有千萬級的數(shù)據(jù)記錄數(shù)。要求在建該表的時候使用分區(qū)表。這時候我們可以使用序號分區(qū)三個區(qū),每個區(qū)中預(yù)計存儲三千萬的數(shù)據(jù),也可以使用日期分區(qū),如每五年的數(shù)據(jù)存儲在一個分區(qū)上。

      根據(jù)交易記錄的序號分區(qū)建表:

    SQL> create table dinya_test
    2 (
    3 transaction_id number primary key,
    4 item_id number(8) not null,
    5 item_description varchar2(300),
    6 transaction_date date not null
    7 )
    8 partition by range (transaction_id)
    9 (
    10 partition part_01 values less than(30000000) tablespace dinya_space01,
    11 partition part_02 values less than(60000000) tablespace dinya_space02,
    12 partition part_03 values less than(maxvalue) tablespace dinya_space03
    13 );
    Table created.

       建表成功,根據(jù)交易的序號,交易ID在三千萬以下的記錄將存儲在第一個表空間dinya_space01中,分區(qū)名為:par_01,在三千萬到六千萬之間的記錄存儲在第二個表空間:

      dinya_space02中,分區(qū)名為:par_02,而交易ID在六千萬以上的記錄存儲在第三個表空間dinya_space03中,分區(qū)名為par_03.

      根據(jù)交易日期分區(qū)建表:

    SQL> create table dinya_test
    2 (
    3 transaction_id number primary key,
    4 item_id number(8) not null,

    5 item_description varchar2(300),
    6 transaction_date date not null
    7 )
    8 partition by range (transaction_date)
    9 (
    10 partition part_01 values less than(to_date(’2006-01-01’,’yyyy-mm-dd’))
    tablespace dinya_space01,
    11 partition part_02 values less than(to_date(’2010-01-01’,’yyyy-mm-dd’))
    tablespace dinya_space02,
    12 partition part_03 values less than(maxvalue) tablespace dinya_space03
    13 );
    Table created.

      這樣我們就分別建了以交易序號和交易日期來分區(qū)的分區(qū)表。每次插入數(shù)據(jù)的時候,系統(tǒng)將根據(jù)指定的字段的值來自動將記錄存儲到制定的分區(qū)(表空間)中。

      當然,我們還可以根據(jù)需求,使用兩個字段的范圍分布來分區(qū),如partition by range ( transaction_id ,transaction_date), 分區(qū)條件中的值也做相應(yīng)的改變,請讀者自行測試。

      1.1.2. Hash分區(qū)(散列分區(qū))

      散列分區(qū)為通過指定分區(qū)編號來均勻分布數(shù)據(jù)的一種分區(qū)類型,因為通過在I/O設(shè)備上進行散列分區(qū),使得這些分區(qū)大小一致。如將物料交易表的數(shù)據(jù)根據(jù)交易ID散列地存放在指定的三個表空間中:

    SQL> create table dinya_test
    2 (
    3 transaction_id number primary key,
    4 item_id number(8) not null,
    5 item_description varchar2(300),
    6 transaction_date date
    7 )
    8 partition by hash(transaction_id)
    9 (
    10 partition part_01 tablespace dinya_space01,
    11 partition part_02 tablespace dinya_space02,
    12 partition part_03 tablespace dinya_space03
    13 );
    Table created.

      建表成功,此時插入數(shù)據(jù),系統(tǒng)將按transaction_id將記錄散列地插入三個分區(qū)中,這里也就是三個不同的表空間中。

      1.1.3. 復(fù)合分區(qū)

      有時候我們需要根據(jù)范圍分區(qū)后,每個分區(qū)內(nèi)的數(shù)據(jù)再散列地分布在幾個表空間中,這樣我們就要使用復(fù)合分區(qū)。復(fù)合分區(qū)是先使用范圍分區(qū),然后在每個分區(qū)內(nèi)再使用散列分區(qū)的一種分區(qū)方法,如將物料交易的記錄按時間分區(qū),然后每個分區(qū)中的數(shù)據(jù)分三個子分區(qū),將數(shù)據(jù)散列地存儲在三個指定的表空間中:

    SQL> create table dinya_test
    2 (
    3 transaction_id number primary key,
    4 item_id number(8) not null,
    5 item_description varchar2(300),
    6 transaction_date date
    7 )
    8 partition by range(transaction_date)subpartition by hash(transaction_id)
    9 subpartitions 3 store in (dinya_space01,dinya_space02,dinya_space03)
    10 (
    11 partition part_01 values less than(to_date(’2006-01-01’,’yyyy-mm-dd’)),
    12 partition part_02 values less than(to_date(’2010-01-01’,’yyyy-mm-dd’)),
    13 partition part_03 values less than(maxvalue)
    14 );
    Table created.

      該例中,先是根據(jù)交易日期進行范圍分區(qū),然后根據(jù)交易的ID將記錄散列地存儲在三個表空間中
    posted on 2008-07-15 17:03 有貓相伴的日子 閱讀(380) 評論(2)  編輯  收藏 所屬分類: pl/sql

    評論:
    # re: 分區(qū)表例子[未登錄] 2008-08-28 17:59 | x
    本站不再更新,歡迎光臨 java開發(fā)技術(shù)網(wǎng)
    主站蜘蛛池模板: 2022国内精品免费福利视频 | 亚洲色少妇熟女11p| 免费人成视频在线观看网站| 国产精品亚洲mnbav网站 | 久久精品国产精品亚洲精品| 成人免费观看男女羞羞视频| 免费jlzzjlzz在线播放视频| 美女裸免费观看网站| 亚洲精品偷拍视频免费观看| 一级做a爰片久久免费| 亚洲欧洲精品无码AV| 热99RE久久精品这里都是精品免费| 国产亚洲综合成人91精品| 日本不卡免费新一区二区三区 | 午夜免费不卡毛片完整版| 亚洲精品av无码喷奶水糖心| 国产女高清在线看免费观看| 黄色毛片免费在线观看| 国产午夜亚洲精品国产成人小说| a级午夜毛片免费一区二区| 久久亚洲国产精品成人AV秋霞| 999久久久免费精品国产| 亚洲精品GV天堂无码男同| 国产成人精品日本亚洲专区| 丁香花在线观看免费观看图片| 亚洲人成在线影院| 国产精品免费观看久久| 五月天婷婷免费视频| 老色鬼久久亚洲AV综合| 成人毛片免费观看视频大全| 男女作爱免费网站| 亚洲爱情岛论坛永久| 免费被黄网站在观看| 高清永久免费观看| 亚洲午夜理论片在线观看| 中文亚洲成a人片在线观看| 24小时日本韩国高清免费| 老司机福利在线免费观看| 中文字幕亚洲第一在线| 日韩a级毛片免费观看| 日本不卡免费新一区二区三区 |