簡體   English   中英

在 MongoDB 中刪除大集合的最佳方法

[英]Best way to drop big collection in MongoDB

我有獨立的 MongoDB 實例版本 3.2。 存儲引擎是WiredTiger 刪除大集合(> 500Gb)以最小化獨占數據庫鎖定時間的最佳方法是什么? 2個解決方案之間會有時間差嗎?

  • 從集合中刪除所有文檔,刪除索引,刪除集合
  • 就放下收藏

附加信息,可能很重要:

  • 集合包含大約 200.000.000 個文檔
  • 集合只有一個_id索引
  • '_id' 看起來像{_id: {day: "2018-01-01", key:"someuniquekeybyday"}}

正確答案可能是:“掉落操作不是線性的”。 10Gb集合需要幾秒鍾,500Gb集合完全相同。

我已多次刪除1TB收藏,花了幾秒鍾。

ps為您提供一些新的東西,在評論中沒有看到:您有第三個選項 - 在此數據庫中制作其他集合的副本,然后在您的應用程序中切換數據庫。

我在 4.0 版中刪除了超過 1.4 TB 的集合。 操作用時不到 1 秒。

2022-03-15T01:17:25.688+0000 I REPL [replication-2] completing collection drop for order.system.drop.1647307045i163t6.feeds with drop optime { ts: Timestamp(1647307045, 163), t: 6 }(通知optime: { ts: 時間戳(1647307045, 163), t: 6 })

根據文檔,刪除操作將獲得對受影響數據庫的鎖定並將阻止所有操作,因此應用程序將在短時間內在數據庫操作中遭受輕微延遲。 在放棄大量收藏之前,請確保...

  • 從該集合上的應用程序中刪除所有讀/寫
  • 重命名為臨時集合以避免在刪除期間進行任何操作。
  • 選擇最少的流量時間來丟棄臨時集合。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM