目的
PACKDISKコマンドは、対象範囲のテーブルに関連付けられたストレージ上のデータを配列(パックおよびアンパック)し、ストレージの空き領域の割合(FSP)を空のままとします。これにより現在割り当てられているストレージ内でテーブルが拡大し、新しいストレージの割り当て用にシリンダを解放できます。
構文
- /Y
- ユーザーへの確認を行なわないことを指定します。
- FREESPACEPERCENT
- FREE
- FSP
- オプションとして、対象範囲のテーブル用のシリンダ上で、PACKDISKが未使用の状態にしておく必要のあるストレージ領域の割合を指定します。この空き領域の割合(FSP)により、テーブルが適所で拡大し、新しい空きストレージ シリンダを割り当てる必要性を遅らせます。
- number
- 対象範囲のテーブル用のシリンダ内に残っているストレージ領域の割合。
- FORCE
- PACKDISKに対して強制的にテーブル データをFREESPACEPERCENT値にパックさせます。これは、CREATE TABLE文またはALTER TABLE文を使用して設定されている可能性のある現在のFSP値と関係なく行なわれます。CREATE TABLEまたはALTER TABLEで設定されたFSPを持つ表の場合、PACKDISKのFORCEオプションを使用した結果は一時的なもののみです。周期的なバックグラウンドのAutoCylPackタスクを実行する時、CREATE TABLE文またはALTER TABLE文を使用して、表の空き領域をFSP値の設定に戻します。FORCEが使用されない場合、PACKDISKは、CREATE TABLEまたはALTER TABLEを使用して明示的に設定された現在のFSP値を順守します。明示的FSPのない表の場合、PACKDISKはDBS制御で定義されたシステム デフォルトを使用します。
Ferret INQUIRE (INQ)コマンドおよびABORTコマンドを使用して、コマンド実行中に処理状況を確認、または処理を中断することができます。
使用上の注意
PACKDISKは、現在定義されているFerret対象範囲のテーブルにシリンダをパックします。Ferretコマンドの範囲の詳細については、SCOPEを参照してください。
パックはシリンダに適用され、それらのシリンダ内部の個々のデータ ブロックの中のスペースには適用されません。データ ブロック サイズはPACKDISK操作後も同一に維持されます。
Teradata Databaseでは、一部のファイル システム エラーについて、影響を受ける特定のデータ サブテーブルやインデックス サブテーブル、またはデータ サブテーブルやインデックス サブテーブルの行の連続した範囲(「領域」)を識別することができます。 その場合、Teradata Databaseでは、影響を受けるサブテーブルまたは領域だけをダウンとマークします。 これにより、ダウンしているサブテーブルまたは行にはアクセスする必要がないトランザクションを、データベースのクラッシュや再始動を伴わずに実行できるため、システムのパフォーマンスと可用性が向上します。
PACKDISKでダウンしている領域が検出されると、それらの領域はスキップされ、スキップされた領域の合計の割合が表示されます。
FSP設定の優先順位
空き領域の割合(FSP)は、データ ロード操作中にシリンダに残される必要のある空き領域の最少量を指定します。これにより、表の将来の更新のためにスペースが確保されます。読み取り専用のテーブルは拡大しないため、空き領域を必要としません。
FSPは多くの場所で指定可能であるため、PACKDISKが空きの状態にしておく領域の容量は、次の方法で決定されます。
- PACKDISK FREESPACEPERCENTオプションがFORCEオプションと共に使用される場合、PACKDISKは指定されたFREESPACEPERCENTにパックされます。FREESPACEPERCENTオプションの使用制限も参照してください。
- PACKDISK FORCEオプションが使用されない場合、CREATE TABLE文またはALTER TABLE文を使用してテーブルが作成または変更されたときに指定されたFSPが優先されます。
CREATE TABLEおよびALTER TABLEの詳細については、<Teradata Vantage™ SQLデータ定義言語-構文規則および例、B035-1144>を参照してください。
- テーブルが作成または変更されたときにFSPが指定されなかった場合、PACKDISKはPACKDISK FREESPACEPERCENTオプションで指定される値にパックされます。
- テーブルが作成または変更されたときにFSPが指定されず、PACKDISK FREESPACEPERCENTオプションが使用されない場合、PACKDISKはFreeSpacePercent DBS制御設定で指定される、FSPシステムのデフォルトの値にパックされます。
詳細については、DBS制御(dbscontrol)を参照してください。
FREESPACEPERCENTオプションの使用制限
- FSPの最適値を判別するために、小さなプロト型テーブルを対象範囲として前もってテストしている場合。
- 将来、シリンダのパックを最適に行なえるように、調整が必要と思われるライブ テーブルで、いろいろなFSPを後ほどテストする場合。
AutoCylPackのバックグラウンド タスクが周期的に実行され、テーブルが作成または変更されたときに指定されたレベルにシリンダFSPを戻します。または、テーブルに対してFSPが指定されなかった場合、AutoCylPackはDBS制御内で定義されたFSP用のシステム デフォルトにシリンダを戻します。
PACKDISK FREESPACEPERCENTオプションの使用によりPACKDISK実行用に異なるFSP値が明示的に指定される場合、AutoCylPackバックグラウンド タスクは、いずれかの時点で、これらのデフォルト値にFSP値を戻します。
FSPの最適値を選択
シリンダで確保しておく空き領域の最適値は、サイトで使用するワークロード、テーブル、アプリケーションそれぞれの混在状況に大きく左右されます。
PACKDISKが シリンダをパックする方法のため、プロシージャが完了した後にもシリンダによっては断片化が残っていることがあります。この場合、 シリンダの断片化を解消するため、DEFRAGMENTコマンドを使用してください。詳細は、DEFRAGMENTを参照してください。PACKDISKの対象範囲はVPROCまたはTABLEのいずれかです(両方は不可)。
SHOWFSPコマンドはシリンダ使用状況に関する情報を表示し、PACKDISKコマンドの効果を評価するのに役立ちます。特に、緩やかにパックされたテーブルを見つけるためにSHOWFSPを使用できます。
SHOWFSPコマンドは、PACKDISKが特定のFSPで実行された場合に一部の シリンダを解放または消費する表の名前、およびそのような表のスペース使用状況を表示します。詳細は、SHOWFSPを参照してください。対象範囲には、1つまたは複数のテーブル、1つまたは複数のvproc、またはシステム全体を含めることができます。
最適なFSP値を選択するための一般的な指針については、FreeSpacePercentを参照してください。
適切なFSP値を選択するための追加の指針については、<Teradata Vantage™ - データベース管理、B035-1093>を参照してください。
ミニ シリンダ パック
空きシリンダの数が、DBS制御レコード内のMiniCylPackLowCylProdに指定されたしきい値以下である場合、ファイル システムはミニ シリンダ パック(MiniCylPack)をバックグラウンドの操作として自動的に実行します。その他の詳細は、MiniCylPackLowCylProdを参照してください。
テーブルに対して指定されたFSPを順守しようと、MiniCylPackが開始します。 テーブルがCREATE TABLE またはALTER TABLEを使用して作成または変更されたか、最後にPACKDISKがテーブルで実行された場合にも、MiniCylPackが開始します。 以前に定義されたFSPが十分な領域を利用できない場合、MiniCylPackはFSPを5%減少させ、再試行します。 この動作は、必要なシリンダが解放されるか、MiniCylPackがFSPゼロに達するまで継続しますが、それでも領域が解放されない場合があります。
MiniCylPack により影響を受けるテーブルが、新しいシリンダを使わずに成長できるよう空き領域の利用を要求する場合、この操作によってシステム性能は最適ではなくなる可能性があります。例えば、MiniCylPackが何度も行なわれると、いわゆるスラッシング状態が発生することがあります。これは、ストレージが密にパックされすぎて成長の余地がなくなり、新しいシリンダを表スペースに割り振る必要が頻繁に生じるために発生します。このアクションによって、使用可能なシリンダ プールからシリンダが除かれるため、さらにMiniCylPackが必要となり、この悪循環の結果としてスラッシングが生じます。
シリンダの空き領域を適正なレベルに維持するため定期的にバックグラウンドで実行されるタスクAutoCylPackにより、PACKDISKやMiniCylPacksの必要性を減らすことができます。ただし、MiniCylPackはすべてシステムのパフォーマンスにマイナスの影響を与えるので、システムのシリンダ使用量を監視する必要があります。
監視対象 | 実行内容 |
---|---|
シリンダの使用状況 | FerretのSHOWSPACEコマンドを使用する。 |
MiniCylPackの発生状況 | ソフトウェア イベント ログ(DBC.SW_Event_Log)、またはLinuxイベント ログ/var/log/messagesをチェックする。 |
PACKDISK操作を必要な頻度にスケジュールして、MiniCylPackの発生を避けてください。
MiniCylPackの詳細については、<Teradata Vantage™ - データベース管理、B035-1093>を参照してください。
例: 実行中のFerret PACKDISK
Ferret ==> packdisk Tue Dec 08, 2009 16:10:54 : Packdisk will be started On All AMP vprocs Do you wish to continue based upon this scope?? (Y/N) y Tue Dec 08, 2009 16:10:56 : Packdisk has been started On All AMP vprocs Type 'ABORT' to stop the command before completion Type 'INQUIRE' to check on progress of command Tue Dec 08, 2009 16:18:29 : vproc 0 response Packdisk completed successfully. Freed up 24 (000018) large cylinders Tue Dec 08, 2009 16:18:32 : vproc 1 response Packdisk completed successfully. Freed up 25 (000019) large cylinders Packdisk has completed