iT邦幫忙

2021 iThome 鐵人賽

DAY 7
2
Mobile Development

如何用下班時間開發App經營副業系列 第 7

沒想太多就用了 MongoDB 的結果 (下)

除了(中)提到的問題以外,使用久了之後,又出現其他問題,有些是在 mongoDB 裡無法解決的,我們就在 application 層級解決。

變大後,首先最需要處理的就是效能問題。此外,還有 disk 大小本身也是用越多花越多錢。
所以要想辦法有效應用,想辦法降低 data 容量。

我們具體有做的是,定期在後端加入判斷,如果出現以後絕對不會說話的對話的配對(例如封鎖對方),我們會刪除來節省空間。

這邊奇怪的是,單純刪除也不會增加容量,一定要跑這個指令才行:
db.runCommand({compact: 'collection name'})
而且,跑這個指令,還要按照以下的步驟執行才可以。

	/*
	 * We do compaction by copying blocks from the end of the file to the
	 * beginning of the file, and we need some metrics to decide if it's
	 * worth doing.  Ignore small files, and files where we are unlikely
	 * to recover 10% of the file.
	 */

	/* Sum the available bytes in the initial 80% and 90% of the file. */

	/*
	 * Skip files where we can't recover at least 1MB.
	 *
	 * If at least 20% of the total file is available and in the first 80%
	 * of the file, we'll try compaction on the last 20% of the file; else,
	 * if at least 10% of the total file is available and in the first 90%
	 * of the file, we'll try compaction on the last 10% of the file.
	 *
	 * We could push this further, but there's diminishing returns, a mostly
	 * empty file can be processed quickly, so more aggressive compaction is
	 * less useful.
	 */

這個我們當時找了很久,才解決這個問題。

最新文章會分享在臉書:https://www.facebook.com/gigi.wuwu/
歡迎留言討論


上一篇
沒想太多就用了 MongoDB 的結果 (中)
下一篇
服務反應每慢一秒,轉換率就會掉 12%
系列文
如何用下班時間開發App經營副業30

尚未有邦友留言

立即登入留言