ページの先頭行へ戻る
Symfoware Server V10.0.0 トラブルシューティング集

9.3.1 コマンドでデータベースを更新する場合

データベースをコマンドで更新する場合によくある質問と、その回答について説明します。

挿入データ件数の全体に占める割合と、インデックス格納率が比例しないのはなぜか?

rdbuptコマンドを使用してデータベースの更新を行った際に、表に対する更新量の割合に対し、インデックスの格納率の上昇が大きくなります。

以下に、例を示します。

このような現象が起こるのは、キーの値および現状のインデックス(インデックス部、データ部の)状態により、インデックスのページの格納率が異なるためです。

Symfoware Serverで定義できるインデックスは、BTREE構造を採用しています。この構造は「任意の範囲検索」にも「順検索」にも高速な検索性能を発揮しますが、この構造の場合、格納率は挿入データ件数に比例しません。

たとえば、ページAAとページACの間に2件分のキー値をもつページABが割り込む場合には、結果ページ枚数は3ページとなります。また、ページAAとページACの間、ページACの後方にそれぞれ1件分づつ合計2ページ(ページAB、ページAD)が割り込む場合には、結果ページ枚数は4ページになります。つまり、同じ2件数の追加を行った場合でも、150%増加する場合と200%増加する場合が起こる可能性があります。また、ページ増加しない場合もあります。

参照

詳細は、“RDB運用ガイド(データベース定義編)”の“インデックスの格納構造の特徴”を参照してください。

ポイント

インデックスへのキー値の追加について

たとえば、更新した列がインデックスのキー値に含まれていない列の場合は、インデックスを更新する必要はないため、インデックスのページ格納率が増加することはありません。逆に、インデックスのキー値に含まれる列を更新した結果、キーの削除、追加が発生すれば、その延長で、使用ページ数が増加します。


キーの削除、追加ではなく、単純な追加であったとしても、既存のキー値並びの間への割り込みかたによって使用ページ数は変わってきます。