benchmark bulk inserts Revision 643533376131 (Thu Feb 26 2009 at 16:29) - Diff Link to this snippet: https://friendpaste.com/5g0kOEPonxdXMKibNRzetJ Embed: manni perldoc borland colorful default murphy trac fruity autumn bw emacs pastie friendly Show line numbers Wrap lines 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849#!/bin/bash# usage benchbulk.sh dbnameBULKSIZE=1000DOCSIZE=100INSERTS=20DBURL="http://localhost:5984/$1"POSTURL="$DBURL/_bulk_docs"function make_bulk_docs() { ROW=0 SIZE=$(($1-1)) START=$2 BODYSIZE=$3 BODY=$(printf "%0${BODYSIZE}d") echo '{"docs":[' while [ $ROW -lt $SIZE ]; do printf '{"_id":"%020d", "body":"'$BODY'"},' $(($ROW + $START)) let ROW=ROW+1 done printf '{"_id":"%020d", "body":"'$BODY'"}' $(($ROW + $START)) echo ']}'}echo "Making $INSERTS bulk inserts of $BULKSIZE docs each"echo "Attempt to delete db at $DBURL"curl -X DELETE $DBURL -w\\necho "Attempt to create db at $DBURL"curl -X PUT $DBURL -w\\necho "Post to $POSTURL $INSERTS times"POSTS=0while [ $POSTS -lt $INSERTS ]; do STARTKEY=$[ POSTS * BULKSIZE] echo "starkey $STARTKEY bulksize $BULKSIZE" # switch comments on the following two lines to see how it's bash that's the slow part # time echo $(make_bulk_docs $BULKSIZE $STARTKEY $DOCSIZE) echo $(make_bulk_docs $BULKSIZE $STARTKEY $DOCSIZE) | curl -T - -X POST $POSTURL -w%{http_code}\ %{time_total}\ sec\\n -o out.file 2> /dev/null & let POSTS=POSTS+1donewaitcurl $DBURL -w\\n