• 検索結果がありません。

目次 1. パーティショニングとは? パーティショニングのメリットと必要性 パーティショニング戦略 パーティション キーの選定時の考慮事項 パーティション方法 レンジ パーティション

N/A
N/A
Protected

Academic year: 2021

シェア "目次 1. パーティショニングとは? パーティショニングのメリットと必要性 パーティショニング戦略 パーティション キーの選定時の考慮事項 パーティション方法 レンジ パーティション"

Copied!
14
0
0

読み込み中.... (全文を見る)

全文

(1)

開発および運用

パーティション概念および方法

(2)

2

目次

1. パーティショニングとは? ... 3 1.1. パーティショニングのメリットと必要性 ... 3 1.2. パーティショニング戦略 ... 4 1.3. パーティション・キーの選定時の考慮事項 ... 4 2. パーティション方法 ... 4 2.1. レンジ・パーティション ... 5 2.2. ハッシュ・パーティション ... 5 2.3. リスト・パーティション ... 7 2.4. コンポジット・パーティション ... 7 2.5. 各パーティションの特徴 ... 8 2.6. インターバル・パーティション ... 9 2.7. REF(参照)パーティション ... 10 2.8. その他のパーティション ... 11 3. 索引とパーティション ... 11 3.1. グローバル索引とローカル索引 ... 11 3.2. Prefixed索引とNon-Prefixed索引 ... 12 3.3. ローカル索引 ... 13 3.4. パーティションの索引タイプ別適用ガイド... 13

(3)

3

パーティショニングの概念および方法

1. パーティショニングとは?

大容量の大きい表をより小さいパーティション単位で分けることにより、性能の低下を防止し、管理をより容易にする機能です。

1.1. パーティショニングのメリットと必要性

 管理データのサイズが大きくなるにつれて、管理・操作に問題点が発生 (VLDB, Data Warehousing)  DBMSごとにパーティショニング手法は多少差がある  パーティション別に独立したバックアップおよびリカバリーが可能  システム障害の発生時にデータの損傷を最小化  不要なデータ・アクセスを防止 (Partition Pruning)  I/Oの分散による性能の向上  独立したDML文の実行(他のパーティションに影響を与えずに各トランザクションの実行が可能)  パーティショニングの核心は「divide-and-conquer」ソリューションの提供

(4)

4

1.2. パーティショニング戦略

1.3. パーティション・キーの選定時の考慮事項

 誤った索引が処理速度に悪影響を及ぼすように、パーティショニングによって無条件にパーティションが持つメリットをすべて 取れるわけではありません。  性能の向上のために、アクセス方式によってパーティショニングが行われるよう、パーティション・キーを選定する必要があり ます。  データの管理の容易性のために、履歴データの生成周期または消滅周期がパーティションと一致する必要があります。  表ごとに索引は多数存在しますが、パーティション・キーは1つのみ存在します。  誤って定義されたパーティション・キーの変更には多くの作業が伴います。  パーティション・キーは、索引とその活用の特徴や制約事項が似ています。  パーティション・キーは、巨視的な観点で索引にたとえることができます。

2. パーティション方法

 レンジ・パーティション - パーティショニングされた表は複数のセグメントで構成されます。各セグメントは特定の列値が同じ範囲内に入る行で構成 されます。  ハッシュ・パーティション - 指定された全体パーティションにデータを均等に分散 - パーティション・キーでハッシュ値を取って行を各パーティションにマッピング  リスト・パーティション - 離散的な列値を各パーティションに分割 - データに順序や関連性がなくてもグルーピングが可能  コンポジット・パーティション - 最初にレンジ・パーティショニングを行った後、各パーティション内でハッシュ・パーティショニングまたはリスト・パーティショニ ングによりサブ・パーティションを作成 - ヒストリカル・データとストライピングの両方を適用できる理想的な方法

(5)

5

2.1. レンジ・パーティション

 パーティショニングされた表は複数のセグメントで構成されます。各セグメントは特定の列値が同じ範囲内に入る行で構成さ れます。  パーティションごとにバックアップおよびリカバリーが可能  範囲を誤って判断する場合、データのスキューが発生  パーティション・プルーニングが可能  パーティション・キー : 実績年月、登録年月など  レンジ・パーティションの活用 - レンジ条件でパーティションの削除(Partition Elimination)効果を得ようとする場合や、過去のデータをパージする場合に活用 - 時系列データのアクセスおよび管理  レンジ・パーティションの例

create table order_details (order_id number,

order_date date)

partition by range (order_date)

(partition p_jan values less than (to_date('01-FEB-2009','DD-MON-YYYY')), partition p_feb values less than (to_date('01-MAR-2009','DD-MON-YYYY')), partition p_mar values less than (to_date('01-APR-2009','DD-MON-YYYY')), partition p_2009 values less than (MAXVALUE)

) ;

- range : Partitioning Method

- (order_date): Partitioning Column (Key)

- less : Partition descriptions identifying partition bounds

2.2. ハッシュ・パーティション

 指定されたすべてのパーティションにデータを均等に分散  パーティション・キーでハッシュ値を取って行を各パーティションにマッピング  パーティション数は2のn倍数に設定 - 2のn倍数でない場合は、パーティション数の変更によってパーティション間のサイズのバランスが破れることがあります。  パーティション・キー : 顧客番号、注文番号、申込番号など  ハッシュ・パーティションの活用 - パラレル処理のI/O分散

(6)

6 - 静的パーティショニングによるパラレル処理

- 与えられたレンジにどのぐらいのデータがマッピングされるか予測しにくい環境や、レンジ別データ量の差が大きい業務に適 当

 ハッシュ・パーティションの例 CREATE TABLE employees ( empno NUMBER(4), ename VARCHAR2(30), sal NUMBER

)

PARTITION BY HASH (empno) ( PARTITION h1 TABLESPACE t1, PARTITION h2 TABLESPACE t2, PARTITION h3 TABLESPACE t3, PARTITION h4 TABLESPACE t4); CREATE TABLE employees (

empno NUMBER(4), ename VARCHAR2(30), sal NUMBER ) PARTITION BY HASH(empno) PARTITIONS 3 STORE IN (t1,t2,t3);

(7)

7

2.3. リスト・パーティション

 離散的な列値を各パーティションに分割  データに順序や関連性がなくてもグルーピングが可能  必ず1つの列のみパーティション・キーとして指定が可能 (マルチ列のパーティション・キーの指定は不可)  IOTはリスト・パーティションの作成が不可  MAX VALUEなどのUPPER-BOUNDの定義が不可  他のパーティションで同じ値を重複して指定することは不可  リスト・パーティションの活用 - 一定の順序を持たないデータを人為的にグルーピングする場合に活用 - ビジネスの緊密度による離散データのグルーピング  リスト・パーティションの例 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) );

2.4. コンポジット・パーティション

 最初にレンジ・パーティショニングを行った後、各パーティション内でハッシュ・パーティショニングまたはリスト・パーティショニ ングによりサブ・パーティションを作成  ヒストリカル・データとストライピングの両方を適用できる理想的な方法  コンポジット・パーティションの活用 - 例) 注文日でレンジ・パーティショニングを行い、注文番号でハッシュ・サブ・パーティショニングを行う

(8)

8

- 離散データを時系列に管理し、周期的なDB管理作業が目的の場合  レンジ・パーティション + リスト・パーティションを考慮

 コンポジット・パーティションの例

SQL> CREATE TABLE sales_range_hash (sales_no NUMBER,

sale_year INT NOT NULL, sale_month INT NOT NULL, sale_day INT NOT NULL, customer_name VARCHAR2(30), price NUMBER)

PARTITION BY RANGE (sale_year, sale_month, sale_day) SUBPARTITION BY HASH(sales_no)

SUBPARTITIONS 4 STORE IN (ASSM_TBS1, ASSM_TBS2, ASSM_TBS3) (PARTITION sales_q1 VALUES LESS THAN (2005, 01, 01), PARTITION sales_q2 VALUES LESS THAN (2005, 07, 01), PARTITION sales_q3 VALUES LESS THAN (2006, 01, 01), PARTITION sales_q4 VALUES LESS THAN (2006, 07, 01) );

2.5. 各パーティションの特徴

レンジ ハッシュ コンポジット リスト パーティションの 基準 範囲 Y=F(x) 範囲 & Y=F(x) & 離散値 離散値 長所 管理の利便性 データの均一な分布 レンジ、ハッシュ、 リストの長所 管理の利便性 短所 スキュー現象 管理の難しさ 管理の難しさ スキュー現象 適用業務 ヒストリカル・データ I/O 分散が必要な場 合やパラレル処理に 有用 ヒストリカル・データ および管理の補完 離散値 パーティション・ キー 実績年月、登録年月 顧客番号、申込番号、 注文番号 レンジ : 注文日 ハッシュ : 注文番号 - パーティション 区分

(9)

9

2.6. インターバル・パーティション

 最初にレンジ・パーティショニングを行った後、各パーティション内でハッシュ・パーティショニングまたはリスト・パーティショニ ングによりサブ・パーティションを作成  ヒストリカル・データとストライピングの両方を適用できる理想的な方法  レンジ・パーティションを拡張した概念 - レンジ・パーティションを使用する時に指定したパーティション領域に含まれない値を入力するとエラーが発生  レンジ・パーティションを基に自動でパーティションを作成  新しいデータが生成されると同時にセグメントが割り当てられる  領域の代わりに、各バウンダリーを指定するインターバルのみを指定  Store In文で表領域を指定する時に、ラウンド・ロビン方式で指定されたTBSPにパーティションを保存  日単位を月単位に変更すると、1ヶ月間隔でパーティションを作成  制約条件 - インターバル・パーティショニングのパーティション・キーは、Number型、Date型のみ指定可能 - 表を作成する時に少なくとも1つのパーティションの指定(作成)が必要 - 索引構成表は未サポート - インターバル・パーティション表にドメイン索引は作成不可 - コンポジット・パーティショニングではプライマリー・パーティションとしてのみ使用可能(サブ・パーティションとしては使用 不可) - インターバル方式ではMAXVALUEが定義されない - パーティション列にNULL値を許容しない  インターバル・パーティションの例 SQL> create table newsales

( time_id date not null , channel_id char(1) not null , promo_id number(6) not null ) partition by range (time_id)

interval (numtodsinterval(1, 'DAY')) // 1日間隔でパーティションを作成

store in (sales1, sales2) // 保存する表領域を指定 (オプション)

( partition p_before_1_jan_2005 values

(10)

10

2.7. REF(参照)パーティション

 親表と子表のいずれにも含まれないキー列でパーティションの実装を許容 - 既存の親表-子表間に同じパーティショニングの戦略を実現時には、すべてのパーティショニング・キー列を子表にコピー  キー列を子表に保存しなくても、子表に継承される。  制約条件 - パーティションを作成時に、子表に必ず参照整合性制約の定義が必要。この制約条件は、必ずENABLE VALIDATE NOT DEFERRABLE状態にある必要があり、親表の主キーまたは一意キーを参照する必要がある。 - 外部キー列はNOT NULL制約を満たさなければならない。 - ON DELETE SET NULL句は使用不可

- 親表は必ず存在するパーティション表。すべてのパーティショニング手法をサポート、ただしインターバル・パーティショニン グはサポートが不可 - 外部キーは仮想列を保持できない。 - 親表の参照された主キー制約または一意キー制約は、仮想列を保持できない。 - 参照パーティショニングでは、索引構成表、外部表、ドメイン索引のストレージ表を保持できない。 - ROW MOVEMENTは2つの表にすべてマッチされるように設定

- 参照パーティショニングは、CREATE TABLE ... AS SELECT文で記述が不可能

 REF(参照)パーティションの例 CREATE TABLE mycustomers (cust_id NUMBER,

cust_first_name VARCHAR2(20), cust_last_name VARCHAR2(20), cust_gender CHAR(1))

PARTITION BY LIST (cust_gender) (PARTITION p_male VALUES ('M'), PARTITION p_female VALUES ('F') );

SQL> ALTER TABLE mycustomers ADD CONSTRAINT p_cust_id PRIMARY KEY (cust_id);

Table altered.

CREATE TABLE mysales

(cust_id NUMBER NOT NULL, quantity_sold NUMBER(10,2), amount_sold NUMBER(10,2),

CONSTRAINT fk_sales_01 FOREIGN KEY (cust_id)

REFERENCES mycustomers(cust_id)) PARTITION BY REFERENCE (fk_sales_01); SQL> SELECT TABLE_NAME, PARTITIONING_TYPE,

REF_PTN_CONSTRAINT_NAME FROM USER_PART_TABLES WHERE TABLE_NAME IN ('MYCUSTOMERS','MYSALES');

TABLE_NAME PARTITION REF_PTN_CONSTRAINT_NAME

--- --- --- MYCUSTOMERS LIST

(11)

11

2.8. その他のパーティション

 仮想例パーティショニング

- 実際に表に存在しない列であっても、ランタイムの間計算して仮想列を作成後パーティションを作成 例) total_value as (quantity * unit_price) virtual // 仮想列のtotal_valueの作成

partition by range(total_value) // パーティションの作成  システム・パーティショニング - 大きい表を小さいパーティションに分ける機能 - データの入力時にデータベース・レイヤーではなく、アプリケーションで制御できるように処理 例) データを入力時に、行が入力されるパーティションをアプリケーションが決定 DBAはパーティションを定義する役割のみを行う。

INSERT INTO orders PARTITION(part1) VALUES (1, SYSDATE, 'Y');

3. 索引とパーティション

 グローバル索引とローカル索引 - 索引対象範囲による分類。グローバル索引はパーティショニングされた表全体、ローカル索引はパーティショニングされた表 の該当セグメントが索引対象範囲になります。  パーティション索引と非パーティション索引 - 索引パーティションは、表パーティションとは別のものです。索引パーティション用のストレージとパーティション・キーが定義 されます。つまり、ローカル索引は表パーティションと同一レベル・パーティショニングであり、表パーティション・キーが索引 パーティション・キーとただ一致するだけです。  Prefixed索引とNon-Prefixed索引 - Prefixed index : パーティション・キーが索引の先頭列で構成 - Non-prefixed index : パーティション・キーが索引の先頭列で開始しない場合

3.1. グローバル索引とローカル索引

 グローバル索引とローカル索引は、表の範囲によって区分されます。  グローバル索引 / ローカル索引の例 CREATE TABLE sales (

acct_no NUMBER(5) NOT NULL, person VARCHAR2(30), sales_amount NUMBER(8) NOT NULL, week_no NUMBER(2) NOT NULL) PARTITION BY RANGE (week_no)

(12)

12

PARTITION p2 VALUES LESS THAN (8) TABLESPACE data1, PARTITION p3 VALUES LESS THAN (MAXVALUE) TABLESPACE data2 CREATE INDEX sales_idx (

ON sales(week_no, acct_no )

GLOBAL

(PARTITION I_p1 VALUES LESS THAN (4) TABLESPACE data0_Idx, PARTITION I_p2 VALUES LESS THAN (MAXVALUE) TABLESPACE data2_Idx );

CREATE INDEX sales_idx ON sales(week_no, acct_no) LOCAL

(PARTITION I_p1 TABLESPACE IDX1, PARTITION I_p2 TABLESPACE IDX2, PARTITION I_p3 TABLESPACE IDX3 );

3.2. Prefixed索引とNon-Prefixed索引

 グローバルPrefixed索引は、表と同一レベル・バーティショニングされません。  Prefixed索引とNon-Perfixed索引の区分は、索引のパーティション・キーと索引列間の関係であり、表のパーティション・キーと 索引列間の関係を表すのものではありません。  最上位パーティションは最も大きいデータ値を保有できる必要があるので、maxvalueを明示的に使用するといいです。  グローバルPrefixed索引の例 -- acct_noは、索引の先頭列がパーティション・キーと同一  Prefixed

CREATE INDEX sales_idx

ON sales ( acct_no ) GLOBAL

PARTITION BY RANGE ( acct_no)

(PARTITION p1 VALUES LESS THAN (32),

(13)

13

3.3. ローカル索引

 ローカルPrefixed索引 : パーティション・キーと索引の先頭列が一致  ローカルNon-Prefixed索引 : パーティション・キーと索引の先頭列が不一致  ローカルPrefixed索引 / ローカルNon-Prefixed索引の例 -- 表がWeek_Noでパーティションされた場合に、ローカルPrefixed索引を作成 CREATE INDEX sale_idx

On sales (week_no, acct_no) LOCAL

(PARTITION p1 TABLESPACE idx1, PARTITION p1 TABLESPACE idx2, PARTITION p1 TABLESPACE idx3);

-- 表がWeek_Noでパーティションされた場合に、ローカルNon-prefixed索引を作成 CREATE INDEX sale_idx

On sales (acct_no) LOCAL

(PARTITION p1 TABLESPACE idx1, PARTITION p1 TABLESPACE idx2, PARTITION p1 TABLESPACE idx3);

3.4. パーティションの索引タイプ別適用ガイド

索引の区分 適用基準 Global Prefixed Index - OLTP 環境で複数のパーティションにわたってアクセスが頻繁に行われる場合 - パーティション・キーでない列で一意索引が必要な場合 - 業務特性やアクセス方式などを考慮してパーティション索引を作成しようとするが、ローカ ル索引を作成できない場合 - 管理上パーティションの削除を頻繁に行う場合は、グローバル索引の適用時に注意 Local Prefixed Index - OLTP 環境で特定のパーティションへのアクセスが多く、結合が頻繁に行われる場合 - パーティション・キー列を先頭にする索引が必要な場合 - 性能、可用性、管理の容易性が他のタイプの索引より優秀 Local Non-Prefixed Index - DW のような大容量の非定型問合せ中心の環境で、他の表との結合が少なく、狭い範囲 のパーティション全体にわたるアクセスが多い場合 - パーティション・キー以外の列で条件を検索時に、パーティション別処理が可能であり、ヒ ストリカル・データの検索に有利 - 管理上パーティションの削除を頻繁に行いながらも、索引の可用性と管理の容易性を維 持しようとする場合

(14)

14 Copyright © 2014 TmaxData Co., Ltd. All Rights Reserved.

Trademarks

Tibero RDBMS® is a registered trademark of TmaxData Co., Ltd. Other products, titles or services may be registered trademarks of their respective companies.

Contact Information

TmaxData can be contacted at the following addresses to arrange for a consulting team to visit your company and discuss your options.

Korea

TmaxData Co., Ltd

5, Hwangsaeul-ro 329beon-gil, Bundang-gu, Seongnam-si, Gyeonggi-do. South Korea Tel: +82-31-779-7113

Fax: +82-31-779-7119 Email: [email protected]

Web (Korean): http://www.tmaxdata.com Technical Support: http://technet.tmaxsoft.com

USA

TmaxSoft, Inc. 560 Sylvan Avenue

Englewood Cliffs, NJ 07632. U.S.A Tel: +1-201-567-8266

Fax: +1-201-567-7339 Email: [email protected]

Web (English): http://www.tmaxsoft.com

Japan

TmaxSoft Japan Co., Ltd.

5F Sanko Bldg, 3-12-16 Mita, Minato-Ku, Tokyo, 108-0073

Japan

Tel: +81-3-5765-2550 Fax: +81-3-5765-2567 Email: [email protected]

Web (Japanese): http://www.tmaxsoft.co.jp

China

TmaxSoft China Co., Ltd.

Beijing Silver Tower, RM 1508, 2 North Rd Dong San Huan, Chaoyang District, Beijing, China, 100027. China Tel: +86-10-6410-6145~8

Fax: +86-10-6410-6144 Email: [email protected]

Web (Chinese): http://www.tmaxsoft.com.cn

Brazil

TmaxSoft Brazil

Avenida Copacabana, 177 - 3 andar 18 do Forte

Empresarial, Alphaville - Barueri, Sao Paulo, SP-Brasil CEP 06472-001

Email: [email protected]

Russia

Tmax Russia L.L.C.

Grand Setun Plaza, No A204 Gorbunova st.2, Moscow, 121596

Tel: +7(495)970-01-35

Email: [email protected] Web (Russian): http://ru.tmaxsoft.com

Singapore

Tmax Singapore Pte. Ltd.

430 Lorong 6, Toa Payoh #10-02, OrangeTee Building. Singapore 319402

Tel: +65-6259-7223

Email: [email protected] United Kingdom

TmaxSoft UK Ltd.

Surrey House, Suite 221, 34 Eden Street, Kingston-Upon-Thames, KT1 1ER United Kingdom

Tel: + 44-(0)20-8481-3776

Email: [email protected]

Web (English): http:/www.tmaxsoft.com

Table altered.

参照

関連したドキュメント

Aiming to introduce a general framework, which encompasses most multiscale representation systems developed within the area of applied harmonic analysis, we start by reviewing some

事業セグメントごとの資本コスト(WACC)を算定するためには、BS を作成後、まず株

この項目の内容と「4環境の把 握」、「6コミュニケーション」等 の区分に示されている項目の

Actually it can be seen that all the characterizations of A ≤ ∗ B listed in Theorem 2.1 have singular value analogies in the general case..

Touchdown Total may be applied as a spot spray in peppermint and spearmint. Apply spray-to-wet with hand-held equipment, such as backpack and knapsack sprayers, pump-up

2 前項の規定は、地方自治法(昭和 22 年法律第 67 号)第 252 条の 19 第1項の指定都 市及び同法第 252 条の

If you disclose confidential Company information through social media or networking sites, delete your posting immediately and report the disclosure to your manager or supervisor,

①Lyra 30 Fund LPへ出資 – 事業創出に向けた投資戦略 - 今期重点施策 ③将来性のある事業の厳選.