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

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

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

    隨筆-314  評論-209  文章-0  trackbacks-0
    什么時候使用分區:
      1、 大數據量的表,比如大于2GB。一方面2GB文件對于32位os是一個上限,另外備份時間長。
      2、 包括歷史數據的表,比如最新的數據放入到最新的分區中。典型的例子:歷史表,只有當前月份的數據可以被修改,而其他月份只能read-on
    ly
      ORACLE只支持以下分區:tables, indexes on tables, materialized views, and indexes on materialized views
      分區對SQL和DML是透明的(應用程序不必知道已經作了分區),但是DDL可以對不同的分區進行管理。
      不同的分區之間必須有相同的邏輯屬性,比如共同的表名,列名,數據類型,約束;
      但是可以有不同的物理屬性,比如pctfree, pctused, and tablespaces.
      分區獨立性:即使某些分區不可用,其他分區仍然可用。
      最多可以分成64000個分區,但是具有LONG or LONG RAW列的表不可以,但是有CLOB or BLOB列的表可以。
      可以不用to_date函數,比如:
      alter session set nls_date_format='mm/dd/yyyy';
      CREATE TABLE sales_range
      (salesman_id NUMBER(5),
      salesman_name VARCHAR2(30),
      sales_amount NUMBER(10),
      sales_date DATE)
      PARTITION BY RANGE(sales_date)
      (
      PARTITION sales_jan2000 VALUES LESS THAN('02/01/2000'),
      PARTITION sales_feb2000 VALUES LESS THAN('03/01/2000'),
      PARTITION sales_mar2000 VALUES LESS THAN('04/01/2000'),
      PARTITION sales_apr2000 VALUES LESS THAN('05/01/2000')
      );
      Partition Key:最多16個columns,可以是nullable的
      非分區的表可以有分區或者非分區的索引;
      分區表可以有分區或者非分區的索引;
      Partitioning 方法:
      Range Partitioning
      List Partitioning
      Hash Partitioning
      Composite Partitioning
      Composite Partitioning:組合,以及 range-hash and range-list composite partitioning
      Range Partitioning:
      每個分區都有VALUES LESS THAN子句,表示這個分區小于(<)某個上限,而大于等于(>=)前一個分區的VALUES LESS THAN值。
      MAXVALUE定義最高的分區,他表示一個虛擬的無限大的值。這個分區包括null值。
      CREATE TABLE sales_range
      (salesman_id NUMBER(5),
      salesman_name VARCHAR2(30),
      sales_amount NUMBER(10),
      sales_date DATE)
      PARTITION BY RANGE(sales_date)
      (
      PARTITION sales_jan2000 VALUES LESS THAN(TO_DATE('01/02/2000','DD/MM/YYYY')),
      PARTITION sales_feb2000 VALUES LESS THAN(TO_DATE('01/03/2000','DD/MM/YYYY')),
      PARTITION sales_mar2000 VALUES LESS THAN(TO_DATE('01/04/2000','DD/MM/YYYY')),
      PARTITION sales_apr2000 VALUES LESS THAN(TO_DATE('01/05/2000','DD/MM/YYYY')),
      PARTITION sales_2000 VALUES LESS THAN(MAXVALUE)
      );
      插入數據:
      Insert into sales_range values(1,2,3,to_date('21-04-2000','DD-MM-YYYY'));
      Insert into sales_range values(1,2,3,sysdate);
      選擇數據:
      select * from sales_range;
      select * from sales_range partition(sales_apr2000);
      select * from sales_range partition(sales_mar2000);
      select * from sales_range partition(sales_2000);
      按照多個列分區:
      CREATE TABLE sales_range1
      (salesman_id NUMBER(5),
      salesman_name VARCHAR2(30),
      sales_amount NUMBER(10),
      sales_date DATE)
      PARTITION BY RANGE(sales_date, sales_amount)
      (
      PARTITION sales_jan2000 VALUES LESS THAN(TO_DATE('01/02/2000','DD/MM/YYYY'),1000),
      PARTITION sales_feb2000 VALUES LESS THAN(TO_DATE('01/03/2000','DD/MM/YYYY'),2000),
      PARTITION sales_mar2000 VALUES LESS THAN(TO_DATE('01/04/2000','DD/MM/YYYY'),3000),
      PARTITION sales_apr2000 VALUES LESS THAN(TO_DATE('01/05/2000','DD/MM/YYYY'),4000),
      PARTITION sales_2000 VALUES LESS THAN(MAXVALUE, MAXVALUE)
      )
    Insert into sales_range1 values(1,2,500, TO_DATE('21/01/2000','DD/MM/YYYY'));
      Insert into sales_range1 values(2,3,1500, sysdate);
      如果多個分區列的值沖突,則按照從左到右的優先級。
      List Partitioning:
      可以組織無序的,或者沒有關系的數據在相同的分區。
      不支持多列的(multicolumn) partition keys,只能是一個列。
      DEFAULT表示不滿足條件的都放在這個分區。
      CREATE TABLE sales_list
      (salesman_id NUMBER(5),
      salesman_name VARCHAR2(30),
      sales_state VARCHAR2(20),
      sales_amount NUMBER(10),
      sales_date DATE)
      PARTITION BY LIST(sales_state)
      (
      PARTITION sales_west VALUES('California', 'Hawaii'),
      PARTITION sales_east VALUES ('New York', 'Virginia', 'Florida'),
      PARTITION sales_central VALUES('Texas', 'Illinois'),
      PARTITION sales_other VALUES(DEFAULT)
      );
      Hash Partitioning:
      不可以作splitting, dropping or merging操作。但是可以added and coalesced.
      當我們無法判斷有多少數據映射或者怎樣映射到各個分區時,可以使用這種方法。分區數據最好是2的冪,這樣可以平均分配數據。
      CREATE TABLE sales_hash1
      (salesman_id NUMBER(5),
      salesman_name VARCHAR2(30),
      sales_amount NUMBER(10),
      week_no NUMBER(2))
      PARTITION BY HASH(salesman_id)
      PARTITIONS 4
      STORE IN (users, TOOLS, TEST, TABLESPACE1);  --表空間
      CREATE TABLE sales_hash
      (salesman_id NUMBER(5),
      salesman_name VARCHAR2(30),
      sales_amount NUMBER(10),
      week_no NUMBER(2))
      PARTITION BY HASH(salesman_id)
      (
      PARTITION p1 tablespace users,
      PARTITION p2 tablespace system
      );
      Composite Partitioning:
      先按照range分區,每個子分區又按照list or hash分區。
      CREATE TABLE sales_composite
      (salesman_id NUMBER(5),
      salesman_name VARCHAR2(30),
      sales_amount NUMBER(10),
      sales_date DATE)
      PARTITION BY RANGE(sales_date)
      SUBPARTITION BY HASH(salesman_id)  --子分區
      SUBPARTITION TEMPLATE(
      SUBPARTITION sp1 TABLESPACE data1,
      SUBPARTITION sp2 TABLESPACE data2,
      SUBPARTITION sp3 TABLESPACE data3,
      SUBPARTITION sp4 TABLESPACE data4)
      (PARTITION sales_jan2000 VALUES LESS THAN(TO_DATE('02/01/2000','DD/MM/YYYY'))
      PARTITION sales_feb2000 VALUES LESS THAN(TO_DATE('03/01/2000','DD/MM/YYYY'))
      PARTITION sales_mar2000 VALUES LESS THAN(TO_DATE('04/01/2000','DD/MM/YYYY'))
      PARTITION sales_apr2000 VALUES LESS THAN(TO_DATE('05/01/2000','DD/MM/YYYY'))
      PARTITION sales_may2000 VALUES LESS THAN(TO_DATE('06/01/2000','DD/MM/YYYY')));
      使用TEMPLATE,oracle會這樣命名子分區:分區_子分區,比如sales_jan2000_sp1表示將數據放在data1表空間
      Range-list:
      CREATE TABLE bimonthly_regional_sales
      (deptno NUMBER,
      item_no VARCHAR2(20),
      txn_date DATE,
      txn_amount NUMBER,
      state VARCHAR2(2))
      PARTITION BY RANGE (txn_date)
      SUBPARTITION BY LIST (state)
      SUBPARTITION TEMPLATE(
      SUBPARTITION east VALUES('NY', 'VA', 'FL') TABLESPACE system,
      SUBPARTITION west VALUES('CA', 'OR', 'HI') TABLESPACE users,
      SUBPARTITION central VALUES('IL', 'TX', 'MO') TABLESPACE tools)
      ( PARTITION janfeb_2000 VALUES LESS THAN (TO_DATE('1-03-2000','DD-Mm-YYYY')), PARTITION marapr_2000 VALUES LESS THAN (TO_DATE('1-05-2000','DD-Mm-YYYY')), PARTITION mayjun_2000 VALUES LESS THAN (TO_DATE('1-07-2000','DD-Mm-YYYY')) )
    posted on 2010-12-13 15:19 xzc 閱讀(298) 評論(0)  編輯  收藏 所屬分類: Oracle
    主站蜘蛛池模板: 亚洲男同帅GAY片在线观看| 2015日韩永久免费视频播放 | 国产传媒在线观看视频免费观看 | 无码国产精品一区二区免费式直播| 亚洲一区AV无码少妇电影| 亚洲熟妇少妇任你躁在线观看| 国产精品亚洲专区一区| a毛片免费全部播放完整成| 91精品免费高清在线| 午夜免费福利网站| 亚洲综合AV在线在线播放| 亚洲经典在线中文字幕| 亚洲av无码一区二区三区人妖| igao激情在线视频免费| 久久免费看黄a级毛片| 日韩免费无砖专区2020狼| 夜夜春亚洲嫩草影院| 亚洲av无码片区一区二区三区 | 亚洲乱码日产精品BD在线观看| 美女裸免费观看网站| 无码精品国产一区二区三区免费| 四虎国产精品免费久久| 中文字幕亚洲一区二区va在线| 亚洲精品视频在线观看免费 | 久久亚洲精品国产亚洲老地址| 黄视频在线观看免费| 欧洲乱码伦视频免费| 激情综合色五月丁香六月亚洲| 精品久久久久久亚洲精品| 男女一边桶一边摸一边脱视频免费| 57PAO成人国产永久免费视频| 久久久久亚洲AV无码专区桃色| 亚洲一级毛片免观看| 成人A毛片免费观看网站| 成人免费无码大片a毛片| 人人狠狠综合久久亚洲88| 性色av极品无码专区亚洲| 8x8×在线永久免费视频| 亚洲日韩精品无码专区网站| 亚洲成人网在线观看| 99精品视频在线观看免费|