1
這個簡單的問題...Couch DB - 從視圖或ID中檢索單個文檔會更快嗎?
是這樣;
http://host/database/docid
比這更快;
http://host/database/_design/category/_view/specific/?key=docid
我期望索引視圖會更快,但我不能確定,詳細的答案會很好。
這個簡單的問題...Couch DB - 從視圖或ID中檢索單個文檔會更快嗎?
是這樣;
http://host/database/docid
比這更快;
http://host/database/_design/category/_view/specific/?key=docid
我期望索引視圖會更快,但我不能確定,詳細的答案會很好。
沒有深入到技術細節,讓我們試着描述整個過程:
對於網址:
http://host/database/docid
O(logn)
操作的觀點:
http://host/database/_design/category/_view/specific/?key=docid
include_docs=true
查詢參數,這就是意志花費你額外的I/O操作正如你看到的,請求看法是有點比文件ID要求更加複雜。
下面是使用由wrk文檔ID的僞基準:
Running 1m test @ http://host/database/docid
8 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 48.35ms 7.14ms 102.98ms 83.13%
Req/Sec 250.38 24.81 323.00 74.06%
Latency Distribution
50% 45.99ms
75% 50.98ms
90% 57.95ms
99% 74.01ms
119880 requests in 1.00m, 103.71MB read
Requests/sec: 1997.91
Transfer/sec: 1.73MB
並使用視圖:
Running 1m test @ http://host/database/_design/category/_view/specific/?key=docid
8 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 61.06ms 13.68ms 178.97ms 79.74%
Req/Sec 200.38 28.80 263.00 71.60%
Latency Distribution
50% 57.05ms
75% 66.98ms
90% 77.01ms
99% 112.99ms
96071 requests in 1.00m, 28.69MB read
Requests/sec: 1601.06
Transfer/sec: 489.55KB
和查看與include_docs=true
:
Running 1m test @ http://host/database/_design/category/_view/specific/?key=docid&include_docs=true
8 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 82.95ms 13.26ms 200.98ms 77.46%
Req/Sec 145.91 15.11 192.00 73.28%
Latency Distribution
50% 80.77ms
75% 88.97ms
90% 98.97ms
99% 124.98ms
69988 requests in 1.00m, 69.89MB read
Requests/sec: 1166.27
Transfer/sec: 1.16MB
然而,視圖是不通過他們的ID獲取文件。它們是數據庫的二級索引,並允許以更多不同的方式查找數據。他們支持減少操作,分組,這對統計非常有用。