17.10 - PACKDISKおよびFreeSpacePercent - Advanced SQL Engine - Teradata Database

Teradata Vantage™- データベースの管理

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
管理
Publication ID
B035-1093-171K-JPN
Language
日本語 (日本)

Vantageが空きシリンダを使い切ったら、Ferret PACKDISK(オーバーヘッドのコストがかかる操作)を実行してデータをコンパクト化し、空いているシリンダ数を増やすことができます。

PACKDISK操作の頻度を少なくするには、次のようにします。

  • いずれ行を追加されることになるテーブルのFastLoadを行なうときに、行を追加するのに十分な空き領域を用意できるようFSPを5~20 %に設定します。
  • データの追加と削除が行なわれる履歴データの場合、行を追加するのに十分な空き領域を設けておきます。

    例えば、6か月の履歴を格納するテーブルでは、削除までの日数に最大31日を追加します。

    • 1~6か月を追加する場合は、1/7 = 14.3%
    • 1.5か月の場合の安全プランは、1.5/7.5 = 20%

      空き領域の割合を20%に設定します。

  • 履歴データと断片化シリンダの場合は次のようにします。
    • 大きなテーブルの場合、FSPを20~35 %に設定するか、またはMaxBlockSizeの設定サイズを小さくします(例えば16 KB)。
    • 空き領域を、適切な個数のデータ ブロックにします。少なくとも6~12ブロックの空き領域ができるようにします。
  • ALTER TABLE文にIMMEDIATE句を指定します。

テーブル ヘッダーには、各テーブルのFSPが示されます。デフォルトFSPを変更した場合、その次にテーブルを変更するときにその新しいデフォルト値がシステムで使われます。FSPは、ブロック サイズには影響しません。

PACKDISKを使ったその他のユーティリティの実行

PACKDISKを頻繁に使用する場合、以下のツール(そのうちの2つはユーティリティ)を使って、空き領域の合計を測定します。

  • DBC.DiskSpaceV
  • FerretコマンドであるSHOWSPACEは、シリンダごとの空き領域のパーセントを示します。

    その数値が低いと、システムで隣接領域が必要になったときに、大規模なシリンダ パックの実行によって性能が影響を受けます。

  • SHOWSPACEに似たFerretコマンドであるSHOWFSPは、パッキングの必要のある特定のテーブルの検出に有効です。

    SHOWFSPは、個別のテーブルに関する、解放可能なシリンダ数を示します。シリンダ数は、指定された必要な空き領域のパーセンテージに基づいて計算されます。このコマンドは、PACKDISKが実行された場合に最も多くのシリンダを解放すると予想されるテーブルを特定するときに便利です。

シリンダの分割

FreeSpacePercentの値が0%の場合、新規の表のロードによる今後のデータの巨大化に備えて、ディスク シリンダ上で空き領域を予約しないことを示します。つまり、新規のテーブルのロード時には、現在の設定どおりに、各データ シリンダが100%満杯になるまでパッキングが行なわれます。

行の挿入の前にテーブルからデータを削除するのでない限り、値を0%にすることによって、行を初めてテーブルに挿入するとき(最初のロード後)に、確実にシリンダが分割されるようになります。シリンダの分割はシステム入出力オーバーヘッドを生じるので、多くの場合はデータ シリンダの不適切な使用につながります。

PACKDISK、FSPとシリンダの割り当て

変更対象が過密であるテーブルのデータをパッキングすると、多くのシリンダ割り当てが行なわれるため、空きシリンダ数が減少する結果となります。例えば、10シリンダを占めているテーブルにあるデータを0%空き領域にパックする場合は、各シリンダに1行を挿入すること(合計は10行だけ)は、最大10の新しい追加シリンダをVantageで割り当てることが必要になることがあります。

ただし、PACKDISKがFSPが10%であるテーブルで実行されている場合、元のテーブルは11シリンダを占めることになります。同じ10行がこのテーブルに挿入されているとき、最も可能性があるのは、既存のシリンダで利用可能な領域があり、テーブルは引き続き11シリンダのみを消費することです。以前に使用されていた他の9シリンダが空きとして残ります。したがって将来新しいシリンダ リクエストで利用可能になります。同じ目標を達成する別の方法は、まずテーブルを更新し、次にPACKDISK処理を実行し、実際に必要ではないシリンダを解放します。

この例でPACKDISKコマンドを実行すると、9の空きシリンダが節約になりますが、手動での操作が必要です。これを実現する別の方法は、CREATE TABLEやALTER TABLE文でFSPに10%を指定し、AutoCylPackによってバックグラウンド アクティビティの一部としてテーブルを調整することです。この例で通常の方法で、テーブルに新しい行を追加する場合、AutoCylPackの方法が適切です。また、新しい行を追加することが滅多にないのであれば、テーブルを0%の空き領域でパッキングしたままにしておき、必要が生じたときにPACKDISKを実行するのが賢明です。