ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 使用分区技术小结

使用分区技术小结

原创 Linux操作系统 作者:gvora 时间:2009-01-13 22:51:55 0 删除 编辑

SQL> show user

USER 为 "SYS"

SQL> create tablespace dept1

  2  datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE\dept1.dbf' size 2M

  3  extent management local uniform. size 256k;

 

表空间已创建。

 

SQL> create tablespace dept2

  2  datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE\dept2.dbf' size 2M

  3  extent management local uniform. size 256k;

 

表空间已创建。

 

SQL> create tablespace dept3

  2  datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE\dept3.dbf' size 2M

  3  extent management local uniform. size 256k;

 

表空间已创建。

 

SQL> select tablespace_name,extent_management,allocation_type

  2  from dba_tablespaces;

 

TABLESPACE_NAME                EXTENT_MAN ALLOCATIO

------------------------------ ---------- ---------

SYSTEM                         LOCAL      SYSTEM

UNDOTBS1                       LOCAL      SYSTEM

SYSAUX                         LOCAL      SYSTEM

TEMP                           LOCAL      UNIFORM

USERS                          LOCAL      SYSTEM

EXAMPLE                        LOCAL      SYSTEM

PERFSTAT                       LOCAL      SYSTEM

MY                             LOCAL      UNIFORM

DEPT1                          LOCAL      UNIFORM

DEPT2                          LOCAL      UNIFORM

DEPT3                          LOCAL      UNIFORM

 

SQL> conn scott/tiger

已连接。

SQL> create table dept_pt

  2  (deptno number(2),

  3   deptname varchar2(30))

  4   partition by range(deptno)

  5  (partition d1 values less than(10) tablespace dept1,

  6   partition d2 values less than(20) tablespace dept2,

  7   partition d3 values less than(maxvalue) tablespace dept3);

 

表已创建。

 

SQL> insert into dept_pt values(1,'ADMIN');

 

已创建 1 行。

 

SQL> insert into dept_pt values(7,'MGMT');

 

已创建 1 行。

 

SQL> insert into dept_pt values(10,'MANUF');

 

已创建 1 行。

 

SQL> insert into dept_pt values(15,'ACCT');

 

已创建 1 行。

 

SQL> insert into dept_pt values(22,'SALES');

 

已创建 1 行。

 

SQL> commit;

 

提交完成。

 

当从dept_pt表中查询时,这个表仍可以被看成一个单独的表:

SQL> select * from dept_pt;

 

    DEPTNO DEPTNAME

---------- ------------------------------

         1 ADMIN

         7 MGMT

        10 MANUF

        15 ACCT

        22 SALES

 

接下来分别查询每个分区,只从一个分区中选取数据并且只访问一个分区

SQL> select * from dept_pt partition(d1);

 

    DEPTNO DEPTNAME

---------- ------------------------------

         1 ADMIN

         7 MGMT

 

SQL> select * from dept_pt partition(d2);

 

    DEPTNO DEPTNAME

---------- ------------------------------

        10 MANUF

        15 ACCT

 

SQL> select * from dept_pt partition(d3);

 

    DEPTNO DEPTNAME

---------- ------------------------------

        22 SALES

 

SQL> select * from dept_pt partition where deptno=22;

 

    DEPTNO DEPTNAME

---------- ------------------------------

        22 SALES

 

看一下上面一条语句的执行计划:

SQL> explain plan for select * from dept_pt partition where deptno=22;

 

已解释。

 

SQL> select * from table(dbms_xplan.display);

 

PLAN_TABLE_OUTPUT

--------------------------------------------------------------------------------

 

Plan hash value: 1009190036

 

--------------------------------------------------------------------------------

 

------------------

 

| Id  | Operation              | Name    | Rows  | Bytes | Cost (%CPU)| Time

 | Pstart| Pstop |

 

--------------------------------------------------------------------------------

 

------------------

 

 

PLAN_TABLE_OUTPUT

--------------------------------------------------------------------------------

 

|   0 | SELECT STATEMENT       |         |     1 |    30 |     9   (0)| 00:00:01

 

 |       |       |

 

|   1 |  PARTITION RANGE SINGLE|         |     1 |    30 |     9   (0)| 00:00:01

 

 |     3 |     3 |

 

|*  2 |   TABLE ACCESS FULL    | DEPT_PT |     1 |    30 |     9   (0)| 00:00:01

 

 |     3 |     3 |

 

--------------------------------------------------------------------------------

 

------------------

 

PLAN_TABLE_OUTPUT

--------------------------------------------------------------------------------

 

 

 

Predicate Information (identified by operation id):

---------------------------------------------------

 

   2 - filter("DEPTNO"=22)

 

Note

-----

   - dynamic sampling used for this statement

 

已选择18行。

 

注意:为了最大化对一个较大表的磁盘I/O,应该把表分割在多个分区上,这些分区应该放置在不同的物理磁盘上。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/15203236/viewspace-538099/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-12-30

  • 博文量
    62
  • 访问量
    303777