2015-05-12 101 views
1

我有一個couchdb約16,000個相似的文件,每個約500字節。 db報告的統計數據(加入逗號):Couchdb磁盤大小10x聚合文檔大小

"disk_size":73,134,193,"data_size":7,369,551 

爲什麼磁盤大小是10x data_size?我期望,如果有的話,由於我使用默認(快速)壓縮,所以磁盤大小要小一些,這個數據應該是相當可壓縮的。

我對此數據庫沒有看法,每個文檔都有一個修訂版本。壓實效果很小。

下面是擊中DB URI完整輸出:

{"db_name":"xxxx","doc_count":17193,"doc_del_count":2,"update_seq":17197,"purge_seq":0,"compact_running":false,"disk_size":78119025,"data_size":7871518,"instance_start_time":"1429132835572299","disk_format_version":6,"committed_update_seq":17197} 
+0

是否有任何舊版本的文件?你嘗試過壓實嗎? https://wiki.apache.org/couchdb/Compaction 你可以使用「ls -liah」驗證磁盤上的大小嗎? – h4cc

+0

更新了問題:沒有舊版本,我嘗試了壓實,或多或少沒有效果。我想我只是好奇,如果這是正常的 - 有沒有人有沙發DB他們可以檢查? – BeeOnRope

+0

你是否從couchdb中刪除了任何文件?向你的數據庫(http:// localhost:5984/db_name)發出一個get請求,你會看到類似於「{」db_name「:」my_db「,」doc_count「:21,」doc_del_count「:0,」update_seq「 :32,「purge_seq」:0,「compact_running」:false,「disk_size」:49256,「data_size」:46513,「instance_start_time」:「1431492912363200」,「disk_format_version」:6,「committed_update_seq」:32}'對doc_del_count感興趣。 couchdb「保留」可能會增加數據庫大小的已刪除文檔。 –

回答

2

我覺得你得到正確的結果。 couchdb以4KB大小的文件存儲文件(目前無法找到參考文件,但可以通過存儲空白文件進行測試)。這是一個文件的最小大小是4kb。

這意味着即使您存儲每個文檔500字節的數據,couchdb也會將其保存爲每個4KB的塊。所以,做一個粗略的計算

17193*4*1024+(2*4*1024)= 70430720

這似乎是在78119025還是少一點的範圍,但可能是由於方式文件存儲在磁盤上。

+0

謝謝,我認爲這很接近它。它似乎並不是實際上總是將文檔存儲在4K塊中,而是每寫入僅附加日誌,形成DB的基礎始終需要4K(如此處所述)(http://guide.couchdb .ORG /草案/ btree.html)。由於我一個接一個地寫文檔,因此每個文檔支付4K。這不是一個固有的限制,雖然 - 當我將這個數據庫複製到另一個主機時,大小下降了8倍,並且磁盤大小現在每個都接近總文檔大小。文檔分批寫入,因此4K限制被繞過。 – BeeOnRope

+0

感謝您的鏈接!我正在尋找它。如果您將文檔插入[批量](https://wiki.apache.org/couchdb/HTTP_Bulk_Document_API#Modify_Multiple_Documents_With_a_Single_Request),則會發生類似的情況。所以如果你想減少數據庫的大小,你也可以將你的請求批量添加到一個批量插入。它將針對存儲進行優化。 –