Home

Awesome

SQL-Benchmark

A synthetic benchmark to compare the performance of various sql-drivers for Go's database/sql package

Results (2013-11-02)

Older Results

Contributed Results

Setup

MySQL

thread_cache_size = 16
query_cache_limit = 2M
query_cache_size = 128M

Linux

Notes

$ go run main.go benchmarks.go
Warming up mymysql godrv...
Warming up Go-MySQL-Driver 1.0...
Warming up Go-MySQL-Driver 1.1...

Run Benchmarks...

SimpleExec 250000 iterations
mymysql godrv
 3.844984027s 	    65020 queries/sec	    7 allocs/query	    351 B/query
 3.832080666s 	    65239 queries/sec	    7 allocs/query	    351 B/query
 3.817775996s 	    65483 queries/sec	    7 allocs/query	    351 B/query
 -- avg 65247 qps;  median 65239 qps
Go-MySQL-Driver 1.0
 3.602866751s 	    69389 queries/sec	    4 allocs/query	    113 B/query
 3.599880038s 	    69447 queries/sec	    4 allocs/query	    113 B/query
 3.591707362s 	    69605 queries/sec	    4 allocs/query	    113 B/query
 -- avg 69480 qps;  median 69447 qps
Go-MySQL-Driver 1.1
 3.569295906s 	    70042 queries/sec	    3 allocs/query	    97 B/query
 3.578053109s 	    69870 queries/sec	    3 allocs/query	    97 B/query
 3.572950976s 	    69970 queries/sec	    3 allocs/query	    97 B/query
 -- avg 69961 qps;  median 69970 qps

PreparedExec 250000 iterations
mymysql godrv
 3.68239709s 	    67891 queries/sec	    8 allocs/query	    392 B/query
 3.685228641s 	    67838 queries/sec	    8 allocs/query	    392 B/query
 3.690438516s 	    67743 queries/sec	    8 allocs/query	    392 B/query
 -- avg 67824 qps;  median 67838 qps
Go-MySQL-Driver 1.0
 3.46375733s 	    72176 queries/sec	    6 allocs/query	    167 B/query
 3.463701957s 	    72177 queries/sec	    6 allocs/query	    167 B/query
 3.465739159s 	    72135 queries/sec	    6 allocs/query	    167 B/query
 -- avg 72163 qps;  median 72176 qps
Go-MySQL-Driver 1.1
 3.418759203s 	    73126 queries/sec	    5 allocs/query	    149 B/query
 3.418744609s 	    73126 queries/sec	    5 allocs/query	    149 B/query
 3.428505491s 	    72918 queries/sec	    5 allocs/query	    149 B/query
 -- avg 73057 qps;  median 73126 qps

SimpleQueryRow 250000 iterations
mymysql godrv
 5.802717679s 	    43083 queries/sec	    26 allocs/query	    1177 B/query
 5.803354897s 	    43079 queries/sec	    26 allocs/query	    1177 B/query
 5.800961587s 	    43096 queries/sec	    26 allocs/query	    1177 B/query
 -- avg 43086 qps;  median 43083 qps
Go-MySQL-Driver 1.0
 5.063697563s 	    49371 queries/sec	    13 allocs/query	    395 B/query
 5.056738087s 	    49439 queries/sec	    13 allocs/query	    395 B/query
 5.068211838s 	    49327 queries/sec	    13 allocs/query	    395 B/query
 -- avg 49379 qps;  median 49371 qps
Go-MySQL-Driver 1.1
 4.985966338s 	    50141 queries/sec	    12 allocs/query	    363 B/query
 4.942562121s 	    50581 queries/sec	    12 allocs/query	    363 B/query
 4.935405828s 	    50654 queries/sec	    12 allocs/query	    363 B/query
 -- avg 50458 qps;  median 50581 qps

PreparedQueryRow 250000 iterations
mymysql godrv
 6.245600097s 	    40028 queries/sec	    29 allocs/query	    1227 B/query
 6.256448195s 	    39959 queries/sec	    29 allocs/query	    1226 B/query
 6.238429435s 	    40074 queries/sec	    29 allocs/query	    1227 B/query
 -- avg 40020 qps;  median 40028 qps
Go-MySQL-Driver 1.0
 5.351447088s 	    46716 queries/sec	    17 allocs/query	    457 B/query
 5.340188319s 	    46815 queries/sec	    17 allocs/query	    457 B/query
 5.341302407s 	    46805 queries/sec	    17 allocs/query	    457 B/query
 -- avg 46779 qps;  median 46805 qps
Go-MySQL-Driver 1.1
 5.119802775s 	    48830 queries/sec	    14 allocs/query	    382 B/query
 5.100032785s 	    49019 queries/sec	    14 allocs/query	    382 B/query
 5.098174033s 	    49037 queries/sec	    14 allocs/query	    382 B/query
 -- avg 48962 qps;  median 49019 qps

PreparedQueryRowParam 250000 iterations
mymysql godrv
 6.878633952s 	    36344 queries/sec	    32 allocs/query	    1263 B/query
 6.9165302s 	    36145 queries/sec	    32 allocs/query	    1263 B/query
 6.888402455s 	    36293 queries/sec	    32 allocs/query	    1263 B/query
 -- avg 36261 qps;  median 36293 qps
Go-MySQL-Driver 1.0
 5.598532572s 	    44655 queries/sec	    21 allocs/query	    540 B/query
 5.591264361s 	    44713 queries/sec	    21 allocs/query	    540 B/query
 5.680375421s 	    44011 queries/sec	    21 allocs/query	    540 B/query
 -- avg 44459 qps;  median 44655 qps
Go-MySQL-Driver 1.1
 5.455894144s 	    45822 queries/sec	    15 allocs/query	    400 B/query
 5.461734165s 	    45773 queries/sec	    15 allocs/query	    400 B/query
 5.470208259s 	    45702 queries/sec	    15 allocs/query	    400 B/query
 -- avg 45766 qps;  median 45773 qps

EchoMixed5 250000 iterations
mymysql godrv
 8.773040358s 	    28496 queries/sec	    58 allocs/query	    2406 B/query
 8.596984382s 	    29080 queries/sec	    58 allocs/query	    2406 B/query
 8.657759663s 	    28876 queries/sec	    58 allocs/query	    2406 B/query
 -- avg 28817 qps;  median 28876 qps
Go-MySQL-Driver 1.0
 6.823789206s 	    36637 queries/sec	    32 allocs/query	    1093 B/query
 6.829033082s 	    36608 queries/sec	    32 allocs/query	    1092 B/query
 6.825584568s 	    36627 queries/sec	    32 allocs/query	    1092 B/query
 -- avg 36624 qps;  median 36627 qps
Go-MySQL-Driver 1.1
 6.212412594s 	    40242 queries/sec	    17 allocs/query	    644 B/query
 6.201953199s 	    40310 queries/sec	    17 allocs/query	    644 B/query
 6.227740014s 	    40143 queries/sec	    17 allocs/query	    644 B/query
 -- avg 40232 qps;  median 40242 qps

SelectLargeString 50000 iterations
mymysql godrv
 3.710482335s 	    13475 queries/sec	    26 allocs/query	    21688 B/query
 3.72813078s 	    13412 queries/sec	    26 allocs/query	    21688 B/query
 3.71555593s 	    13457 queries/sec	    26 allocs/query	    21688 B/query
 -- avg 13448 qps;  median 13457 qps
Go-MySQL-Driver 1.0
 3.382473045s 	    14782 queries/sec	    13 allocs/query	    10656 B/query
 3.38769337s 	    14759 queries/sec	    13 allocs/query	    10656 B/query
 3.366275121s 	    14853 queries/sec	    13 allocs/query	    10656 B/query
 -- avg 14798 qps;  median 14782 qps
Go-MySQL-Driver 1.1
 3.273157066s 	    15276 queries/sec	    12 allocs/query	    10608 B/query
 3.279537597s 	    15246 queries/sec	    12 allocs/query	    10608 B/query
 3.282647996s 	    15232 queries/sec	    12 allocs/query	    10608 B/query
 -- avg 15251 qps;  median 15246 qps

SelectPreparedLargeString 50000 iterations
mymysql godrv
 3.729359051s 	    13407 queries/sec	    31 allocs/query	    21752 B/query
 3.709282036s 	    13480 queries/sec	    31 allocs/query	    21752 B/query
 3.718004082s 	    13448 queries/sec	    31 allocs/query	    21752 B/query
 -- avg 13445 qps;  median 13448 qps
Go-MySQL-Driver 1.0
 3.30230472s 	    15141 queries/sec	    18 allocs/query	    10728 B/query
 3.287424383s 	    15209 queries/sec	    18 allocs/query	    10728 B/query
 3.290013005s 	    15198 queries/sec	    18 allocs/query	    10728 B/query
 -- avg 15183 qps;  median 15198 qps
Go-MySQL-Driver 1.1
 3.24534887s 	    15407 queries/sec	    15 allocs/query	    10632 B/query
 3.243725426s 	    15414 queries/sec	    15 allocs/query	    10632 B/query
 3.242123356s 	    15422 queries/sec	    15 allocs/query	    10632 B/query
 -- avg 15414 qps;  median 15414 qps

SelectLargeBytes 50000 iterations
mymysql godrv
 3.758672532s 	    13303 queries/sec	    26 allocs/query	    21688 B/query
 3.736869351s 	    13380 queries/sec	    26 allocs/query	    21688 B/query
 3.824912123s 	    13072 queries/sec	    26 allocs/query	    21688 B/query
 -- avg 13252 qps;  median 13303 qps
Go-MySQL-Driver 1.0
 3.288067334s 	    15207 queries/sec	    13 allocs/query	    10656 B/query
 3.289624359s 	    15199 queries/sec	    13 allocs/query	    10656 B/query
 3.28935065s 	    15201 queries/sec	    13 allocs/query	    10656 B/query
 -- avg 15202 qps;  median 15201 qps
Go-MySQL-Driver 1.1
 3.268010834s 	    15300 queries/sec	    12 allocs/query	    10608 B/query
 3.266943391s 	    15305 queries/sec	    12 allocs/query	    10608 B/query
 3.272072635s 	    15281 queries/sec	    12 allocs/query	    10608 B/query
 -- avg 15295 qps;  median 15300 qps

SelectPreparedLargeBytes 50000 iterations
mymysql godrv
 3.704054898s 	    13499 queries/sec	    31 allocs/query	    21752 B/query
 3.707255824s 	    13487 queries/sec	    31 allocs/query	    21752 B/query
 3.700564381s 	    13511 queries/sec	    31 allocs/query	    21752 B/query
 -- avg 13499 qps;  median 13499 qps
Go-MySQL-Driver 1.0
 3.293667657s 	    15181 queries/sec	    18 allocs/query	    10728 B/query
 3.281278474s 	    15238 queries/sec	    18 allocs/query	    10728 B/query
 3.284310328s 	    15224 queries/sec	    18 allocs/query	    10728 B/query
 -- avg 15214 qps;  median 15224 qps
Go-MySQL-Driver 1.1
 3.242004446s 	    15423 queries/sec	    15 allocs/query	    10632 B/query
 3.250628059s 	    15382 queries/sec	    15 allocs/query	    10632 B/query
 3.241874523s 	    15423 queries/sec	    15 allocs/query	    10632 B/query
 -- avg 15409 qps;  median 15423 qps

SelectLargeRaw 50000 iterations
mymysql godrv
 3.495386785s 	    14305 queries/sec	    24 allocs/query	    11419 B/query
 3.487362519s 	    14337 queries/sec	    24 allocs/query	    11419 B/query
 3.487310296s 	    14338 queries/sec	    24 allocs/query	    11419 B/query
 -- avg 14327 qps;  median 14337 qps
Go-MySQL-Driver 1.0
 3.085953618s 	    16202 queries/sec	    11 allocs/query	    397 B/query
 3.07629808s 	    16253 queries/sec	    11 allocs/query	    397 B/query
 3.078047696s 	    16244 queries/sec	    11 allocs/query	    397 B/query
 -- avg 16233 qps;  median 16244 qps
Go-MySQL-Driver 1.1
 3.056899867s 	    16356 queries/sec	    10 allocs/query	    348 B/query
 3.059649175s 	    16342 queries/sec	    10 allocs/query	    348 B/query
 3.059414835s 	    16343 queries/sec	    10 allocs/query	    348 B/query
 -- avg 16347 qps;  median 16343 qps

SelectPreparedLargeRaw 50000 iterations
mymysql godrv
 3.485924755s 	    14343 queries/sec	    29 allocs/query	    11483 B/query
 3.486648758s 	    14340 queries/sec	    29 allocs/query	    11483 B/query
 3.493145476s 	    14314 queries/sec	    29 allocs/query	    11483 B/query
 -- avg 14333 qps;  median 14340 qps
Go-MySQL-Driver 1.0
 3.079810302s 	    16235 queries/sec	    16 allocs/query	    473 B/query
 3.075175601s 	    16259 queries/sec	    16 allocs/query	    472 B/query
 3.080132071s 	    16233 queries/sec	    16 allocs/query	    473 B/query
 -- avg 16242 qps;  median 16235 qps
Go-MySQL-Driver 1.1
 3.034226559s 	    16479 queries/sec	    13 allocs/query	    374 B/query
 3.035156325s 	    16474 queries/sec	    13 allocs/query	    373 B/query
 3.035375902s 	    16472 queries/sec	    13 allocs/query	    373 B/query
 -- avg 16475 qps;  median 16474 qps

PreparedExecConcurrent1 500000 iterations
mymysql godrv
 7.412726791s 	    67452 queries/sec	    8 allocs/query	    392 B/query
 7.595283865s 	    65830 queries/sec	    8 allocs/query	    392 B/query
 7.582002016s 	    65946 queries/sec	    8 allocs/query	    392 B/query
 -- avg 66409 qps;  median 65946 qps
Go-MySQL-Driver 1.0
 6.921190296s 	    72242 queries/sec	    6 allocs/query	    167 B/query
 6.898444843s 	    72480 queries/sec	    6 allocs/query	    166 B/query
 6.899012692s 	    72474 queries/sec	    6 allocs/query	    166 B/query
 -- avg 72399 qps;  median 72474 qps
Go-MySQL-Driver 1.1
 6.842107045s 	    73077 queries/sec	    5 allocs/query	    149 B/query
 6.825865048s 	    73251 queries/sec	    5 allocs/query	    149 B/query
 6.831175178s 	    73194 queries/sec	    5 allocs/query	    149 B/query
 -- avg 73174 qps;  median 73194 qps

PreparedExecConcurrent2 500000 iterations
mymysql godrv
 3.44565992s 	    145110 queries/sec	    8 allocs/query	    392 B/query
 3.505009461s 	    142653 queries/sec	    8 allocs/query	    392 B/query
 3.446869762s 	    145059 queries/sec	    8 allocs/query	    392 B/query
 -- avg 144274 qps;  median 145059 qps
Go-MySQL-Driver 1.0
 2.90463481s 	    172139 queries/sec	    6 allocs/query	    167 B/query
 2.899396938s 	    172450 queries/sec	    6 allocs/query	    166 B/query
 2.90158597s 	    172320 queries/sec	    6 allocs/query	    166 B/query
 -- avg 172303 qps;  median 172320 qps
Go-MySQL-Driver 1.1
 2.819298666s 	    177349 queries/sec	    5 allocs/query	    149 B/query
 2.828106403s 	    176797 queries/sec	    5 allocs/query	    149 B/query
 2.82974316s 	    176694 queries/sec	    5 allocs/query	    149 B/query
 -- avg 176947 qps;  median 176797 qps

PreparedExecConcurrent4 500000 iterations
mymysql godrv
 3.42759382s 	    145875 queries/sec	    8 allocs/query	    392 B/query
 3.434183403s 	    145595 queries/sec	    8 allocs/query	    392 B/query
 3.422888817s 	    146075 queries/sec	    8 allocs/query	    392 B/query
 -- avg 145848 qps;  median 145875 qps
Go-MySQL-Driver 1.0
 2.955758093s 	    169161 queries/sec	    6 allocs/query	    167 B/query
 2.956442816s 	    169122 queries/sec	    6 allocs/query	    167 B/query
 2.956962873s 	    169092 queries/sec	    6 allocs/query	    167 B/query
 -- avg 169125 qps;  median 169122 qps
Go-MySQL-Driver 1.1
 2.902781851s 	    172249 queries/sec	    5 allocs/query	    149 B/query
 2.893675059s 	    172791 queries/sec	    5 allocs/query	    149 B/query
 2.881353501s 	    173530 queries/sec	    5 allocs/query	    149 B/query
 -- avg 172856 qps;  median 172791 qps

PreparedExecConcurrent8 500000 iterations
mymysql godrv
 3.500235814s 	    142848 queries/sec	    8 allocs/query	    392 B/query
 3.507999161s 	    142531 queries/sec	    8 allocs/query	    392 B/query
 3.497887883s 	    142943 queries/sec	    8 allocs/query	    392 B/query
 -- avg 142774 qps;  median 142848 qps
Go-MySQL-Driver 1.0
 3.026177405s 	    165225 queries/sec	    6 allocs/query	    167 B/query
 3.026883385s 	    165186 queries/sec	    6 allocs/query	    167 B/query
 3.020821566s 	    165518 queries/sec	    6 allocs/query	    167 B/query
 -- avg 165310 qps;  median 165225 qps
Go-MySQL-Driver 1.1
 2.954903265s 	    169210 queries/sec	    5 allocs/query	    150 B/query
 2.965571144s 	    168602 queries/sec	    5 allocs/query	    150 B/query
 2.96929521s 	    168390 queries/sec	    5 allocs/query	    150 B/query
 -- avg 168734 qps;  median 168602 qps

PreparedExecConcurrent16 500000 iterations
mymysql godrv
 3.722864558s 	    134305 queries/sec	    8 allocs/query	    393 B/query
 3.701155651s 	    135093 queries/sec	    8 allocs/query	    393 B/query
 3.708896696s 	    134811 queries/sec	    8 allocs/query	    393 B/query
 -- avg 134736 qps;  median 134811 qps
Go-MySQL-Driver 1.0
 3.211510336s 	    155690 queries/sec	    6 allocs/query	    167 B/query
 3.204158577s 	    156047 queries/sec	    6 allocs/query	    167 B/query
 3.189459753s 	    156766 queries/sec	    6 allocs/query	    167 B/query
 -- avg 156168 qps;  median 156047 qps
Go-MySQL-Driver 1.1
 3.128369303s 	    159828 queries/sec	    5 allocs/query	    150 B/query
 3.11130211s 	    160704 queries/sec	    5 allocs/query	    150 B/query
 3.139291582s 	    159272 queries/sec	    5 allocs/query	    150 B/query
 -- avg 159935 qps;  median 159828 qps

PreparedQueryConcurrent1 500000 iterations
mymysql godrv
 14.533103278s 	    34404 queries/sec	    39 allocs/query	    1555 B/query
 14.340936029s 	    34865 queries/sec	    39 allocs/query	    1555 B/query
 14.507614095s 	    34465 queries/sec	    39 allocs/query	    1555 B/query
 -- avg 34578 qps;  median 34465 qps
Go-MySQL-Driver 1.0
 11.62010633s 	    43029 queries/sec	    24 allocs/query	    645 B/query
 11.615208271s 	    43047 queries/sec	    24 allocs/query	    645 B/query
 11.656044242s 	    42896 queries/sec	    24 allocs/query	    645 B/query
 -- avg 42991 qps;  median 43029 qps
Go-MySQL-Driver 1.1
 10.998830961s 	    45459 queries/sec	    17 allocs/query	    476 B/query
 11.014426678s 	    45395 queries/sec	    17 allocs/query	    476 B/query
 10.979119615s 	    45541 queries/sec	    17 allocs/query	    476 B/query
 -- avg 45465 qps;  median 45459 qps

PreparedQueryConcurrent2 500000 iterations
mymysql godrv
 7.831652593s 	    63843 queries/sec	    39 allocs/query	    1553 B/query
 7.842288669s 	    63757 queries/sec	    39 allocs/query	    1553 B/query
 7.797480045s 	    64123 queries/sec	    39 allocs/query	    1553 B/query
 -- avg 63908 qps;  median 63843 qps
Go-MySQL-Driver 1.0
 5.278819724s 	    94718 queries/sec	    24 allocs/query	    645 B/query
 5.291427353s 	    94492 queries/sec	    24 allocs/query	    645 B/query
 5.278954458s 	    94716 queries/sec	    24 allocs/query	    645 B/query
 -- avg 94642 qps;  median 94716 qps
Go-MySQL-Driver 1.1
 4.830366589s 	    103512 queries/sec	    17 allocs/query	    476 B/query
 4.831139401s 	    103495 queries/sec	    17 allocs/query	    476 B/query
 4.834301429s 	    103428 queries/sec	    17 allocs/query	    476 B/query
 -- avg 103478 qps;  median 103495 qps

PreparedQueryConcurrent4 500000 iterations
mymysql godrv
 7.951862714s 	    62878 queries/sec	    39 allocs/query	    1552 B/query
 7.935456591s 	    63008 queries/sec	    39 allocs/query	    1553 B/query
 8.00026767s 	    62498 queries/sec	    39 allocs/query	    1553 B/query
 -- avg 62795 qps;  median 62878 qps
Go-MySQL-Driver 1.0
 5.378643813s 	    92960 queries/sec	    24 allocs/query	    644 B/query
 5.332978832s 	    93756 queries/sec	    24 allocs/query	    644 B/query
 5.360460591s 	    93276 queries/sec	    24 allocs/query	    644 B/query
 -- avg 93331 qps;  median 93276 qps
Go-MySQL-Driver 1.1
 4.926703513s 	    101488 queries/sec	    17 allocs/query	    476 B/query
 4.937515591s 	    101266 queries/sec	    17 allocs/query	    476 B/query
 4.915720468s 	    101714 queries/sec	    17 allocs/query	    476 B/query
 -- avg 101489 qps;  median 101488 qps

PreparedQueryConcurrent8 500000 iterations
mymysql godrv
 7.971771249s 	    62721 queries/sec	    39 allocs/query	    1554 B/query
 8.008622996s 	    62433 queries/sec	    39 allocs/query	    1554 B/query
 8.016234752s 	    62373 queries/sec	    39 allocs/query	    1553 B/query
 -- avg 62509 qps;  median 62433 qps
Go-MySQL-Driver 1.0
 5.409094898s 	    92437 queries/sec	    24 allocs/query	    643 B/query
 5.407859645s 	    92458 queries/sec	    24 allocs/query	    643 B/query
 5.427255858s 	    92128 queries/sec	    24 allocs/query	    643 B/query
 -- avg 92341 qps;  median 92437 qps
Go-MySQL-Driver 1.1
 4.9584675s 	    100838 queries/sec	    17 allocs/query	    476 B/query
 4.977183317s 	    100458 queries/sec	    17 allocs/query	    475 B/query
 4.957529888s 	    100857 queries/sec	    17 allocs/query	    476 B/query
 -- avg 100718 qps;  median 100838 qps

PreparedQueryConcurrent16 500000 iterations
mymysql godrv
 8.11024536s 	    61650 queries/sec	    39 allocs/query	    1551 B/query
 8.04783136s 	    62129 queries/sec	    39 allocs/query	    1551 B/query
 8.105189303s 	    61689 queries/sec	    39 allocs/query	    1551 B/query
 -- avg 61823 qps;  median 61689 qps
Go-MySQL-Driver 1.0
 5.643842747s 	    88592 queries/sec	    24 allocs/query	    643 B/query
 5.629226543s 	    88822 queries/sec	    24 allocs/query	    642 B/query
 5.642114369s 	    88619 queries/sec	    24 allocs/query	    643 B/query
 -- avg 88678 qps;  median 88619 qps
Go-MySQL-Driver 1.1
 5.166585448s 	    96776 queries/sec	    17 allocs/query	    475 B/query
 5.138424004s 	    97306 queries/sec	    17 allocs/query	    475 B/query
 5.156050123s 	    96973 queries/sec	    17 allocs/query	    475 B/query
 -- avg 97018 qps;  median 96973 qps

Finished... Total running time: 16m20.053874375s