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

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - データベース管理 » データベースの保守 » データベースの検証

 

データベース検証時のパフォーマンスの改善

大規模なデータベースを、テーブルとその最大インデックスを格納するのに十分なキャッシュがないサーバ上で実行している場合、そのデータベースに対して VALIDATE TABLE 文を実行すると時間がかかる場合があります。このような場合には、テーブルのすべてのページがインデックスごとに 1 回以上読み込まれることが多くなります。また、インデックス・ルックアップで全比較が必要な場合は、ページの読み込み回数がページ数ではなくテーブルのロー数に比例することがあります。

検証にかかる時間を短縮するには、VALIDATE TABLE 文で WITH EXPRESS CHECK オプションを使用するか、dbvalid ユーティリティで -fx オプションを使用します。データベースのサイズ、キャッシュのサイズ、使用する検証の種類によって異なりますが、これらの 2 つの機能によって、検証の実行にかかる時間を大幅に短縮できます。

エクスプレス検証では、テーブルの各ローが読み込まれ、すべてのカラムが評価されます。各インデックスは 1 回完全にスキャンされ、検査によってインデックスで参照されているローがテーブルに存在することが確認されます。エクスプレス・チェック・オプションでも、個々のインデックス・ページの妥当性が検査されます。テーブルのロー数はインデックスのエントリ数と同じである必要があります。エクスプレス・オプションで時間が短縮されるのは、各ローについて個々のインデックス・ルックアップを実行しないためです。

エクスプレス・チェック機能では個々のルックアップを実行しないため、エクスプレス検証機能を使用すると一部のインデックス破損を見逃してしまう可能性がまれにあります。インデックス破損が発生した場合でも、検証によってすべてのデータが読み込めることが確認されているため、データベースをアンロードし再構築することによってデータをリカバリできます。また、ALTER INDEX 文の REBUILD 句を使用してインデックス破損を修正することもできます。ALTER INDEX 文を参照してください。