Search

OakieTags

Who's online

There are currently 0 users and 39 guests online.

Recent comments

Affiliations

Teradata Multi-level Partitioning

Full Scan量を減らしてパフォーマンスを向上させるというのはTeradataもExadata同じです。

Multi-level Partitioningの例 Teradata Magazine-September 2008より


CREATE TABLE Sales
(storeid INTEGER NOT NULL,
productid INTEGER NOT NULL,
salesdate DATE FORMAT 'yyyy-mm-dd' NOT NULL,
totalrevenue DECIMAL(13,2),
totalsold INTEGER,
note VARCHAR(256))
UNIQUE PRIMARY INDEX (storeid, productid, salesdate)
PARTITION BY (
RANGE_N(salesdate BETWEEN
DATE '2002-01-01' AND DATE '2008-12-31'
EACH INTERVAL '1' YEAR),
RANGE_N(storeid BETWEEN 1 AND 300 EACH 100),
RANGE_N(productid BETWEEN 1 AND 400 EACH 100));


TeradataではOracleでいうところのHash Partitioningされた状況でデータは保存されている。
テーブル内の各行は社員ID(Primary Index)をキーにして各AMP(Access Module Processor)に分散される。AMPは管理する(受け持つ)物理ディスクが決められていて各AMPのメモリ上にもディスク内のデータを保持することから「仮想ディスク」とも呼ばれる。

このハッシュ分散にレンジの概念を取り込むのがPartition Primary Index(PPI)です。
Teradataデータベースアーキテクチャ概説より

ここまで書くとOracleのHash PartitioningにLocal Indexを付けただけ?と勘違いしてしまいそうです。しかし、この図から解るようにAMP内で(複数の)セカンダリ・インデックスがソートされ管理されるのがTeradataのインデックスでOracleのB-Treeインデックスとは違い、Hash Subtable型になっている。