我有一个相当大的 BaseX 数据库(>2 Gb),其中包含大量 XML 文档。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>
我的 XQueries 主要基于属性选择器(即//value[@id='1' or @id='3']
),并且我发现在数据库中创建属性索引会大大提高查询性能。
我按月或按季度上传新的 XML 数据。导入新的 XML 文件后,我再次重新创建属性索引。
然而,我发现在重新启动服务器后(这似乎经常发生在我的服务提供商处),查询速度显着降低。感觉就像性能下降到没有属性索引的状态。如果我使用 BaseX GUI 打开数据库,看起来属性索引仍然存在。当我删除现有的属性索引并重新创建它时,我的 XQueries 的性能又快如闪电了。
我正在使用 BaseX 版本 7.7.1。
我想知道:
属性索引存储在哪里?它是否在 RAM 中(这可以解释为什么重启后查询速度会降低)?
如何配置我的数据库以使 XQuery 性能始终保持良好?
真的希望你能帮助我,因为这是我的生产网站上的一个重要问题。