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

How to Use the PowerPoint Template

N/A
N/A
Protected

Academic year: 2021

シェア "How to Use the PowerPoint Template"

Copied!
64
0
0

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

全文

(1)
(2)

免責事項

以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目

的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を

提供することをコミットメント(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さい。

オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の裁量により決定さ

れます。

Oracleは、米国オラクル・コーポレーション及びその子会社、関連会社の米国及びその他の国における登録商標または商標です。

他社名又は製品名は、それぞれ各社の商標である場合があります。

(3)

Oracle Database 12c Release 1 (12.1.0.2)

CoreTech Seminar

Oracle Database In-Memory: メモリー構造と設定

日本オラクル株式会社

データベース事業統括 製品戦略統括本部

データベースエンジニアリング本部 Database & Exadata技術部

井上 克己

(4)

Agenda

1

2

3

メモリー構造

ポピュレーション

インスタンス・レベルの設定と動作

オブジェクト・レベル、カラム・レベル設定

圧縮

プライオリティ

4

5

2

3

4

5

ポピュレーション

インスタンス・レベルの設定と動作

オブジェクト・レベル、カラム・レベル設定

圧縮

プライオリティ

6

6

(5)

System Global Area (SGA)

Buffer Cache

Shared Pool

Redo Buffer

Large Pool

Other shared

Memory

Components

In-Memory

Area

INMEMORY_SIZE

パラメータ

インメモリ・カラム・ストアの基本構成

SGA内の新たな領域として、

インメモリ領域を追加

INMEMORY_SIZE

パラメータによりサイズ設定

最小値は100MB

SGA_TARGETは十分に

大きな値の設定が必要

静的プールとして確保

(6)

SGA

Buffer Cache

インメモリ・カラム・ストア

IMCU

Wnnn

1 MB Pool

64 KB Pool

メタ

データ

IMCO

ジャーナル

IMCU =

I

n-

M

emory

C

ompression

U

nit

IMCU

IMCU

メタ

データ

メタ

データ

インメモリ・カラム・ストア: 2つのプール領域

ジャーナル

(7)

インメモリ・カラム・ストアの構成

•

1MBプール と 64KBプール

–

1MBプール: 列型形式のデータがIMCUとして格納される

•

1MBの倍数単位で割り当てられる

–

64KBプール: 複数の目的で使用される

•

IMCUのメタデータ格納のため使われる

•

データ更新時、削除時などにジャーナルとして使われ使用率が増える

•

inmemory_sizeパラメータで指定したサイズの一定の割合が64KBプールと

して自動で割り当てられる

(8)

ディスクとインメモリ: 比較

ディスク上の表領域: 行型フォーマット

Data file 1

Data file 2

Data file N

セグメント

Extent

Extent

Extent

Extent

Block

Block

Block

行

行

行

In-Memory Area

IM セグメント

IMCU

IMCU

IMCU

インメモリ・カラム・ストア: 列型フォーマット

カ

ラ

ム

カ

ラ

ム

カ

ラ

ム

カ

ラ

ム

IMCU = In-Memory Compression Unit

IM セグメント

セグメント

(9)

IMCU(In-Memory Compression Unit):

カラム以外の構成物

6列の表の例

P_PARTKEY

P_NAME

P_MFGR

IMCU内の行数は圧縮指定に

より異なる

全てのIMCU内にカラム数分

のカラム圧縮ユニット

各IMCU内にRowID CUと

各カラムの最大最/小値エリア

が存在

他のカラム

RowID Min/Max

100M行の表の場合

数百個のIMCU

数十万行分の値

(10)

Agenda

1

2

3

メモリー構造

ポピュレーション

インスタンス・レベルの設定と動作

オブジェクト・レベル、カラム・レベル設定

圧縮

プライオリティ

4

5

6

(11)

ora_w001_orcl

ポピュレーション(population)とは

•

データをディスクからインメモリ・カラム・

ストアへ載せる動作を指す

–

データベースに新しいデータを取り込まない

–

既存データをメモリー中に最適化されたカラム

型フォーマットで取り込む

•

ポピュレーションはバックグラウンドで実

行される

–

ora_wNNN_${SID} プロセス

–

ワーカー・プロセス数は新しく追加された

INMEMORY_MAX_POPULATE_SERVERS

パラメータで設定

SALES

インメモリ・カラム・ストア

(12)

ポピュレーション

•

対象セグメント(表、パーティションなど)

を水平分割し複数プロセスで処理

–

分割時の処理については後述

•

ダイレクト・パス読み取り

–

バッファ・キャッシュには載らない

•

右図の解説

–

行数の異なる3つの表で

合計9つのIMCUの場合

–

9ワーカー・プロセスが同時に起動

SALES

PRODUCTS

CUSTOMERS

(13)

IMCUへの分割

•

ポピュレーション時に内部で自動的に分割し、1ワーカー・プロセスが1つ

のIMCUを作成

•

IMCUのサイズは行数、または、ディスク上でのサイズにより分割される

–

数十万行、数100MB程度

–

1行のサイズの平均が小さい場合、行数で分割される

(14)

最大値/最小値(ストレージ・インデックス)

•

ポピュレーション時に全てのIMCUで全てのカラムのmin/max値が格納される

•

NUMBER、VARCHAR2、CHAR、DATE型などはmin/max値が格納される

•

Exadataのストレージ・インデックスと類似する機能

(15)

プロセス構成

•

IMCO(

I

n-

M

emory

Co

ordinator)プロセスがコーディネータとして機能

–

SMCO(space management coordinator)と連携し"KTSJ"と呼ばれるタスク管理機構を

使用

–

ポピュレーションのリクエストはキューに入れられる

–

2分間隔でキューから取り出されタスクが実行される

•

キューは優先度が指定される

•

実際のポピュレーションはワーカー・プロセス(ora_wNNN_${SID})が実行

–

CPUとI/Oリソースを多く使用する傾向がある

(16)

起動するワーカー・プロセスの最大プロセス数の指定

•

初期化パラメータ

INMEMORY_MAX_POPULATE_SERVERS

で明示的に設定可能

•

右: ポピュレーション実行時の

topコマンドの画面ショット

(Linuxプラットフォーム)

(17)

起動するワーカー・プロセス数

•

デフォルトで起動される

プロセス数は

PGA_AGGREGATE_TARGET、

PGA_AGGREGATE_LIMIT

により決まる

–

上記2つがある程度大きい場合、

(コア数)*(スレッド数)/2

•

各プロセスがPGAを使用

–

PGA合計使用量に加算される

•

右: oratopコマンド画面ショット

(18)

ポピュレーション: その他

•

IMCUの範囲を読み取り一貫性でデータを読み取る

–

"ORA-1555: Snapshot is too old" などのエラーが発生した場合は

自動的にリトライされる

•

ポピュレーション実行時のCPUリソースとメモリーの使用量

–

圧縮率レベルの指定やデータ(データ型、カーディナティなど)に依存

•

必ずバックグラウンドで行われる

•

V$IM_HEADERビューのTIME_TO_POPULATEカラムで個々のIMCUの

ポピュレーションにかかった時間を確認可能

PRODUCTS

CUSTOMERS

ORDERS

(19)

インメモリ領域の使用率の確認方法

•

V$INMEMORY_AREAビューを使用

•

1MBプールと64KBプールの両方に未使用領域がある場合

–

通常、64KBプールの方が"使用率"が低い

•

1MBプールに空き領域がない場合

–

64KBプールが枯渇することはない

SQL> SELECT * FROM V$INMEMORY_AREA;

POOL ALLOC_BYTES USED_BYTES POPULATE_STATUS CON_ID

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

1MB POOL 171781914624 81371594752

DONE

0

64KB POOL 42932895744 298975232

DONE

0

POOL ALLOC_BYTES USED_BYTES POPULATE_STATUS

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

1MB POOL 8186232832 8186232832

OUT OF MEMORY

(20)

インメモリ・カラム・ストア領域が枯渇する場合

•

ポピュレーションを行うプロセスは1MBプール領域を全て使い、1つでも多く

のブロックをインメモリ化する

–

部分的にインメモリ化される表が存在する可能性がある

•

エラーはアプリケーションのユーザーには返らない

–

非同期にバックグラウンドで実行されるため

•

alert.logに以下のメッセージが出力される

(21)

ポピュレーションに関する統計値

(22)

CPU待機クラス: Database In-Memory関連の待機イベント

•

Enterprise Manager Cloud Control 12c

のASH(Active Session History)

分析画面でCPU待機クラスへ

ドリルダウン

(23)

CPU待機クラス: Database In-Memory関連の待機イベント

•

ポピュレーション時のCPUリソース使用

は以下のように2種類に分けて集計

•

CPU: IM Prepopulate

–

優先度(CRITICAL、HIGH…)が付けられ

ているセグメントに対するポピュレーション

•

CPU: IM Populate

–

優先度NONEのセグメントに対して

オン・デマンドで行われるポピュレーション

(24)

Agenda

1

2

3

メモリー構造

ポピュレーション

インスタンス・レベルの設定と動作

オブジェクト・レベル、カラム・レベル設定

圧縮

プライオリティ

4

5

6

(25)

メモリー領域

•

INMEMORY_SIZEパラメータのみの設定で使用可能

–

設定可能な最小値は100MB

–

Enterprise Manager Cloud Control 12cでも設定可能

•

スタティックな領域で自動メモリー管理により増減されない

–

SGA_TARGET、SGA_MAX_SIZE、MEMORY_TARGET、MEMORY_MAX_TARGET で設定

されるメモリー容量にはINMEMORY_SIZEに割り当てられるサイズが含まれるため、

設定値を増加について検討が必要となる場合がある

•

ALTER SYSTEM FLUSHに相当するコマンドはない

–

個別(セグメント<表、パーティション>)は ALTER TABLE … NO INMEMORY 文で可能

•

COMPATIBLEパラメータを"12.1.0.0.0"以上に設定

(26)

Database In-Memoryを使うための初期化パラメータ設定例

SQL> ALTER SYSTEM SET SGA_TARGET=8G SCOPE=SPFILE;

SQL> ALTER SYSTEM SET INMEMORY_SIZE=1G SCOPE=SPFILE;

SQL> SHUTDOWN IMMEDIATE

SQL> STARTUP

SQL> SELECT * FROM V$SGA;

NAME

VALUE

--- ---

Fixed Size

2927176

Variable Size

570426808

Database Buffers

4634022912

Redo Buffers

13848576

In-Memory Area

1024483648

(27)

Database In-Memoryに関連する初期化パラメータ(1)

•

DBCAでデータベース作成時に上記の

パラメータの値を任意に設定可能

SQL> show parameter inmem

NAME TYPE VALUE

--- --- ---

inmemory_clause_default string

inmemory_force string DEFAULT

inmemory_max_populate_servers integer 64

inmemory_query string ENABLE

inmemory_size big integer 120000000

inmemory_trickle_repopulate_servers_percent integer 1

(28)

Database In-Memoryに関連する初期化パラメータ(2)

•

INMEMORY_CLAUSE_DEFAULT

–

デフォルトの圧縮レベル、優先度等を設定

•

注意点:

値に"INMEMORY …"と指定すると新規に作成される表はINMEMORY指定がない場合でも

インメモリ化される

•

INMEMORY_FORCE

–

"OFF"に設定することで "INMEMORY" 指定されている表もインメモリ化されなくなる

•

INMEMORY_MAX_POPULATE_SERVERS

–

ポピュレーション時の最大プロセス数を指定

(29)

Database In-Memoryに関連する初期化パラメータ(3)

•

INMEMORY_QUERY

–

インメモリ検索の有効化/無効化を指定

•

INMEMORY_TRICKLE_REPOPULATE_SERVERS_PERCENT

–

トリクル再ポピュレートのためにワーカープロセスが使用可能なCPUリソースの割合

(%)を設定

(30)

読み取り専用オープンでのDatabase In-Memory機能

•

ALTER DATABASE OPEN READ ONLYでのオープン時は内部的にDatabase

In-Memory機能が無効化される

•

Active Data Guardで スタンバイ・データベースを読み取り専用でオープン

してもDatabase In-Memory機能は使用できない

–

将来のバージョンでの対応を予定

–

ロジカル・スタンバイ・データベースおよびOracle GoldenGateの複製先では

(31)

Agenda

1

2

3

メモリー構造

ポピュレーション

インスタンス・レベルの設定と動作

オブジェクト・レベル、カラム・レベル設定

圧縮

プライオリティ

4

5

6

(32)

インメモリ・カラム・ストアにポピュレーションすることが

可能なオブジェクトの種類

•

表

–

1つの表内の特定の列のみ指定することも可能

•

パーティション

–

全てのタイプ(リスト、レンジ…)に対応

–

表レベルで設定された場合、全てのパーティションがインメモリ化される

–

サブ・パーティションも指定可能

•

マテリアライズド・ビュー

(33)

インメモリ・カラム・ストアにポピュレーションすることが

不可能な表

•

グローバル一時表(GTT)

•

外部表

•

索引構成表

•

クラスタ化表

•

SYSユーザーが所有する SYSTEM表領域、SYSAUX表領域のオブジェクト

•

ディスク上のサイズが64KB以下の表

•

Advanced Replicationが設定されている表

ORA-30657: operation not supported on external organized table

ORA-14451: この機能は一時表ではサポートされていません。

(34)

インメモリ・カラム・ストアにポピュレーションすることが

不可能なカラム

•

同一表中のインメモリ化が不可能なカラム以外はポピュレーションされる

•

サポートされないデータ型

–

LONG

–

インラインでないCLOB、BLOB

•

ENABLE STORAGE IN ROWの場合4KBまではインメモリ化される

–

4KB を超えるVARCHAR2、RAW

•

初期化パラメータMAX_STRING_SIZEにEXTENDEDを設定している場合

(35)

カラム・レベルでの指定

•

V$IM_COLUMN_LEVELビューで確認

•

プライオリティ と RAC 固有属性はカラム間で異なる設定はできない

•

圧縮レベルのみカラムごとに個別で設定が可能

•

パーティション毎に異なる設定はできない

–

ORA-14049: invalid ALTER TABLE MODIFY PARTITION option

SQL> ALTER TABLE sales

INMEMORY

NO INMEMORY

(PROD_ID);

SQL> SELECT TABLE_NAME, COLUMN_NAME, INMEMORY_COMPRESSION

FROM V$IM_COLUMN_LEVEL;

(36)

カラム・レベル:

(37)

Database In-Memory機能とDDL操作に関する注意点

•

インメモリ化するオブジェクトに対してアクティブなトランザクションがある

場合、ALTER TABLE … INMEMORYの実行時にORA-54エラーが発生

–

ORA-00054: リソース・ビジー。NOWAITが指定されているか、タイムアウトしました

–

ポピュレーション中にDML操作を行うことは可能

•

"圧縮" 変更(後述)によりインメモリ・カラム・ストア中の該当IMCU領域は無

効化および再ポピュレーションが行われる

•

"プライオリティ"変更(後述)により インメモリ・カラム・ストア中の該当IMCU

領域は無効化され再度ポピュレーションが行われる

(38)

DDL操作と再ポピュレーションの必要性

•

カラム追加: インメモリ・カラム・ストアに影響なし

–

ALTER TABLE … ADD

•

カラム削除: 表全体が一旦インメモリ・カラム・ストアから無効化 され再ポ

ピュレーションが発生する

•

カラム属性変更: 無効化されない

•

パーティション関連の操作

–

パーティションの交換操作(EXCHANGE PARTITION)では再ポピュレーションは発生し

ない

–

その他 MOVE / SPLIT / MERGE ではインメモリ・カラム・ストアからの無効化および再

(39)

パーティションの交換操作時の動作

•

ALTER … EXCHANGE PARTITION実行前にINMEMORY属性を非パーティション表に設定

April 4th

2014

April 5th

2014

April 6th

2014

April 7th

2014

April 8th

2014

April 9th

2014

April 4th

2014

April 5th

2014

April 6th

2014

April 7th

2014

April 8th

2014

April 9th

2014

1.外部表の作成

temp_sales

2.CTASで非パーティション表

にロード

Sales 表

Sales 表

temp_sales

3. INMEMORY

属性の設定

4.統計情報の収集

5. alter table sales exchange partition

(40)

確認:

*_TABLESビュー INMEMORY列

•

*_TABLESディクショナリ・ビューに

新規に

INMEMORY

列が追加

•

INMEMORY はセグメント属性

SQL> SELECT table_name, inmemory

FROM USER_TABLES;

TABLE_NAME

INMEMORY

--- ---

CHANNELS DISABLED

COSTS

CUSTOMERS DISABLED

PRODUCTS ENABLED

SALES

TIMES

DISABLED

•

*_TABLESビューではロジカル・オブ

ジェクトにはセグメント属性を表示

しない

•

COSTSとSALESはパーティション

化されている、つまり、ロジカ

ルオブジェクト

•

*_TAB_PARTITIONSビューにも

INMEMORY列が追加

(41)

確認:

INMEMORY属性が設定された表のステータス

•

新規ビュー

V$IM_SEGMENTS

•

EMCC 12cから参照可能な情報:

•

インメモリ・カラム・ストアにポピュレート

されたオブジェクト

•

現在のポピュレーション・タスクのステー

タス

•

圧縮率

SELECT segment_name name,

populate_status status

FROM v$IM_SEGMENTS;

NAME

STATUS

--- ---

PRODUCTS COMPLETED

SALES

STARTED

(42)
(43)

Agenda

1

2

3

メモリー構造

ポピュレーション

インスタンス・レベルの設定と動作

オブジェクト・レベル、カラム・レベル設定

圧縮

プライオリティ

4

5

6

(44)

IMCU内のカラムユニットごとに圧縮

メモリー

SALES

カラム型

フォーマット

IMCU#2

IMCU#4

flag NULL Bit Vector Run Lengths Length Vector Data Vector/ Dictionary # Runs

Dictionary Encoded Values CLA CRLA Dict Size

カラムユニット

ディクショナリ

ディクショナリ・コード

または

カラム・データ

flag NULL Bit Vector Run Lengths Length Vector Data Vector/ Dictionary # Runs

Dictionary Encoded Values CLA CRLA Dict Size

カラムユニット

ディクショナリ

ディクショナリ・コード

または

カラム・データ

(45)

カラム(列)型フォーマットで最も一般的な圧縮法:

ディクショナリ圧縮

日付

2014-05-01

2014-05-01

2014-05-01

お客様

商品

注文数

売上金額

店舗

品川支店

品川支店

品川支店

新宿支店

新宿支店

新宿支店

新宿支店

新宿支店

八王子支店

八王子支店

八王子支店

横浜支店

鈴木健司

菅野敏明

加山公一

高橋真由美

佐藤薫

橋元豊

筒井隆

藤田公彦

松田勝久

相内一也

沼田洋子

凪野隆志

AKIOASIS S

Arrays FX

Arrays FX

1

2

2

2

3

1

1

1

2

2

1

1

100,800

58,900

58,900

…

…

…

…

…

…

…

…

日付

商品

売上金額

2014-04-01

2014-04-01

2014-04-01

2014-04-01

2014-04-01

2014-04-01

2014-04-01

2014-04-01

2014-04-01

2014-04-01

79,800

158,800

149,800

158,800

199,400

68,700

68,700

68,000

100,800

iPhoenix 5x

iPhoenix 5x

iPhoenix 5x

iPhoenix 5x

iPhoenix 5x

Experience Z

Experience Z

AKIOASIS S

AKIOASIS S

iPhoenix 5x

Experience Z

AKIOASIS S

79,800

158,800

149,800

199,400

68,700

100,800

(46)

IMCU内のカラム・ユニット: EMP表のJOB列のケース

ディクショナリでエンコードされた値

データベクトル/ディクショナリ/

シンボルテーブル

カラムユニット ヘッダー

カラムユニット: JOB

ユニーク値の数(NDV) = 5

型: CHAR(10)

カラムの値

ビット表現 / 2進

ANALYST

000

CLERK

001

MANAGER

010

PRESIDENT

011

SALESMAN

100

000 | 011 | 010 | 000 | 011 | 001 | 100 | 000 | 011

ディクショナリ

・コードの並び

ディクショナリは

ポピュレーション時に

ソートされる

EMP表

JOB列

---

ANALYST

PRESIDENT

MANAGER

ANALYST

PRESIDENT

CLERK

SALESMAN

ANALYST

PRESIDENT

(47)

ビット・パッキング

•

ユニークな値の数が8以下の場合は上記のように3 bitでディクショナリへの

インデックスを保持できる

–

他の例: 都道府県

•

ユニークな値の数が47なので6 bitで可能 (2**6 = 64)

•

ビット・パッキングが選択された場合、圧縮率が高くなり、CPUキャッシュによ

り多くキャッシュすることができるため、処理速度の向上が期待できる

–

ビット・パッキングにより値を読み取る際に必要なCPUインストラクション数は増える

•

ビット・パッキングが選択されない場合は、8-bitや16-bitなどとなるようにパ

ディングされてメモリー中で保持されるため、圧縮率は下がる

000 | 011 | 010 | 000 | 011 | 001 | 100 | 000 | 011

カラムユニット: JOB

ユニーク値の数(NDV) = 5

型: CHAR(10)

(48)

ディクショナリ圧縮以外の圧縮法:

ランレングス圧縮(連長圧縮、Run Length Encoding:RLE)

カラム・ユニット

ディクショナリ・コード + ランレングス

の配列

データベクトル/ディクショナリ/

シンボルテーブル

カラム・ユニット:

JOB

ユニークな値の数: 5

カラムの

値

ビット表現 /

2進

ANALYST

000

CLERK

001

MANAGER

010

PRESIDENT

011

SALESMAN

100

000 | 011 | 010 | 001 | 011

ディクショナリ・コード

ディクショナリ・

メタデータ #3

[ 3,0 ] | [ 2,3 ] | [ 2,2 ]| [ 1,1 ] | [ 1,3 ]

Run Length ベクトル

[RL,Code]

ディクショナリ・メタデータ #1

EMP表

JOB列

---

ANALYST

ANALYST

ANALYST

PRESIDENT

PRESIDENT

MANAGER

MANAGER

CLERK

PRESIDENT

000

000

011

010

(49)

6段階の圧縮

•

NO MEMCOMPRESS

–

圧縮なし

•

MEMCOMPRESS FOR {DML | QUERY [LOW | HIGH]|CAPACITY [LOW | HIGH]}

SQL> ALTER MATERIALIZED VIEW mv1

INMEMORY

MEMCOMPRESS FOR QUERY

;

SQL> CREATE TABLE trades (Name varchar(20),

Desc varchar(200))

INMEMORY

(50)

6段階の圧縮

•

MEMCOMPRESS FOR DML

–

ある程度のデータ更新がかかるセグメントに適した圧縮レベル

•

MEMCOMPRESS FOR QUERY LOW

–

デフォルト圧縮レベル

–

この圧縮レベル以上(下記も含む)は前出のディクショナリやランレングス圧縮、ビット・パッキングを使用

•

MEMCOMPRESS FOR QUERY HIGH

–

上記QUERY LOWより高圧縮、下記CAPACITY LOWよりは低圧縮

•

MEMCOMPRESS FOR CAPACITY LOW

–

上記までに加え新規開発のアルゴリズムでOracleデータ型に特化した圧縮を適用

•

MEMCOMPRESS FOR CAPACITY HIGH

(51)

圧縮レベルとポピュレーション、クエリーの関係

圧縮レベル

NO

MEMCOMPRESS

FOR

DML

QUERY

LOW

QUERY

HIGH

CAPACITY

LOW

CAPACITY

HIGH

圧縮率

ポピュレーション時

CPU

使用量

クエリー速度

低

高

無

低

高

速

最 速

速

(52)

圧縮: その他

•

圧縮率は一般に2 – 20倍 (1/2 から 1/20)程度

•

EHCCと比較すると圧縮率は低い

–

圧縮しすぎるとSIMD処理のための前処理が多く必要になり高速スキャンできないため

•

IMCU毎、かつ、カラム毎に圧縮される

•

ディクショナリ作成時のソート処理などのため、ポピュレーション時にCPUリ

ソースが多く使われる

–

文字列はBINARYソート

•

型だけではなく実際の値(カーディナリティ等)により圧縮方法が決定される

(53)

圧縮: パーティション

•

パーティション毎に圧縮率を変えることが可能

•

3段階のレベル

–

"FOR DML"

DML頻度が多いパーティションや表に設定

–

"FOR QUERY"

多くの表/partitionに最適

–

"FOR CAPACITY"

アクセスの少ない表。クエリーは上記より低速に

•

ILM(Information Lifecycle Management)

ポリシーに合わせて圧縮レベルを切り替えることが容易

CREATE TABLE ORDERS ……

PARTITION BY RANGE ……

(PARTITION p1 ……

INMEMORY NO

MEMCOMPRESS

PARTITION p2 ……

INMEMORY

MEMCOMPRESS FOR DML,

PARTITION p3 ……

INMEMORY

MEMCOMPRESS FOR QUERY,

:

PARTITION p200 ……

INMEMORY

MEMCOMPRESS FOR CAPACITY

(54)

圧縮アドバイザ: Database In-Memory対応

COMP_INMEMORY_NOCOMPRESS

COMP_INMEMORY_DML

COMP_INMEMORY_QUERY_LOW

COMP_INMEMORY_QUERY_HIGH

COMP_INMEMORY_CAPACITY_LOW

COMP_INMEMORY_CAPACITY_HIGH

•

6段階の圧縮レベルに対応

•

内部的にはサンプルデータに

対し圧縮を試行

(55)

圧縮率

Enterprise Manager Cloud Control 12c

インメモリ・セントラル: 圧縮率の確認

(56)

Agenda

1

2

3

メモリー構造

ポピュレーション

インスタンス・レベルの設定と動作

オブジェクト・レベル、カラム・レベル設定

圧縮

プライオリティ

4

5

6

(57)

5段階のプライオリティ

•

NONE

–

該当テーブルへのアクセスによりポピュレーションが

トリガーされる

•

LOW ― CRITICAL

–

CREATE TABLE/ALTER TABLEなどの実行時にポピュレーション・タスクが

キューイングされる

–

プライオリティ別のキューが4本存在

–

DB起動時も同じようにキューイング

–

ポピュレーション完了後にDBをオープンするモードはない

•

ポピュレーション速度には影響しない

CREATE TABLE orders

(c1 number,

c2 varchar(20),

c3 number)

(58)

プライオリティ:NONE - オン・デマンドのポピュレーション

•

SELECT文によるクエリーが索引のみで結果が返される場合、ポピュレー

ションはトリガーされない

–

FULLヒントを付けることで明示的にポピュレーションを発生させられる

•

SELECT /*+ FULL(t1) */

•

トランザクションの中でFull Scanされる場合はトリガーされない

–

例: CREATE TABLE NO_INMEM_TBL1 AS

SELECT * FROM INMEM_TBL1

–

例: INSERT …

SELECT * FROM INMEM_TBL2

(59)

プライオリティ: LOW / MIDDLE / HIGH / CRITICAL

•

タスク・キューが2分間隔でpollされる

–

注意点:

ポピュレートされていないプライオリティがCRITICALに設定されている表があ

り、インメモリ・カラム・ストアに空きがない場合でも、ポピュレート済みのプライオリ

ティがLOWの表を落とす動作は起こらない

•

システム統計では"PrePopulate"と表現される

Wnnn

IMCO

ポピュレーション

タスク

Critical

High

Middle

Low

(60)

プロシージャによる明示的なポピュレーション

•

DBMS_INMEMORYパッケージを使用

•

INMEMORY属性がない表に対する実行ではエラーが発生する

SQL> alter table COMPTEST.TAB1 inmemory;

Table altered.

SQL> exec dbms_inmemory.populate('COMPTEST','TAB1');

PL/SQL procedure successfully completed.

SQL> alter table COMPTEST.TAB1 no inmemory;

Table altered.

SQL> exec dbms_inmemory.populate('COMPTEST','TAB1');

BEGIN dbms_inmemory.populate('COMPTEST','TAB1'); END;

*

ERROR at line 1:

(61)

Enterprise Manager Cloud Control 12c

インメモリ・セントラル: プライオリティの確認

(62)

まとめ – Database In-Memoryは容易な設定で利用可能

1.

使用するメモリー容量を設定

INMEMORY_SIZE = XXX GB

2.

インメモリ・カラム・ストアに格納するオブジェクトを指定

SQL> ALTER TABLE | PARTITION … INMEMORY;

(63)
(64)
D 1594172.1

参照

関連したドキュメント

The strategy to prove Proposition 3.4 is to apply Lemma 3.5 to the subspace X := (A p,2 ·v 0 ) ⊥ which is the orthogonal for the invariant form h·, ·i p,g of the cyclic space

The optimal interpolating vector σ is known as a vector-valued Lg- spline. The authors have defined a vector-valued Lg-spline to be the solu- tion of a variational

This yields a contravariant adjunction between pdv and the category KHaus of compact Hausdorff spaces, which restricts to a dual equivalence between KHaus and the proper subcategory

Theorem 4.8 shows that the addition of the nonlocal term to local diffusion pro- duces similar early pattern results when compared to the pure local case considered in [33].. Lemma

Algebraic curvature tensor satisfying the condition of type (1.2) If ∇J ̸= 0, the anti-K¨ ahler condition (1.2) does not hold.. Yet, for any almost anti-Hermitian manifold there

Correspondingly, the limiting sequence of metric spaces has a surpris- ingly simple description as a collection of random real trees (given below) in which certain pairs of

We study the theory of representations of a 2-group G in Baez-Crans 2- vector spaces over a field k of arbitrary characteristic, and the corresponding 2-vector spaces of

It is shown that if the data R satisfy the property of encoding a finite number of positive root systems, each corresponding to an Iwasawa nilpotent algebra, then the above