Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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

NotificationsYou must be signed in to change notification settings

go-sql-driver/sql-benchmark

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

  • fresh & clean install viaapt-get install mysql-server
  • server version: 5.5.34-0ubuntu0.13.10.1
  • connected via Unix Domain Socket (/var/run/mysqld/mysqld.sock)
  • additional config:
thread_cache_size = 16query_cache_limit = 2Mquery_cache_size = 128M

Linux

  • CPU frequency governor set to 'performance'

Notes

  • We did a complete rewrite of the benchmark suite for this round. The results are not comparable to previous rounds.
  • The results should now be much more accurate and vary less.
  • The benchmark suite now includes concurrent tests. These are probably the most interesting tests.
  • The memory footprint (per query) is now also measured.
  • Before each test the Garbage Collector is manually run to eliminate influence of garbage from previous tests.
  • The benchmarks are designed to minimize response latency from the server. We try to compare driver performance here and not to benchmark the MySQL Server ;)
  • The memory footprint includes allocations by the database/sql package. In fact, for Go-MySQL-Driver 1.1 this is the large part, as you can seein this memory profile. Themysql-rows.(*mysqlRows).Columns block will hopefully eliminated after the Go 1.2 releasewith this patch.
$ go run main.go benchmarks.goWarming up mymysql godrv...Warming up Go-MySQL-Driver 1.0...Warming up Go-MySQL-Driver 1.1...Run Benchmarks...SimpleExec 250000 iterationsmymysql 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 qpsGo-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 qpsGo-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 qpsPreparedExec 250000 iterationsmymysql 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 qpsGo-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 qpsGo-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 qpsSimpleQueryRow 250000 iterationsmymysql 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 qpsGo-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 qpsGo-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 qpsPreparedQueryRow 250000 iterationsmymysql 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 qpsGo-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 qpsGo-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 qpsPreparedQueryRowParam 250000 iterationsmymysql 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 qpsGo-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 qpsGo-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 qpsEchoMixed5 250000 iterationsmymysql 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 qpsGo-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 qpsGo-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 qpsSelectLargeString 50000 iterationsmymysql 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 qpsGo-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 qpsGo-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 qpsSelectPreparedLargeString 50000 iterationsmymysql 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 qpsGo-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 qpsGo-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 qpsSelectLargeBytes 50000 iterationsmymysql 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 qpsGo-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 qpsGo-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 qpsSelectPreparedLargeBytes 50000 iterationsmymysql 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 qpsGo-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 qpsGo-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 qpsSelectLargeRaw 50000 iterationsmymysql 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 qpsGo-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 qpsGo-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 qpsSelectPreparedLargeRaw 50000 iterationsmymysql 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 qpsGo-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 qpsGo-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 qpsPreparedExecConcurrent1 500000 iterationsmymysql 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 qpsGo-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 qpsGo-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 qpsPreparedExecConcurrent2 500000 iterationsmymysql 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 qpsGo-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 qpsGo-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 qpsPreparedExecConcurrent4 500000 iterationsmymysql 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 qpsGo-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 qpsGo-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 qpsPreparedExecConcurrent8 500000 iterationsmymysql 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 qpsGo-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 qpsGo-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 qpsPreparedExecConcurrent16 500000 iterationsmymysql 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 qpsGo-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 qpsGo-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 qpsPreparedQueryConcurrent1 500000 iterationsmymysql 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 qpsGo-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 qpsGo-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 qpsPreparedQueryConcurrent2 500000 iterationsmymysql 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 qpsGo-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 qpsGo-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 qpsPreparedQueryConcurrent4 500000 iterationsmymysql 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 qpsGo-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 qpsGo-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 qpsPreparedQueryConcurrent8 500000 iterationsmymysql 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 qpsGo-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 qpsGo-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 qpsPreparedQueryConcurrent16 500000 iterationsmymysql 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 qpsGo-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 qpsGo-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 qpsFinished... Total running time: 16m20.053874375s

About

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

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors5


[8]ページ先頭

©2009-2025 Movatter.jp