>  기사  >  데이터 베이스  >  Mysql 파티션과 Oracle 10 파티션의 차이점에 대한 자세한 설명

Mysql 파티션과 Oracle 10 파티션의 차이점에 대한 자세한 설명

黄舟
黄舟원래의
2017-03-28 13:41:351524검색

MySQL 일반적으로 사용되는 파티션은 range, list, hash, key입니다. 일반적으로 사용되는 Oracle10g 파티션은 range(범위 파티션), list(리스트 파티션), hash(해시 파티션), range-hash입니다. (범위-해시 파티션), 범위-목록(목록-복합 파티션). 다음은 본 글을 통해 Oracle10 파티션과 Mysql 파티션의 차이점을 자세히 소개한 것이다.

일반적으로 사용되는 Oracle10g 파티션은 range(범위 파티션), list(리스트 파티션), hash이다. (해시 파티션), range -hash (범위-해시 파티션), range-list (목록-복합 파티션).

범위 파티셔닝: 범위 파티셔닝은 다양한 용도로 사용되는 테이블 파티셔닝 방법으로, 컬럼 값의 범위를 파티셔닝 조건으로 사용하고, 컬럼 값이 위치한 범위 파티션에 레코드를 저장합니다. .

시간에 따라 구분하면 2010년 1월의 데이터는 a파티션에, 2월의 데이터는 b파티션에 배치됩니다. 생성 시 기준 컬럼과 범위 값을 지정해야 합니다. 분할.

시간별로 파티셔닝할 때 일부 레코드의 범위를 일시적으로 예측할 수 없는 경우 maxvalue 파티션을 생성하면 지정된 범위 내에 없는 모든 레코드는 maxvalue가 있는 파티션에 저장됩니다. 예:

createtable pdba (id number, time date) partition by range (time)
(
partitionp1 values less than (to_date('2010-10-1', 'yyyy-mm-dd')),
partitionp2 values less than (to_date('2010-11-1', 'yyyy-mm-dd')),
partitionp3 values less than (to_date('2010-12-1', 'yyyy-mm-dd')),
partitionp4 values less than (maxvalue)
)

해시 파티션:

효과적으로 범위로 나눌 수 없는 테이블의 경우 해시 파티셔닝을 사용할 수 있으며 이는 여전히 성능 향상에 도움이 됩니다. 해시 파티셔닝은 테이블의 데이터를 사용자가 지정한 여러 파티션에 균등하게 배포합니다. 열이 있는 파티션은 파티션 열의 해시 값을 기반으로 자동으로 할당되므로 어떤 레코드가 배치될지 제어하거나 알 수 없습니다. 어떤 파티션인지, 해시 파티셔닝은 여러 종속 열을 지원할 수도 있습니다. 예:

createtable test
(
transaction_idnumber primary key,
item_idnumber(8) not null
)
partitionby hash(transaction_id)
(
partitionpart_01 tablespace tablespace01,
partitionpart_02 tablespace tablespace02,
partitionpart_03 tablespace tablespace03
);

여기에서는 각 파티션의 테이블 공간을 지정합니다.

리스트 파티션:

리스트 파티션도 컬럼의 값을 지정해야 하며, 해당 파티션의 값은 명확하게 지정해야 하며, 파티션 컬럼은 하나만 있을 수 있습니다. 범위나 해시와 같을 수 없습니다. 파티셔닝은 여러 열을 동시에 파티션 종속 열로 지정하지만 단일 파티션에 해당하는 값은 여러 개가 될 수 있습니다.

파티셔닝 시 파티션 컬럼의 가능한 값을 확인해야 합니다. 삽입된 컬럼의 값이 파티션 범위를 벗어나면 삽입/업데이트가 실패하게 됩니다. 일반적으로 목록 파티셔닝을 사용하는 것이 좋습니다. 범위 파티션의 maxvalue 파티션과 유사하게 지정된 범위 내에 있지 않은 레코드를 저장하려면 기본 파티션을 만듭니다.

도시 코드와 같은 특정 필드를 기준으로 분할할 때 기본값을 지정하고 모든 비분할 규칙 데이터를 이 기본 파티션에 넣을 수 있습니다. 예:

createtable custaddr
(
idvarchar2(15 byte) not null,
areacodevarchar2(4 byte)
)
partitionby list (areacode)
(partition t_list025 values ('025'),
partitiont_list372 values ('372') ,
partitiont_list510 values ('510'),
partitionp_other values (default)
)

결합 파티셔닝:

특정 열에 따라 파티셔닝한 후에도 테이블이 여전히 큰 경우 또는 다른 요구 사항에 따라 파티션 내에 하위 파티션을 생성하는 방식, 즉 파티션을 결합하여 파티션을 세분화할 수도 있습니다.

10g에는 범위-해시와 범위-목록의 두 가지 결합 파티션이 있습니다. 순서에 주의하세요. 루트 파티션은 범위 파티션만 될 수 있으며, 하위 파티션은 해시 파티션이나 리스트 파티션일 수 있습니다.

예:

createtable test
(
transaction_idnumber primary key,
transaction_datedate
)
partitionby range(transaction_date) subpartition by hash(transaction_id)
subpartitions3 store in (tablespace01,tablespace02,tablespace03)
(
partitionpart_01 values less than(to_date('2009-01-01','yyyy-mm-dd')),
partitionpart_02 values less than(to_date('2010-01-01','yyyy-mm-dd')),
partitionpart_03 values less than(maxvalue)
);
createtable emp_sub_template (deptno number, empname varchar(32), grade number)
partitionby range(deptno) subpartition by hash(empname)
subpartitiontemplate
(subpartitiona tablespace ts1,
subpartitionb tablespace ts2,
subpartitionc tablespace ts3,
subpartitiond tablespace ts4
)
(partitionp1 values less than (1000),
partitionp2 values less than (2000),
partitionp3 values less than (maxvalue)
);
createtable quarterly_regional_sales
(deptnonumber, item_no varchar2(20),
txn_datedate, txn_amount number, state varchar2(2))
tablespacets4
partitionby range (txn_date)
subpartitionby list (state)
(partitionq1_1999 values less than (to_date('1-apr-1999','dd-mon-yyyy'))
(subpartitionq1_1999_northwest values ('or', 'wa'),
subpartitionq1_1999_southwest values ('az', 'ut', 'nm'),
subpartitionq1_1999_northeast values ('ny', 'vm', 'nj'),
subpartitionq1_1999_southeast values ('fl', 'ga'),
subpartitionq1_1999_northcentral values ('sd', 'wi'),
subpartitionq1_1999_southcentral values ('ok', 'tx')
),
partitionq2_1999 values less than ( to_date('1-jul-1999','dd-mon-yyyy'))
(subpartitionq2_1999_northwest values ('or', 'wa'),
subpartitionq2_1999_southwest values ('az', 'ut', 'nm'),
subpartitionq2_1999_northeast values ('ny', 'vm', 'nj'),
subpartitionq2_1999_southeast values ('fl', 'ga'),
subpartitionq2_1999_northcentral values ('sd', 'wi'),
subpartitionq2_1999_southcentral values ('ok', 'tx')
),
partitionq3_1999 values less than (to_date('1-oct-1999','dd-mon-yyyy'))
(subpartitionq3_1999_northwest values ('or', 'wa'),
subpartitionq3_1999_southwest values ('az', 'ut', 'nm'),
subpartitionq3_1999_northeast values ('ny', 'vm', 'nj'),
subpartitionq3_1999_southeast values ('fl', 'ga'),
subpartitionq3_1999_northcentral values ('sd', 'wi'),
subpartitionq3_1999_southcentral values ('ok', 'tx')
),
partitionq4_1999 values less than ( to_date('1-jan-2000','dd-mon-yyyy'))
(subpartitionq4_1999_northwest values ('or', 'wa'),
subpartitionq4_1999_southwest values ('az', 'ut', 'nm'),
subpartitionq4_1999_northeast values ('ny', 'vm', 'nj'),
subpartitionq4_1999_southeast values ('fl', 'ga'),
subpartitionq4_1999_northcentral values ('sd', 'wi'),
subpartitionq4_1999_southcentral values ('ok', 'tx')
)
);

MySQL 파티션은 일반적으로 사용됩니다: range, list, hash, key

RANGE 파티셔닝(portioning): 열이 해당하는 범위 간격에 따라 값이 속하면 요소는 그룹으로 나누어져 파티션에 할당됩니다.

l LIST 파티셔닝: RANGE별 파티셔닝과 유사하지만 차이점은 LIST 파티셔닝은 이산형 값 집합의 특정 값과 일치하는 열 값을 기준으로 선택한다는 점입니다.

z HASH 파티셔닝: 사용자가 정의한 함수 의 반환 값을 기준으로 파티셔닝을 선택하는 방식으로, 표현식 에서 테이블에 삽입할 행의 열을 사용합니다. 값이 계산됩니다. 이 함수에는 음수가 아닌 정수 값을 생성하는 MySQL의 모든 유효한 표현식이 포함될 수 있습니다.

l KEY 파티셔닝: HASH 파티셔닝과 유사하지만, KEY 파티셔닝은 하나 이상의 열 계산만 지원하고 MySQL 서버는 자체 해시 함수를 제공한다는 점이 다릅니다.

위 내용은 Mysql 파티션과 Oracle 10 파티션의 차이점에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.