有没有办法在具有数百个森林的离线集群中专门针对大型数据库(> 100TB)改进MarkLogic重建索引时间?
如何在重新编制索引期间禁用本地磁盘故障转移(副本林)?这会减少重新索引时间吗?
答案 0 :(得分:2)
重新索引主要是IO绑定。提高性能相当于提高IO吞吐量 - 因此答案是相同的。 由于确实希望将您的副本林索引,因此您不应该禁用它们 - 这只会将IO推迟到它们,直到您重新启用它们为止。 既然你说这是一个离线' cluster - 意思是,我认为没有生成流量,所以你可以自由地重新配置可能暂时干扰请求处理的东西 - 这是学习调整IO性能的好机会。
IO性能是一个复杂的主题 - (抱歉没有简单的答案)。 首先考虑的是您的物理拓扑 - 您的本地磁盘的内容,位置和方式。连接的 ?防爆。如果这是在云环境或数据中心,您的本地磁盘'可能是NAS或网络驱动器,在这种情况下,您的网络IO可能是瓶颈。
另一个考虑因素是群集的大小以及是否可以为此目的增加它 - 这取决于林所在的位置以及它们是否易于连接到不同的服务器。
一般情况下,我建议同时监控MarkLogic"监控历史记录"和您的操作系统级性能工具。目标是在接近您的理论能力但不会更多的情况下实现一致的IO活动。如果你推得太厉害'然后你会得到一个大的IO backlogic(IO队列长度) - 这会导致很多的骚扰'并且最终如此长的延迟,系统可能会开始超时并重试。
因此,您需要限制重新索引,以便在任何一个物理磁盘上不会立刻变得太难。有很多方法可以做到这一点,在marklogic中使用reindex和merge参数,将物理磁盘与森林放置平衡,暂时使一些森林离线,然后“旋转”。他们到位等 这需要一些实验才能找到合适的组合。
最后一个注意事项 - 太长时间"是主观的。重新索引100TB是很多IO。这将花费很长时间。你的目标应该是看看如何避免让事情变得更糟,不要尝试不可能的事情,让事情花费更少的时间。您可以计算粗略的最短时间。假设一个索引需要对所有数据进行完整的读写(这需要更多但是这是一个开始)。您的集群使用其他方法读取和写入100TB数据需要多长时间?这是完全重新索引的低标准 优化您的操作系统的基本IO吞吐量和MarkLogic索引应该自然地遵循。