edbond (owner)

Fork Of

gist: 79279 by jchris benchmarking CouchDB bulk i...

Revisions

gist: 93639 Download_button fork
public
Public Clone URL: git://gist.github.com/93639.git
Embed All Files: show embed
benchbulk.sh #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/bin/bash
 
# usage: time benchbulk.sh dbname
# it takes about 30 seconds to run on my old MacBook
 
BULKSIZE=1000
DOCSIZE=100
INSERTS=10
ROUNDS=10
DBURL="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\\n
 
echo "Attempt to create db at $DBURL"
curl -X PUT $DBURL -w\\n
 
echo "Running $ROUNDS rounds of $INSERTS inserts to $POSTURL"
RUN=0
while [ $RUN -lt $ROUNDS ]; do
 
POSTS=0
  while [ $POSTS -lt $INSERTS ]; do
STARTKEY=$[ POSTS * BULKSIZE + RUN * BULKSIZE * INSERTS ]
    echo "startkey $STARTKEY bulksize $BULKSIZE"
    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+1
  done
 
wait
let RUN=RUN+1
done
 
curl $DBURL -w\\n