多数の XML ドキュメントを含むかなり大きな BaseX データベース (>2 Gb) があります。XML ファイルは本質的に非常にフラットです。典型的な xml ファイルの簡単な例:
<document id="doc_id_1234">
<value id="1">value 1</value>
<value id="2">value 2</value>
<value id="3">value 3</value>
</document>
私の XQuery は主に属性セレクター (つまり//value[@id='1' or @id='3']
) に基づいており、データベースに属性インデックスを作成すると、クエリのパフォーマンスが大幅に向上することがわかりました。
毎月または四半期ごとに新しい XML データをアップロードしています。新しい XML ファイルをインポートした後、属性インデックスを再作成します。
ただし、サーバーの再起動後 (サービス プロバイダーでは頻繁に発生するようです)、クエリ速度が大幅に低下することがわかりました。アトリビュート インデックスが存在しない状態になると、パフォーマンスが低下するように感じます。BaseX GUI を使用してデータベースを開くと、属性インデックスがまだそこにあるように見えます。既存の属性インデックスを削除して再作成すると、XQuery のパフォーマンスが再び電光石火の速さになります。
BaseX バージョン 7.7.1 を使用しています。
私が知りたいのですが:
属性インデックスはどこに保存されますか? それはRAMにありますか(再起動後にクエリ速度が低下する理由を説明します)?
XQuery のパフォーマンスが一貫して良好になるようにデータベースを構成するにはどうすればよいですか?
これは私の制作ウェブサイトの重要な問題であるため、私を助けてくれることを本当に願っています.