Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » SQL Anywhere サーバー データベース管理 » データベースのメンテナンス » SQL Anywhere データベースのトラブルシューティング

 

データベースサイズの予期しない変化について

データベースページは、ページのすべてのレコードが削除されると解放されます。解放されたデータベースページは再利用可能になりますが、ファイルから削除できません。ただし、今後 INSERT 文や UPDATE 文で解放されたページを使用できます。

挿入、更新、削除などの変更がデータベースに加えられるたびに、システム DB 領域内に格納されているロールバックログにエントリが追加されます。これらの操作が多数実行されてからコミットが実行されると、ロールバックログは非常に大きくなり、データベースのサイズが増大する可能性があります。

チェックポイントログは、システム DB 領域の最後に格納されています。データベースサーバーが停止すると、チェックポイントログはトランケートされ、システム DB 領域が小さくなります。DELETE または TRUNCATE 操作によって解放されたページは、今後再利用できるようにデータベースファイル内に残り、ファイルから削除できません。

データベースファイルのサイズが増大している場合、または期待どおりに減少しない場合は、次の操作を行います。

  • INSERT 文、UPDATE 文、または DELETE 文を使用する場合は、COMMIT を頻繁に実行します。COMMIT が実行されると、ロールバックログに割り付けられたページは、システム DB 領域内で再利用できるように解放されます。

  • UPDATE 文または DELETE 文を使用する場合、または INSERT 文を使用し、大きいインデックスが関連する場合は、CHECKPOINT を時々実行します。チェックポイントログ内のページは、各チェックポイント後にチェックポイントログで再利用できるようになります。

  • TRUNCATE TABLE を実行します。ページレベルの削除が実行されます。この場合、ページのコピーをチェックポイントログに追加したり、個々のローレベルの操作をロールバックログに追加したりする必要はありません。TRUNCATE TABLE によって解放されたページは、次回のチェックポイントの後でのみ再利用できます。TRUNCATE TABLE を実行すると、次の条件に当てはまる場合、ページレベルの削除が実行されます。

    • トランケートするテーブルへの外部キー、またはテーブルからの外部キーがない。
    • TRUNCATE TABLE がトリガー内で実行されていない。
    • TRUNCATE TABLE がアトミックオペレーションと組み合わせて実行されていない。
    • チェックポイントログページがシステム DB 領域ファイルの最後に書き込まれている。これらのページは、データベースが停止すると削除されます。

データベースの再構築によって、データベースのサイズが減少する場合があります。これは、再構築されたデータベースの空きページが少なくなるためです。