Hitachi

Hitachi Advanced Database システム構築・運用ガイド


11.20.1 ディクショナリ表およびシステム表を再編成する理由

HADBユーザが,実表に対してSQL文やコマンドを実行した場合,HADBサーバによって自動的にディクショナリ表(実表)およびシステム表(実表)も更新されることがあります。その際,ディクショナリ表(実表)およびシステム表(実表)に無効な行データが増加することがあります。無効となった行データは,ディスクから削除されません。

ディクショナリ表(実表)およびシステム表(実表)に無効な行データが増加し続けた場合,ディクショナリ表(実表)およびシステム表(実表)を格納するディスクの空き容量が不足し,最終的にディクショナリ表(実表)およびシステム表(実表)の更新が発生するような運用は実行できなくなります。例えば,バックグラウンドインポートによるデータインポートやチャンクのマージなどは実行できなくなります。

そのため,定期的にディクショナリ表(実表)およびシステム表(実表)を再編成して,無効な行データを削除する必要があります。ディクショナリ表(実表)およびシステム表(実表)の再編成は,adbreorgsystemdataコマンドで行います。

ディクショナリ表(実表)およびシステム表(実表)に無効な行データが増加するタイミングについては,「表11‒12 ディクショナリ表(実表)に無効な行データが増加するタイミング」および「表11‒13 システム表(実表)に無効な行データが増加するタイミング」を確認してください。

ディクショナリ表(実表)に無効な行データが増加するタイミングを,次の表に示します。

表11‒12 ディクショナリ表(実表)に無効な行データが増加するタイミング

項番

ディクショナリ表(実表)の種類

ディクショナリ表(実表)に無効な行データが増加する操作

1

SQL_TABLES

  • 定義系SQLによる実表,外部表,ビュー表,またはインデクスの削除

  • CREATE TABLE文による表の定義※1

  • CREATE INDEX文によるインデクスの定義

  • ALTER TABLE文による表定義の変更

  • ALTER VIEW文によるビュー表の再作成

2

SQL_TABLE_PRIVILEGES

  • 定義系SQLによる実表,外部表,またはビュー表の削除

  • ALTER TABLE文による表定義の変更

  • ALTER VIEW文によるビュー表の再作成

  • GRANT文による権限の付与

  • REVOKE文による権限の取り消し

3

SQL_VIEWS

  • 定義系SQLによる実表※2,外部表※2,またはビュー表の削除

  • ALTER TABLE文による表定義の変更

  • ALTER VIEW文によるビュー表の再作成

  • REVOKE文による権限の取り消し

4

SQL_COLUMNS

  • 定義系SQLによる実表,外部表,またはビュー表の削除

  • ALTER TABLE文による表定義の変更

  • ALTER VIEW文によるビュー表の再作成

5

SQL_DBAREAS

  • 定義系SQLによる実表,またはインデクスの削除

  • CREATE TABLE文による表の定義

  • CREATE INDEX文によるインデクスの定義

  • adbmodareaコマンドによるデータ用DBエリアの削除,または拡張

6

  • SQL_DIV_TABLE

  • SQL_TABLE_CONSTRAINTS

  • SQL_KEY_COLUMN_USAGE

  • SQL_REFERENTIAL_CONSTRAINTS

  • 定義系SQLによる実表の削除

  • ALTER TABLE文による表定義の変更

7

SQL_DATATYPE_DESCRIPTORS

定義系SQLによる外部表,またはビュー表の削除

8

  • SQL_INDEXES

  • SQL_DIV_INDEX

  • SQL_INDEX_COLINF

  • 定義系SQLによるインデクスの削除

  • ALTER TABLE文による表定義の変更

9

SQL_VIEW_TABLE_USAGE

  • 定義系SQLによるビュー表の削除

  • ALTER TABLE文による表定義の変更

  • ALTER VIEW文によるビュー表の再作成

10

  • SQL_VIEW_OBJECT

  • SQL_DEFINE_ENVIRONMENT

  • 定義系SQLによるビュー表の削除

  • ALTER VIEW文によるビュー表の再作成

11

SQL_DEFINE_SOURCE

定義系SQLによるビュー表の削除

12

SQL_FOREIGN_SERVERS

  • 定義系SQLによる外部サーバの削除

  • ALTER SERVER文による外部サーバの定義変更

13

SQL_SCHEMATA

定義系SQLによるスキーマの削除

14

SQL_USERS

  • 定義系SQLによるHADBユーザの削除

  • ALTER USER文によるHADBユーザの情報変更

  • GRANT文による権限の付与

  • REVOKE文による権限の取り消し

15

SQL_AUDITS

DROP AUDIT文による監査対象定義の削除

注※1

主キーを参照する外部キーが増えた場合が対象です。

注※2

ビュー表が無効になる場合が対象です。

システム表(実表)に無効な行データが増加するタイミングを,次の表に示します。

表11‒13 システム表(実表)に無効な行データが増加するタイミング

項番

システム表(実表)の種類

システム表(実表)に無効な行データが増加する操作

1

  • STATUS_TABLES

  • STATUS_COLUMNS

  • STATUS_INDEXES

  • 定義系SQLによる表やインデクスの削除

  • adbgetcstコマンドによるコスト情報の収集や削除

  • ALTER TABLE文による表名の変更

  • ALTER TABLE文による列名の変更

  • ALTER TABLE文による列の削除

2

STATUS_CHUNKS

  • 定義系SQLによるマルチチャンク表の削除

  • ALTER TABLE文によるマルチチャンク表の表名変更

  • PURGE CHUNK文によるチャンクの削除

  • TRUNCATE TABLE文によるマルチチャンク表に格納されているデータの一括削除

  • 作成モードによるマルチチャンク表へのデータインポート(adbimportコマンドに-dオプションを指定して実行したとき)

  • バックグラウンドインポートによるマルチチャンク表へのデータインポート(adbimportコマンドに-bオプションを指定して,かつ--status waitオプションを指定しないで実行したとき)

  • 追加モードによるマルチチャンク表へのデータインポート,かつチャンクコメントの変更(adbimportコマンドに-mオプションを指定して実行したとき)

  • adbidxrebuildコマンドによるインデクスの再作成(バックグラウンドインポートによるマルチチャンク表へのデータインポートが中断したあとに実行したとき)

  • adbmergechunkコマンドによるチャンクのマージ

  • adbchgchunkcommentコマンドによるチャンクのコメントの設定,変更および削除

  • adbchgchunkstatusコマンドによるチャンクの状態変更

  • adbarchivechunkコマンドによるチャンクのアーカイブ

  • adbunarchivechunkコマンドよるチャンクのアンアーカイブ

3

STATUS_SYNONYM_DICTIONARIES

adbsyndictコマンドによる同義語辞書の登録,更新および削除

注※

処理対象の表やインデクスに対して,コスト情報を収集している場合が対象です。