Mongodb

如果不使用 TTL 索引,是否建議設置“–setParameter ttlMonitorEnabled=false”以獲得更好的性能

  • February 28, 2017

我們執行一些分片集群和許多副本集。我們的客戶不使用 TTL 索引。

如果我們禁用負責從具有 TTL 索引的集合中刪除文件的後台執行緒,會有更好的性能嗎?

mongod --setParameter ttlMonitorEnabled=false

我發現一個舊的(2013 年)生存時間(TTL)減慢了郵件列表上的 mongod 文章。我不知道這是邊緣情況還是一般優化。

引用自SERVER-10033

如果系統處於極端負載下或在中斷/損壞調查期間,可用於停止 TTL 刪除。單個全域(或每個 DB)設置比必須更新或刪除所有 TTL 索引更容易。

除非在極端情況下,如果您不使用該功能,我看不到這會產生任何明顯的影響,如果您正在使用該功能並承受重負載(停止刪除,直到負載基本消退),它旨在作為緊急措施。

由於您沒有在任何地方使用 TTL,所有MongoDB要做的就是掃描索引以查找包含該expireAfterSeconds欄位的索引。您連結的範例本身就是一個邊緣案例,沒有多少人在數據庫中有 25 萬個索引,但即使在這種情況下,對如此小的集合的讀取查詢system.indexes也不太可能使用足夠的資源來導致您出現問題。它可能會出現在慢查詢日誌中,但由於它基本上是無操作的並且只需要讀取鎖,因此對其他地方的影響很小。

這就是理論,如果您想判斷對特定案例的影響,請分析您的系統以便了解目前性能,然後在關閉它後對其進行分析。如果它確實有影響,那麼我相信工程師MongoDB想了解它(以及您的案例),以便他們可以評估該功能的執行方式並查看您看到的行為是否有意。

引用自:https://dba.stackexchange.com/questions/165681