--Hash

알고리즘

1 2 0 0 0 1    양옆 을 접음

 

2 1

0 0

+    1 0

3 1

 

 

 

 

 --creating a Partition

테이블 분할에 사용할 방식을 선택하십시오.

범위
 
범위 분할은 열 값의 범위에 준하여 행을 분할 영역에 매핑합니다. 이 분할 유형은 월 또는 회계 분기와 같이 분산될 수 있는 논리적 범위를 가진 데이터를 처리할 때 유용합니다. 데이터가 범위에 균등하게 분산될 때 성능이 가장 좋습니다.
해시
 
해시 분할은 지정된 수의 분할 영역에 데이터를 균등하게 분배하는 방식을 제공합니다. 행은 분할 키의 해시 값에 준하여 분할 영역에 매핑됩니다. 해시 분할 영역을 생성하고 사용하면 I/O 장치에 동일한 크기로 나누어진 분할 영역(분할)을 가짐으로써 가용성과 성능에 영향을 줄 수 있으므로 매우 뛰어난 데이터 배치 튜닝 방식을 얻게 됩니다.
목록
 
목록 분할을 통해 행이 분할 영역에 매핑되는 방식을 명시적으로 제어할 수 있습니다. 목록 분할은 비연속 값을 따르는 데이터 분포 모델링용으로 설계되었습니다. 목록 분할의 장점은 정렬되지 않거나 관련되지 않은 데이터 집합을 자연스럽게 그룹화하고 조직할 수 있다는 점입니다.
범위-해시
 
범위-해시 조합 분할은 범위 방식을 사용하여 데이터를 분할하고 각각의 분할 영역 내에서 해시 메소드를 사용하여 하위 분할합니다. 범위-해시 분할 영역은 범위 분할의 향상된 관리성과 해시 분할의 균등한 데이터 분배 및 병렬화 이점을 조합한 것입니다.
범위-목록
 
범위-목록 조합 분할은 범위 방식을 사용하여 데이터를 분할하고 각각의 분할 영역 내에서 목록 방식을 사용하여 하위 분할합니다. 범위-목록 분할 영역은 범위 분할의 향상된 관리성과 목록 분할의 명시적인 배치 제어를 조합한 것입니다.

 

 

--범위(range) 방식의 partion table

id 1~10만 => A T/S

10만1 ~20만 => B T/S

20만1 ~30만 => C T/S

30만1 ~     => D T/S

 

 

S SYS> create tablespace a datafile size 10M;

Tablespace created.

S SYS> create tablespace b datafile size 10M;

Tablespace created.

S SYS>  create tablespace c datafile size 10M;

Tablespace created.

S SYS> create tablespace d datafile size 10M;

Tablespace created.

 

CREATE TABLE SCOTT.PT ( ID NUMBER(10),
 DATA VARCHAR2(30),
 CONSTRAINT PT_PK PRIMARY KEY (ID) VALIDATE )
PARTITION BY RANGE(ID) (
 PARTITION PT_P1 VALUES LESS THAN (100000) TABLESPACE A,
 PARTITION PT_P2 VALUES LESS THAN (200000) TABLESPACE B,
 PARTITION PT_P3 VALUES LESS THAN (300000) TABLESPACE C,
 PARTITION PT_P4 VALUES LESS THAN (MAXVALUE) TABLESPACE D)
/

 


 

 S SYS> @tsUsage                  and name in ('A','B','C','D')

NAME                                   MB       USED
------------------------------ ---------- ----------
B                                      10      .0625
D                                      10      .0625
C                                      10      .0625
A                                      10      .0625

drop swquence pt_s

/

create sequence pt_s
/
create or replace procedure pt_i(su number,data varchar2 default 'abcedfg')as
 begin
    for i in 1..su loop
            insert into pt values(pt_s.nextval,data);
            commit;
    end loop;
 end;
/
exec pt_i(150000)
/

 

 

 S SYS> @tsUsage

NAME                                   MB       USED
------------------------------ ---------- ----------
B                                      10          2
D                                      10      .0625
C                                      10      .0625
A                                      10          3

 

 

 

 

 

--RnageList

 

 CREATE TABLE SCOTT.PT2 ( EMPNO NUMBER(10),
 ENAME VARCHAR2(20),
 SAL NUMBER(6),
 DEPTNO NUMBER(2),
 CONSTRAINT PT2_PK PRIMARY KEY (EMPNO) VALIDATE ,
 CONSTRAINT PT2_FK FOREIGN KEY (DEPTNO) REFERENCES SCOTT.DEPT (DEPTNO) VALIDATE )
TABLESPACE USERS PARTITION BY RANGE (SAL,DEPTNO) SUBPARTITION BY LIST (DEPTNO)
SUBPARTITION TEMPLATE (SUBPARTITION S1 VALUES (10) ,
                        SUBPARTITION S2 VALUES (20) ,
                        SUBPARTITION S3 VALUES (30) ,
                        SUBPARTITION S4 VALUES (DEFAULT))
(PARTITION PT2_P1 VALUES LESS THAN (999,MAXVALUE) TABLESPACE USERS,
 PARTITION PT2_P2 VALUES LESS THAN (1999,MAXVALUE) TABLESPACE USERS,
 PARTITION PT2_P3 VALUES LESS THAN (2999,MAXVALUE) TABLESPACE USERS,
 PARTITION PT2_P4 VALUES LESS THAN (3999,MAXVALUE),
 PARTITION PT2_P5 VALUES LESS THAN (MAXVALUE,MAXVALUE) TABLESPACE USERS)
/

 sav ptRangeList

 

 
Partitions
 
 
 
 
Partitioning Description
 
 
Partitioning Method Range-List
Partitioning Columns SAL, DEPTNO
Number of Partitions 5
Subpartitioning Column DEPTNO
Number of Subpartitions 20
 
 
Partition Definitions
 
 
Partition Name High Value - SAL (NUMBER) High Value - DEPTNO (NUMBER) Subpartition Default Tablespace Subpartitions
PT2_P1 999 MAXVALUE USERS 4
PT2_P2 1999 MAXVALUE USERS 4
PT2_P3 2999 MAXVALUE USERS 4
PT2_P4 3999 MAXVALUE USERS 4
PT2_P5 MAXVALUE MAXVALUE USERS 4
 
Subpartition Definitions
 
 
Partition Name Subpartition Name Values - DEPTNO (NUMBER) Tablespace
PT2_P1 PT2_P1_S1 10 USERS

PT2_P1_S2 20 USERS

PT2_P1_S3 30 USERS

PT2_P1_S4 DEFAULT USERS
PT2_P2 PT2_P2_S1 10 USERS

PT2_P2_S2 20 USERS

PT2_P2_S3 30 USERS

PT2_P2_S4 DEFAULT USERS
PT2_P3 PT2_P3_S1 10 USERS

PT2_P3_S2 20 USERS

PT2_P3_S3 30 USERS

PT2_P3_S4 DEFAULT USERS
PT2_P4 PT2_P4_S1 10 USERS

PT2_P4_S2 20 USERS

PT2_P4_S3 30 USERS

PT2_P4_S4 DEFAULT USERS
PT2_P5 PT2_P5_S1 10 USERS

PT2_P5_S2 20 USERS

PT2_P5_S3 30 USERS

PT2_P5_S4 DEFAULT USERS

 

  

 

 col segment_name form a15;
col partition_name form a15;
select segment_name,partition_name, tablespace_name, bytes/1024/1024 MB
from dba_segments
where segment_name like upper('%&SegmentName%')
order by MB desc
/

 

 S SYS> @ptSegment
Enter value for segmentname: pt2

SEGMENT_NAME    PARTITION_NAME  TABLESPACE_NAME                        MB
--------------- --------------- ------------------------------ ----------
I_METASCRIPT2$                  SYSTEM                              .0625
PT2_PK                          USERS                               .0625
PT2             PT2_P1_S2       USERS                               .0625
PT2             PT2_P1_S3       USERS                               .0625
PT2             PT2_P1_S4       USERS                               .0625
PT2             PT2_P2_S1       USERS                               .0625
PT2             PT2_P2_S2       USERS                               .0625
PT2             PT2_P2_S3       USERS                               .0625
PT2             PT2_P2_S4       USERS                               .0625
PT2             PT2_P3_S1       USERS                               .0625
PT2             PT2_P3_S2       USERS                               .0625
PT2             PT2_P3_S3       USERS                               .0625
PT2             PT2_P3_S4       USERS                               .0625
PT2             PT2_P4_S1       USERS                               .0625
PT2             PT2_P4_S2       USERS                               .0625
PT2             PT2_P4_S3       USERS                               .0625
PT2             PT2_P4_S4       USERS                               .0625
PT2             PT2_P5_S1       USERS                               .0625
PT2             PT2_P5_S2       USERS                               .0625
PT2             PT2_P5_S3       USERS                               .0625
PT2             PT2_P5_S4       USERS                               .0625
PT2             PT2_P1_S1       USERS                               .0625

22 rows selected.

 

 

 

 

 

--IOT

 

CREATE TABLE SCOTT.COUNTRY ( COUNTRY_ID CHAR(2),
            COURNTRY_NAME VARCHAR2(40),
            CONSTRAINT COUNTRY_C_ID_PK PRIMARY KEY (COUNTRY_ID) VALIDATE )
ORGANIZATION INDEX TABLESPACE EXAMPLE
PCTTHRESHOLD 20 OVERFLOW TABLESPACE USERS
/

 

 

S SYS> select object_name, object_type from dba_objects where object_name='COUNTRY';

 

OBJECT_NAME      OBJECT_TYPE
-----------------------------------
COUNTRY            TABLE


S SYS> select segment_name,segment_type from dba_segments
            where segment_name like '%COUNTRY%' and owner='SCOTT'

SEGMENT_NAME    SEGMENT_TYPE
--------------- ------------------
COUNTRY_C_ID_PK INDEX

 

object 로 보면 테이블인데, segment 로 보면 index

 

 

 --Index Cluster (제일 기본적인 원형. 옵션 생략 )

S HR> create cluster empdept(deptno number(2));

Cluster created.

 S HR> create table empx(empno number(4), dname varchar(20), deptno number(2))
  2  cluster empdept(deptno);

Table created.

S HR> create table deptx(deptno number(2), dname varchar2(20))
  2  cluster empdept(deptno);

Table created.

+ Recent posts