表のデータの再分配を行うときは、ユーティリティーは以下のことを行います。
表が完全に再配分される前に操作が失敗した場合は、 ユーティリティーは次のことを行う。
データの配分時にログ・スペース所要量の見積もりを行うことは重要です。 ログは、データを再配分する各データベース区画ごとの INSERT 操作および DELETE 操作を受け入れるのに十分の大きさでなければなりません。 ロギング所要量は、 最多のデータを失うデータベース区画、 または最多のデータを獲得するデータベース区画で最も大きくなります。 より多くのデータベース区画に移動しようとしている場合は、 現行データベース区画の、新しいデータベース区画数に対する比率が、 INSERT 操作および DELETE 操作の数を決定する助けになります。
たとえば、4 つのデータベース区画から 5 つのデータベース区画への移動の場合、 元の 4 つのデータベース区画の約 20 パーセントのデータが、 新規データベース区画に移動します。 これは、 元の 4 つのデータベース区画が、 各データベース区画のデータの合計に基づいて、 それぞれ 20 パーセントの DELETE 操作を行うことを意味します。 新規データベース区画では、 すべての INSERT 操作 (つまり、 元の 4 つのデータベース区画すべてで行った DELETE 操作と同じ数に相当する操作) を行います。
上記の例は、 均等なデータの配分が行われることを前提としています。 区分化キーに多数の NULL 値が存在する場合のような、 データの配分が均等に行われない場合もあります。 このような場合、 すべての行は、あるデータベース区画では以前の区分化体系により、 また別のデータベース区画では新規の区分化体系により存在します。 その結果、 これら 2 つのデータベース区画で必要とされるログ・スペースの量が増え、 おそらく、均等な配布を想定した場合の計算量を超えることになります。
実際の計算を行うときは、 (20 パーセントなどの) 変更のパーセンテージに、 最大の表のサイズを乗算しなければなりません。 これを行うのは、 各表の再配分が、 単一のトランザクションとして実行されるためです。
注: | ただし、最大の表は均等に配分されているが、 (たとえば) 2 番目に大きな表には 1 つまたは複数の膨張したデータベース区画が存在する場合もあります。 そのような場合には、 最大の表ではなく、 2 番目に大きな表の使用を検討することをお勧めします。 |
データベース区画で挿入および削除されるデータの最大量を計算した後、 その数を 2 倍して、 活動ログのピーク・サイズを判別します。 このサイズが活動ログ限界の 32 GB を超える場合、 複数のステップでデータ再配分を行わなければなりません。 "makepmap"というユーティリティーを使用すれば、各ステップで 1 つずつ、 一連のターゲット区分化マップを生成することができます。