自動拡張
こんにちは、PASSJ 休会ということでションボリな nagino です。
PASSJ Blog も閉鎖されてしまいますので、今後は基本的な事項を概観するような内容をここで触れていこうかと思います。
なぜか「自動拡張」というキーワードで検索・訪問されている方が多いようです。
通常自動拡張や自動圧縮は、初期に適切に設定を行えばトラブルを起こすような機能ではないので、なぜキーワードで目立つのか分からないのですが、簡単に概観してみます。
自動拡張自体は単純な機能でして、データベースの領域を使い切って不足したら、領域を自動的に拡張するという機能です。
対になる機能として、自動圧縮というのもあります。
デフォルトでは自動拡張が有効、自動圧縮が無効になっています。
自動拡張が行われる際はディスク IO 等による負荷が発生しますので、通常はあらかじめデータファイルのサイズを大きく確保し、且つ自動拡張のサイズは固定値である程度大きめの値とすることが多いようです。
自動拡張のサイズが小さいと、データファイルのフラグメンテーションが発生しやすいことや、大量のデータを追加するような処理で自動拡張が繰り返し行われてパフォーマンスが極度に劣化するのを避ける狙いがあります。
また、拡張サイズを可変値(現在のサイズに対する割合)に設定すると、データベースが大きくなってきた際に拡張サイズが極端に大きな値となってしまい、自動拡張のタイムアウトによるエラーや、拡張するだけのディスク容量の不足によるエラーが発生してしまいますので、固定値とすることが多いようです。
自動圧縮は、自動拡張と同様に負荷が発生しますし、圧縮した分将来的に再拡張される可能性を考えて、通常は無効のままとするのがお勧めです。
自動圧縮しないとディスクが不足するようであれば、ハードの性能不足ということですので、ディスクの追加を検討すべき状況であるといえます。