何百万ものレコードを持つ非常に大きなテーブル LARGEHISTORY テーブルがあります。現在、テーブルは 50GB のテーブル スペースを使用しており、最大許容テーブル スペースは DB2 (DB2 v9.5.301.436) で 65GB です。テーブルは非常に急速に成長しており、問題を克服するために非常に迅速に何かを行う必要があります。
データベース: DB2 v9.5.301.436
すでに検討しているソリューション:
以下の 2 つのオプションを使用して、表スペースのサイズを増やします。
LARGEHISTORY のテーブルスペースを 65GB から 2TB に変更
アドバンテージ:
- テーブルスペースを増やすために実行する必要があるコマンドはわずかです。
不利益:
膨大なダウンタイムを必要とする reorg を実行する必要があります。
表スペースの増加は、再編成を行わない限り効果を発揮しません
新しい別個の (2 TB) 表スペースを作成し、手順または挿入選択ステートメントを使用して LARGEHISTORY 表を古い表スペースから新しい表スペースに移動します。
アドバンテージ:
新しい表スペースを作成するために実行する必要があるコマンドはわずかです。
テーブルは新しいテーブル スペースに安全に移動できます。
不利益:
LARGEHISTORY をオフラインにして、移行が完了するまでトランザクションが発生しないようにする必要があります。
50 GB のデータをコピーするには、膨大なダウンタイムが必要になる場合があります。このような巨大なデータを処理できない可能性があるため、手順が失敗する可能性があります。
このような巨大なデータでは、insert select ステートメントが機能しない場合があります。
注: DB2 の最新バージョンには、ダウンタイムなしでテーブルを古いものから新しいものに移動する機能があります。
古いデータのアーカイブまたはプルーニング
アドバンテージ:
- スケジュールされたジョブを使用して簡単に実行できます。
不利益:
古いデータはオフラインになります。レポートを取得する必要がある場合は、手動で介入する必要があります。
既存のすべてのレポートが影響を受け、変更が必要になります。
テーブルとテーブルスペースを最適化してパフォーマンスを向上させるために、reorg を頻繁に実行する必要があります。
新しい表スペースに新しい表を作成し、古い表の名前を LARGEHISTORY_OLD に変更します
アドバンテージ:
- 新しいテーブルに新しいデータを非常に高速に簡単に挿入できます。
不利益:
取得中に、古いテーブルと新しいテーブルのすべてで結合/結合を利用するか、新しいビューを作成する必要があります。
ビューを使用してデータを更新することはできません (高価なマテリアライズド ビューを使用しない限り)
既存のすべてのレポートが影響を受け、変更が必要になります。
より良いオプションがあれば教えてください。現在、オプション 1.1 を検討しています。オプション 1.1 を使用すると、コードに影響があるかどうかわかりません。