I published some Python scripts to help me evaluate the performance of CouchDB (https://github.com/jlcheng/couchdb-test). I was hoping the folks here can help me understand what I am seeing.
The raw spreadsheet of my findings: https://spreadsheets0.google.com/spreadsheet/pub?hl=en_US&hl=en_US&key=0AtagEcs-wlFDdGVfMGItdUIxQXcyTmZxdVdOMUw4TWc&output=html First, I've found that the Document Update Handler API performed worse than using Python to get, modify, then update the document when the application code is running on the same machine as CouchDB. This is surprising to me. It leads me to believe that when the network is not a bottleneck, it might be better to avoid update handers. Second, the insert performance is not as good as I'd hoped - at least for large documents (100 kB+). The update performance is even worse. When using the "benchbulk.sh" script with a DOCSIZE of 100 kB and a BULKSIZE of 15, I am seeing about 12 inserts per second. Using my Python script, I was seeing 81 inserts/second and 30 updates/seconds for 100 kB documents. This is on a single 7200 rpm SATA drive. A write performance of 3 MB per second seems low. In brief, there are two things I can learn more about: Is is expected for the Document Update API to be slower? Two, does this kind of write and update performance look right? This is a Ubunut 10.01 system with 4GB RAM 900GB 7200 rpm SATA drive CouchDB 1.0.2 compiled using https://github.com/couchone/build-couchdb And the stock CouchDB 0.10.0 from Ubuntu has similar performance as well.
