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

Microsoft PowerPoint - J-S301167_idx_comp.ppt [互換モード]

N/A
N/A
Protected

Academic year: 2021

シェア "Microsoft PowerPoint - J-S301167_idx_comp.ppt [互換モード]"

Copied!
44
0
0

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

全文

(1)

SAP R/3およびSAP BWシステムに

対応する索引圧縮

Jan Klokkers

(2)

以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです 。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むこと はできません。以下の事項は、マテリアルやコード、機能を提供することをコミットメ ント(確約)するものではないため、購買決定を行う際の判断材料になさらないで下 さい。オラクル製品に関して記載されている機能の開発、リリースおよび時期につ いては、弊社の裁量により決定されます。 Oracle、PeopleSoft、JD Edwards、及びSiebelは、米国オラクル・コーポレーション及びその子会社、関連会社の 登録商標です。その他の名称はそれぞれの会社の商標の可能性があります。

(3)

内容

Oracleのストレージ領域の削減技術の概要

Oracleのストレージ領域の削減技術の概要

• データ型の優位性 • ビットマップ索引ット ップ索引 • Unicode

SAPに対応するOracle 10g 索引圧縮

次バージョン展望 –

SAPに対応するOracle 11g Advanced Compression

高度なサポートの提供

(4)

<ここに画像を挿入> <ここに画像を挿入>

Oracleのストレージ領域の

(5)

内部データの表現

デ • データ表現方式: • 固定長 • 可変長

CREATE TABLE XYZ (

COL1 NUMBER ( 10), COL2 NUMBER ( 10), 可変長 • Oracle: • NUMBER: 可変長 変 COL2 NUMBER ( 10), COL3 NUMBER ( 10), COL4 VARCHAR2(100) ) • VARCHAR: 可変長 • DB2、SQL*Server: • NUMBER: 固定長 ) <storage_desc> ; NUMBER: 固定長 • VARCHAR: 可変長 (非効率的)

(6)

内部データの表現

数値

数値

INSERT INTO XYZ (COL1, COL2, COL3) VALUES (12, 1234, 123456);

V1 V2 V2 V3 V3 V3

固定長の表現(合計15バイト):

可変長の表現(合計9バイト):

(7)

内部データの表現

文字値

文字値

INSERT INTO XYZ (COL4) VALUES ('ABC');

L1 L2 L3 L4 A B C DB2の表現:

Oracleの表現:

(8)

<ここに画像を挿入> <ここに画像を挿入>

(9)

ビットマップ索引

各値にビットマップ(ビット・ベクトル)を使用

各値にビットマップ(ビット・ベクトル)を使用

• 高圧縮データ

標準のB*Tree索引より少なくとも25%小さい

標準のB Tree索引より少なくとも25%小さい

Oracleは、ディスクにビットマップ索引を格納する

唯一のデータベース

のデ タ

SAP BWは、ビットマップ索引を広範囲に活用

• BWシステムのディスク領域を大幅に節約 • スター・クエリーを超高速で実行

(10)

永続ビットマップ索引

ビットマップ索引 表 ビットマップ索引 表 <青: 10001001 0001 0010 100> 緑 キー ビットマップ <緑: 0100 0000 1100 0001 001> <赤: 0001 0100 0010 0100 000> <黄: 0010 0010 0000 1000 010>

(11)

<ここに画像を挿入> <ここに画像を挿入>

(12)

Unicodeデータの表現

データベースで異なるエンコード・スキーマ

データベースで異なるエンコード・スキーマ

• UTF-8 – 可変長、ASCII文字は1バイトのみ • きわめて省スペースきわめて省 • 大多数のデータがASCII形式であれば、 ディスク領域を追加する必要はほとんどない UTF 16 固定2バイト表現 • UTF-16 – 固定2バイト表現

OracleはSAPデータベースにUTF 8を使用

OracleはSAPデータベースにUTF-8を使用

• SAPのUnicode移行後は、標準のOracleデータベースが 20%小さくなる

(13)

ストレージ領域の削減技術 – まとめ

Oracleは 圧縮技術を使用せずに

Oracleは、圧縮技術を使用せずに、

どのデータベースよりも効率的にデータを格納

SAP BWシステムの例:

SAP BWシステムの例:

• 同じ量のデータの場合、Oracleが使用するディスク領域は、 圧縮なしの状態でDB2より50%少ない • ビットマップ索引の使用 • 数値の可変長ストレージ – BWデータの80%は数値で格納

(14)

<ここに画像を挿入> <ここに画像を挿入>

SAPに対応するOracle 10g

g

(15)

索引圧縮

検討する動機

検討する動機

SAPシステムの大量のディスク領域を索引が使用

SAPシステムの大量のディスク領域を索引が使用

• SAP ERP(R/3): • データベースのディスク領域の30~50% • さらに多いケースも存在 • SAP BI(BW): デ タベ スのデ スク領域の25 40% • データベースのディスク領域の25~40% • ビットマップ索引を多用すると、比率が低下

SAP索引は 索引圧縮にとって理想的

SAP索引は、索引圧縮にとって理想的

• 通常は、索引ごとに平均6列からなる複数列索引 • 索引の先頭列が最も選択的でないデータ索 先頭列 最 選択

(16)

索引キーの圧縮技術

B*Treeのリーフ・ブロック内のデータ圧縮

B Treeのリーフ・ブロック内のデータ圧縮

各リーフ・ブロックは、個別に圧縮

(グローバルなシンボル表はない)

(グロ バルなシンボル表はない)

索引キーは、各ブロックに2個1組で格納

• 接頭辞部接頭辞部 • 接尾辞部

同一の接頭辞は1回のみ格納

SAPアプリケーションに対して完全に透過的

• 大幅なデータ変更により、圧縮効果に影響がない

SAP BR*SPACEによる完全なサポート

• Index Reorgsは圧縮属性を維持

(17)

例 – 6列の索引

1 A X 1 A 1 ROWID1 1 A X 1 B 2 ROWID2 1 A X 2 A 3 ROWID3 1 A Y 1 B 4 ROWID4 1 A Y 3 C 5 ROWID5 1 A Y 3 C 5 ROWID5 1 A Y 3 C 6 ROWID6 1 A Y 3 D 7 ROWID7 1 A Y 3 D 7 ROWID7 1 B X 1 A 1 ROWID8 1 B X 1 A 2 ROWID9 1 B X 1 A 2 ROWID9 1 B X 1 C 3 ROWID10 1 B X 3 A 4 ROWID11 1 B X 3 C 5 ROWID12 1 B X 3 C 6 ROWID13

(18)

例 – 接頭辞1 – 12少ない値

1 A X 1 A 1 ROWID1 A X 1 B 2 ROWID2 A X 2 A 3 ROWID3 A Y 1 B 4 ROWID4 A Y 3 C 5 ROWID5 A Y 3 C 5 ROWID5 A Y 3 C 6 ROWID6 A Y 3 D 7 ROWID7 A Y 3 D 7 ROWID7 B X 1 A 1 ROWID8 B X 1 A 2 ROWID9 B X 1 A 2 ROWID9 B X 1 C 3 ROWID10 B X 3 A 4 ROWID11 B X 3 C 5 ROWID12 B X 3 C 6 ROWID13

(19)

例 – 接頭辞2 – 22少ない値

1 A X 1 A 1 ROWID1 X 1 B 2 ROWID2 X 2 A 3 ROWID3 Y 1 B 4 ROWID4 Y 3 C 5 ROWID5 Y 3 C 5 ROWID5 Y 3 C 6 ROWID6 Y 3 D 7 ROWID7 Y 3 D 7 ROWID7 1 B X 1 A 1 ROWID8 X 1 A 2 ROWID9 X 1 A 2 ROWID9 X 1 C 3 ROWID10 X 3 A 4 ROWID11 X 3 C 5 ROWID12 X 3 C 6 ROWID13

(20)

例 – 接頭辞3 – 30少ない値

1 A X 1 A 1 ROWID1 1 B 2 ROWID2 2 A 3 ROWID3 1 A Y 1 B 4 ROWID4 3 C 5 ROWID5 3 C 5 ROWID5 3 C 6 ROWID6 3 D 7 ROWID7 3 D 7 ROWID7 1 B X 1 A 1 ROWID8 1 A 2 ROWID9 1 A 2 ROWID9 1 C 3 ROWID10 3 A 4 ROWID11 3 C 5 ROWID12 3 C 6 ROWID13

(21)

例 – 接頭辞4 – 28少ない値

1 A X 1 A 1 ROWID1 B 2 ROWID2 1 A X 2 A 3 ROWID3 1 A Y 1 B 4 ROWID4 1 A Y 3 C 5 ROWID5 1 A Y 3 C 5 ROWID5 C 6 ROWID6 D 7 ROWID7 D 7 ROWID7 1 B X 1 A 1 ROWID8 A 2 ROWID9 A 2 ROWID9 C 3 ROWID10 1 B X 3 A 4 ROWID11 C 5 ROWID12 C 6 ROWID13

(22)

例 – 接頭辞5 – 15少ない値

1 A X 1 A 1 ROWID1 1 A X 1 B 2 ROWID2 1 A X 2 A 3 ROWID3 1 A Y 1 B 4 ROWID4 1 A Y 3 C 5 ROWID5 1 A Y 3 C 5 ROWID5 6 ROWID6 1 A Y 3 D 7 ROWID7 1 A Y 3 D 7 ROWID7 1 B X 1 A 1 ROWID8 2 ROWID9 2 ROWID9 1 B X 1 C 3 ROWID10 1 B X 3 A 4 ROWID11 1 B X 3 C 5 ROWID12 6 ROWID13

(23)

例 – 接頭辞6 – 節約しない

1 A X 1 A 1 ROWID1 1 A X 1 B 2 ROWID2 1 A X 2 A 3 ROWID3 1 A Y 1 B 4 ROWID4 1 A Y 3 C 5 ROWID5 1 A Y 3 C 5 ROWID5 1 A Y 3 C 6 ROWID6 1 A Y 3 D 7 ROWID7 1 A Y 3 D 7 ROWID7 1 B X 1 A 1 ROWID8 1 B X 1 A 2 ROWID9 1 B X 1 A 2 ROWID9 1 B X 1 C 3 ROWID10 1 B X 3 A 4 ROWID11 1 B X 3 C 5 ROWID12 1 B X 3 C 6 ROWID13

(24)

14000

Total Number of Leaf Blocks

10000 12000 14000 4000 6000 8000 blocks 0 2000 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 prefix length

(25)

構文

CREATE INDEX <xxxx> ON <TABLE>

CREATE INDEX <xxxx> ON <TABLE>

(<COLUMNLIST>)

COMPRESS <n>

<n> = 接頭辞の長さ

一意の索引の接頭辞の最大長: N-1

(26)

最適な接頭辞の長さの計算(1)

非効率的な方法:

ANALYZE INDEX VALIDATE STRUCTURE

• ANALYZE INDEX <xxx> VALIDATE STRUCTURE

• SELECT opt_cmpr_count, opt_cmpr_pctsave FROM index stats_

• オンライン操作なし、索引をロック • きわめて低速、並行スキャンなし • 一度に1つの索引のみ分析 • DBAが索引の作成/再構築の文を記述することが必要 • 時間がかかる • 時間がかかる • 誤りが発生しやすい

(27)

最適な接頭辞の長さの計算(2)

最適な方法:

• Package IND COMP from SAP Note 1109743

• Package IND_COMP from SAP Note 1109743

• exec ind_comp.get_column( ... ) • 完全なオンライン操作 • きわめて高速 • 並行スキャン • 既存の統計を使用 • 既存の統計を使用 • SAPの索引設計と索引使用方法の知識 • きわめて簡潔 • 最大N個の索引を分析可能 • 別個のSQLファイルで、索引の作成/再構築の完全な構文を 生成 • 領域節約統計を提供

(28)

Parameters of ind_comp

• Ind_comp (‘table spec‘, logging, opmode) パラメ タ: • パラメータ: • 表固有の値: • 表名、たとえばRFBLG • 表の数、たとえば100 • ロギングの値: • True – 領域統計問合せの生成 • True – 領域統計問合せの生成 • False – デフォルト • Opmode値: デ 築 • オンライン – デフォルト: オンラインで再構築するための文を生成し、 パーティション化された索引を無視する • オフライン – パーティション化されていない索引にはオンラインで再構 築された文を生成し、パーティション化された索引には削除/作成の文 を生成する。パーティション化された索引を圧縮する必要がある場合 は、BWシステムに使用することが必要

(29)

ind_compのインストール方法

• 手順1: SAP Note 1109743を参照 • 手順2: SAP Note 1109743から添付文書をダウンロード • 手順2: SAP Note 1109743から添付文書をダウンロ ド • 手順3: ファイルの名前を変更する。 Ind_comp.txt から ind_comp.sql I d t t t から i d t l Ind_comp_part.txt から ind_comp_part.sql • 手順4: データベース・アカウント<sapsid>を準備 sqlplus connect / as sysdba <sapsid>に任意のディレクトリを作成する権限を付与する <sapsid>に任意のディレクトリを削除する権限を付与するp • 手順5: PL/SQLパッケージIND_COMPをデータベースにロード sqlplus sqlplus connect <sapsid>/<password> start ind_comp

(30)

ind_compの使用方法 (1)

• 単一の特定表のすべての索引を分析

sqlplus sqlplus

set serveroutput on size 1000000 connect <sapsid>/<passwd>

exec ind_comp.get_column (‘GLPCA‘);

exec ind_comp.get_column (‘/BIC/ECUSTOMER001‘);

• すべての索引で、N個の最大数の表を分析

sqlplus

t t t i 1000000

set serveroutput on size 1000000 connect <sapsid>/<passwd>

(31)

ind_compの使用方法 (2)

統計を持

すべての索引で、追加の領域統計を持つN個の最大数の

表を分析

sqlplus sqlplus

set serveroutput on size 1000000 connect <sapsid>/<passwd>

co ect saps d / pass d

(32)

ind_compの使用方法 (3)

すべての索引で、追加の領域統計とオンライン・モー

ドを持つN個の最大数の表を分析(パーティション化

された索引は無視)

された索引は無視)

sqlplus

set serveroutput on size 1000000 set se e output o s e 000000 connect <sapsid>/<passwd>

(33)

ind_compの使用方法 (4)

統計を持

すべての索引で、追加の領域統計を持つN個の最大数の

表を分析し、パーティション化された索引を含める

sqlplus sqlplus

set serveroutput on size 1000000 connect <sapsid>/<passwd>

co ect saps d / pass d

(34)

Ind_comp出力

を生成

/tmpまたはc:¥tempディレクトリに.sqlファイルを生成

各表に1つのファイル

例 • 例: GLPCA_IX_COMP.sql

すべてのSQL文が含まれる1個のサマリー・ファイル

IX COMP sql

IX_COMP.sql

(35)

Ind_compの出力例とロギング

IX_COMP.sql

spool IX_COMP.log

col index_name format a30 col partition_name format a30p _

select segment_name index_name, partition_name, round (bytes/1024/1024) MB from user_segments

where segment name = 'GLPCA~7' where segment_name GLPCA 7 ;

alter index "SAPR3"."GLPCA~7" rebuild online compress 5 parallel 4 pctfree 1; alter index "SAPR3" "GLPCA~7" noparallel;

alter index SAPR3 . GLPCA~7 noparallel;

select segment_name index_name, partition_name, round (bytes/1024/1024) MB from user_segments

here segment name = 'GLPCA 7' where segment_name = 'GLPCA~7' ;

(36)

索引の再構築

表固有のSQLファイルの実行

sqlplus connect <sapsid>/<passwd> connect <sapsid>/<passwd> @glpca_ix_comp

サマリー・ファイルIX COMP sqlの実行

サマリ

ファイルIX_COMP.sqlの実行

sqlplus

connect <sapsid>/<passwd> @start ix_comp

(37)

最適化

を実

システム・コピーでind_compを実行

• 最適な圧縮係数を計算するために、本番システムに負荷を追加 する必要はない する必要はない。

索引表領域の領域パラメータをチェック。大きい値は領域

の節約効果を低下させる

の節約効果を低下させる

• DMTS: 初期エクステント・サイズまたはネクスト・エクステント・ サイズ、pctincrease値 設定 • LMTS: Uniform設定 • UNIFORMのかわりにAUTOALLOCATEを使用 • 大きい索引には UNIFORMサイズに10MBを選択 • 大きい索引には、UNIFORMサイズに10MBを選択

(38)

注意および警告

分析フェ ズはオンライン操作 • 分析フェーズはオンライン操作 • 本番システムのCPUおよびIOの負荷が10~20%増加する • SAPシステムのピーク時間には実行しないこと • オンライン・モードの実行フェーズは、ダウンタイムが不要であるため、 SAPシステムのアップタイム中に実行可能 • REBUILD ONLINE機能を使用する • REBUILD ONLINE機能を使用する • SAPシステムのピーク時間には実行しないこと • 必要なCPU、メモリーおよびIOリソースが増加する • オフライン・モードの実行フェーズは、SAPシステムのダウンタイムが 必要 • パーティション化された索引の圧縮は、索引の削除/作成を実行することにパ ティション化された索引の圧縮は、索引の削除/作成を実行することに よってのみ有効化できる

(39)

結果 – 領域

索引GLPCA~1のサイズが 18GBから4 5GBに縮小される

索引GLPCA~1のサイズが、18GBから4.5GBに縮小される

• 領域が75%節約

全般:

全般:

• R/3における最小ケース: • 索引が完全に再編成された後で、索引圧縮が有効になり、データ ベース全体で15~20%の領域が節約 • BWにおける最小ケース: 索引が完全に再編成された後で 索引圧縮が有効になり デ タ • 索引が完全に再編成された後で、索引圧縮が有効になり、データ ベース全体で10~15%の領域が節約 • R/3およびBWの標準的なケース: • データベース全体で、20~30%の領域が節約

(40)

結果 – パフォーマンス

圧縮された索引を使用する場合

圧縮された索引を使用する場合、

追加のCPUサイクルが必要

索引のフル・スキャンおよび範囲スキャンの場合

索引のフル スキャンおよび範囲スキャンの場合、

物理的および論理的I/Oは減少

顧客の経験による情報

顧客の経験による情報

• 索引圧縮の導入はスループットに悪影響を及ぼさないか、 または、SAPシステムのスループットがわずかに上昇

(41)

索引圧縮のその他の利点

追加ライセンスの費用が不用

追加ライセンスの費用が不用

• Oracleサーバーの標準機能。

索引圧縮は Oracle8iから導入されているため

索引圧縮は、Oracle8iから導入されているため、

完成された機能

すぐにディスク領域を節約

すぐにディスク領域を節約

• Oracle11g Advanced Compressionオプションを待つ必要がない

• Oracle11gでは、索引圧縮機能への機能拡張はない

(42)

<ここに画像を挿入> <ここに画像を挿入>

次バージョン展望:

Oracle Database 11g

Advanced Compression

オプション

(43)

Advanced

Compressionオプション

機能

• OLTP表の圧縮 • 従来のDML(挿入 アップデート)をサポート • 従来のDML(挿入、アップデ ト)をサポ ト • INSERTおよびUPDATEは、再圧縮を行わない • ブロック・レベルの圧縮(グローバルなシンボル表はない) <=修正 • SecureFilesの非構造化データ圧縮(LOBの代替) • 表内のSecurefiles列は、表とは別に圧縮することが必要

• Data Pump圧縮Data Pump圧縮

• RMANバックアップ圧縮

(44)

参照

関連したドキュメント

[r]

被保険者証等の記号及び番号を記載すること。 なお、記号と番号の間にスペース「・」又は「-」を挿入すること。

ERROR  -00002 認証失敗または 圏外   クラウドへの接続設定及びア ンテ ナ 接続を確認して ください。. ERROR  -00044 回線未登録または

[r]

撮影画像(4月12日18時頃撮影) 画像処理後画像 モックアップ試験による映像 CRDレール