使(shi)用文檔數(shu)據庫(ku)服務時,如果實(shi)例(li)的磁(ci)盤使(shi)用率過高或完全(quan)被使(shi)用,將會(hui)導致實(shi)例(li)不(bu)可?。
本章節(jie)幫助(zhu)您分析解決DDS實(shi)例(li)磁盤使用率高的問題(ti)。
查看磁盤使用情況
DDS目前提(ti)供(gong)如下兩種方(fang)法用于查看實例磁(ci)盤的使用情況。
- 通過DDS控制臺查看磁盤使用情況。
您可(ke)以登錄DDS控制臺,單(dan)擊目標實(shi)例名稱,進入(ru)“基(ji)本信息”頁面,在(zai)“存儲(chu)空(kong)間”區域可(ke)以查(cha)看到當前實(shi)例的磁盤使用情況。
圖 查看磁盤使用情況

- 通過查看監控指標(磁盤利用率和磁盤使用量)判斷實例磁盤的使用情況。
如何查看監控指標請參見查看監控指標。
圖(tu) 查看磁盤使用情(qing)況


解決方案
- 對于集群實例,可能是因為選擇和設置的分片不合理導致數據分布不均衡,從而引起磁盤空間使用率高的情況。
此時,可以對數據庫集合進行合適的分片,具體操作請參見設置數據分片以充分利用分片性能。
- 隨著業務數據的增加,原來申請的數據庫磁盤容量不足。此時建議擴容磁盤空間,確保磁盤空間足夠。
-
集群實例,請參見擴容集群實例的磁盤空間。
-
副本集實例,請參見擴容副本集實例的磁盤空間。
如(ru)果原有實例規格(ge)的磁(ci)盤(pan)已是最大(da)的,請先升級規格(ge)。
- 集群實例,請參見變更集群實例的CPU和內存規格。
- 副本集實例,請參見變更副本集實例的CPU和內存規格。
- 存在大量過期的數據文件占用磁盤空間,此時需要及時處理過期數據文件。例如:如果整個庫不需要了,則可以執行dropDatabase命令進行刪除,從而快速釋放磁盤空間。
- 后臺數據處理機制原因。
因為無論是(shi)寫(xie)入(ru)(ru)、更新或刪(shan)除等操作(包(bao)括(kuo)索引(yin)插入(ru)(ru)和(he)刪(shan)除等操作),在后臺(tai)實(shi)際上都會(hui)轉(zhuan)成寫(xie)入(ru)(ru)。因為底(di)層的存儲引(yin)擎(WiredTiger和(he)RocksDB),采用(yong)都是(shi)appendOnly機(ji)制(zhi)。只有當存儲引(yin)擎內(nei)部(bu)數(shu)據狀(zhuang)態滿足一(yi)定(ding)條件后,會(hui)觸發內(nei)部(bu)的compaction操作,進行數(shu)據壓縮,進而釋放磁盤空間。
所以有(you)時候會(hui)發現,磁盤占(zhan)用(yong)量比實際數(shu)據量大,實際上(shang)這只是“看(kan)起(qi)來大”,并(bing)不會(hui)影響用(yong)戶的使(shi)用(yong)。因為內部有(you)些數(shu)據壓(ya)縮(suo)(suo),是延時操作,沒有(you)立即(ji)執行。隨著(zhu)數(shu)據的繼續寫(xie)入,會(hui)觸發后臺執行數(shu)據壓(ya)縮(suo)(suo)清理空(kong)間。