ブロック、エクステント、セグメント
データブロック
データブロックとは、データベースで管理するデータの最小単位、論理データベース記憶域(※) の最小単位:第 1 レベルである。
(※) Oracleによって管理されるもので OS では認識できない論理構造 ⇔ 物理構造
- データブロックサイズは、テーブルスペース を作成時にブロックサイズの指定が可能(作成後の変更は不可能)。
- ブロックサイズは 2K バイト 〜 32K バイトまで。( 2K、4K、8K、16、32K )
OS のブロックサイズ以上で、その倍数であること。32K バイトは一部の 64bitOS に限定される。
関連事項 ⇒ マルチブロックサイズ / データブロックサイズの選定
データブロックの中身(テーブル)
分類 | 要素 | 関連パラメータ |
ブロックヘッダ | 共通ヘッダ | KCBH |
固定トランザクションヘッダ ⇒ ITL | KTBBH |
可変トランザクションヘッダ ⇒ ITL | KTBIT×(INITRANS-1) |
データヘッダ | KDBH |
表ディレクトリ | KDBT |
行ディレクトリ | |
空き領域 | | PCTFREE |
ITL ⇔ トランザクションスロット | MAXTRANS |
データ領域 | | PCTUSED |
ITL ⇔ トランザクションスロット | MAXTRANS |
ターミネータ | | UB4 |
(オーバヘッドの合計) | 90+24×(INITRANS-1) | (Pentium + Linux) |
データ領域の関連事項
エクステント
エクステントは、データベースの記憶割り当てにおける論理単位(記憶域の第 2 レベル)
単一のデータファイルの連続したデータブロックで構成される。(このレベルでは、まだデータファイル間をまたげない。)
エクステントの先頭のブロックには、エクステントのディレクトリが格納される。
あるセグメントのエクステントが断片的に拡張されていくイメージ
|
セグメント
セグメントはエクステントの集合(記憶域の第 3 レベル)
セグメントは1つ以上のエクステントから構成される。
表領域内のオブジェクトのデータがすべて入っている。
複数のデータファイルで構成されたエクステントを同一セグメントにて利用可能。
セグメントの種類
データ・セグメント
パーティション化またはクラスタ化されていない表
パーティション表のパーティション
表のクラスタ
索引・セグメント
インデックス
一時・セグメント
一時的な作業領域、ソート処理、結合処理などに使われる(テンポラリ)
ロールバック・セグメント(UNDO 管理表 )
ロールバックセグメント
タイプパラメータ
ブロックを構成する要素のサイズは、以下の SQL にて取得できる。
SELECT * FROM V$TYPE_SIZE
WHERE TYPE IN ('KCBH', 'KTBBH', 'KTBIT','KDBH', 'KDBT', 'UB4');
タイプ名 | 説明 | サイズ(バイト:Intel x86 + Linux) |
KCBH | BLOCK COMMON HEADER | 20 |
KTBBH | TRANSACTION FIXED HEADER | 48*1 |
KTBIT | TRANSACTION VARIABLE HEADER | 24 |
KDBH | DATA HEADER | 14 |
KDBT | TABLE DIRECTORY ENTRY | 4 |
UB4 | UNSIGNED BYTE 4 | 4 |
関連事項