Skip to content

Instantly share code, notes, and snippets.

@gistlyn
Last active July 28, 2023 09:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gistlyn/d1f91732acfc6271b4351fc69d42984d to your computer and use it in GitHub Desktop.
Save gistlyn/d1f91732acfc6271b4351fc69d42984d to your computer and use it in GitHub Desktop.
Bulk Insert Performance

BenchmarkDotNet v0.13.6, Windows 10 (10.0.19045.3208/22H2/2022Update) Intel Core i7-7700K CPU 4.20GHz (Kaby Lake), 1 CPU, 8 logical and 4 physical cores .NET SDK 7.0.203 [Host] : .NET 6.0.20 (6.0.2023.32017), X64 RyuJIT AVX2 Job-YNLYPT : .NET 6.0.20 (6.0.2023.32017), X64 RyuJIT AVX2

Method Database n Mean Error StdDev
BatchInserts Memory 1000000 2.332 s 0.0288 s 0.0255 s
BatchInsertsOptimized Memory 1000000 2.573 s 0.0508 s 0.0624 s
BatchInserts Sqlite 1000000 11.099 s 0.1153 s 0.1022 s
BatchInsertsOptimized Sqlite 1000000 11.146 s 0.1228 s 0.1149 s
BatchInserts PostgreSQL 1000000 6.098 s 0.1199 s 0.1559 s
BatchInsertsOptimized PostgreSQL 1000000 3.895 s 0.0769 s 0.2067 s
BatchInserts MySql 1000000 15.546 s 0.3095 s 0.3801 s
BatchInsertsOptimized MySql 1000000 6.803 s 0.1339 s 0.1920 s
BatchInserts MySqlConnector 1000000 13.800 s 0.1668 s 0.1393 s
BatchInsertsOptimized MySqlConnector 1000000 6.585 s 0.1253 s 0.1287 s
BatchInserts SqlServer 1000000 77.221 s 0.5015 s 0.4445 s
BatchInsertsOptimized SqlServer 1000000 5.934 s 0.1002 s 0.0888 s
Method Database n Mean Error StdDev Median
BatchInsertsOptimized Memory 1000 2.638 ms 0.0675 ms 0.1981 ms 2.660 ms
BatchInsertsOptimized Memory 10000 23.424 ms 0.4573 ms 0.5444 ms 23.354 ms
BatchInsertsOptimized Memory 100000 240.111 ms 2.6344 ms 2.3353 ms 239.452 ms
BatchInsertsOptimized Memory 1000000 243.162 ms 3.2423 ms 5.4172 ms 241.574 ms
BatchInsertsOptimized Sqlite 1000 9.884 ms 0.2986 ms 0.8226 ms 9.814 ms
BatchInsertsOptimized Sqlite 10000 102.848 ms 2.0194 ms 5.2845 ms 101.927 ms
BatchInsertsOptimized Sqlite 100000 1,049.120 ms 20.9215 ms 29.3290 ms 1,045.173 ms
BatchInsertsOptimized Sqlite 1000000 1,074.192 ms 21.0056 ms 34.5127 ms 1,065.761 ms
BatchInsertsOptimized PostgreSQL 1000 4.507 ms 0.1548 ms 0.4442 ms 4.431 ms
BatchInsertsOptimized PostgreSQL 10000 17.796 ms 0.3128 ms 0.4486 ms 17.743 ms
BatchInsertsOptimized PostgreSQL 100000 265.161 ms 12.6705 ms 36.9604 ms 261.027 ms
BatchInsertsOptimized PostgreSQL 1000000 273.513 ms 11.6866 ms 34.2749 ms 274.691 ms
BatchInsertsOptimized MySql 1000 23.952 ms 1.3798 ms 3.8234 ms 22.884 ms
BatchInsertsOptimized MySql 10000 145.037 ms 6.1655 ms 17.7889 ms 141.211 ms
BatchInsertsOptimized MySql 100000 714.550 ms 13.6676 ms 28.5294 ms 707.452 ms
BatchInsertsOptimized MySql 1000000 724.059 ms 14.3184 ms 36.9603 ms 715.503 ms
BatchInsertsOptimized MySqlConnector 1000 21.791 ms 1.4271 ms 4.0017 ms 20.746 ms
BatchInsertsOptimized MySqlConnector 10000 143.624 ms 6.7792 ms 19.3413 ms 139.740 ms
BatchInsertsOptimized MySqlConnector 100000 729.408 ms 14.6735 ms 43.2651 ms 722.036 ms
BatchInsertsOptimized MySqlConnector 1000000 756.299 ms 16.4537 ms 48.2560 ms 744.408 ms
BatchInsertsOptimized SqlServer 1000 6.432 ms 0.1342 ms 0.3763 ms 6.319 ms
BatchInsertsOptimized SqlServer 10000 53.330 ms 0.7668 ms 0.7173 ms 53.499 ms
BatchInsertsOptimized SqlServer 100000 580.433 ms 9.3144 ms 7.7779 ms 580.560 ms
BatchInsertsOptimized SqlServer 1000000 582.386 ms 11.3651 ms 11.1620 ms 578.786 ms
Method Database n Mean Error StdDev Median
BatchInserts Memory 1000 2.710 ms 0.0726 ms 0.2084 ms 2.745 ms
BatchInserts Memory 10000 25.784 ms 0.6895 ms 2.0005 ms 26.021 ms
BatchInserts Memory 100000 246.285 ms 3.9630 ms 3.3093 ms 246.185 ms
BatchInserts Memory 1000000 246.997 ms 4.7542 ms 5.4749 ms 245.363 ms
BatchInserts Sqlite 1000 9.944 ms 0.3215 ms 0.8692 ms 9.754 ms
BatchInserts Sqlite 10000 105.551 ms 2.3293 ms 6.7579 ms 103.989 ms
BatchInserts Sqlite 100000 1,048.217 ms 17.4291 ms 14.5541 ms 1,044.868 ms
BatchInserts Sqlite 1000000 1,061.127 ms 20.9569 ms 31.3674 ms 1,053.767 ms
BatchInserts PostgreSQL 1000 7.270 ms 0.1439 ms 0.2874 ms 7.192 ms
BatchInserts PostgreSQL 10000 64.107 ms 1.2164 ms 1.0783 ms 64.225 ms
BatchInserts PostgreSQL 100000 522.203 ms 9.1596 ms 8.1198 ms 519.607 ms
BatchInserts PostgreSQL 1000000 544.353 ms 7.3604 ms 5.7465 ms 542.594 ms
BatchInserts MySql 1000 24.016 ms 1.3810 ms 3.9845 ms 22.311 ms
BatchInserts MySql 10000 217.394 ms 5.6931 ms 16.6968 ms 214.477 ms
BatchInserts MySql 100000 1,656.828 ms 32.2114 ms 49.1902 ms 1,649.606 ms
BatchInserts MySql 1000000 1,622.304 ms 31.8786 ms 31.3090 ms 1,624.503 ms
BatchInserts MySqlConnector 1000 20.869 ms 1.2050 ms 3.4380 ms 19.956 ms
BatchInserts MySqlConnector 10000 184.193 ms 4.3627 ms 12.4471 ms 180.157 ms
BatchInserts MySqlConnector 100000 1,359.005 ms 26.2161 ms 29.1391 ms 1,360.109 ms
BatchInserts MySqlConnector 1000000 1,354.251 ms 25.1015 ms 24.6531 ms 1,363.059 ms
BatchInserts SqlServer 1000 75.994 ms 1.3113 ms 1.5610 ms 76.456 ms
BatchInserts SqlServer 10000 819.829 ms 16.1172 ms 38.3043 ms 829.895 ms
BatchInserts SqlServer 100000 8,558.850 ms 89.6498 ms 83.8585 ms 8,582.563 ms
BatchInserts SqlServer 1000000 8,142.495 ms 58.6568 ms 45.7953 ms 8,155.502 ms
Method Database n Mean Error StdDev
SingleInserts Memory 1000 12.30 ms 0.244 ms 0.453 ms
SingleInserts Sqlite 1000 7,620.93 ms 89.152 ms 83.393 ms
SingleInserts PostgreSQL 1000 465.43 ms 9.082 ms 10.812 ms
SingleInserts MySql 1000 4,282.89 ms 83.393 ms 99.273 ms
SingleInserts MySqlConnector 1000 4,261.57 ms 81.441 ms 96.950 ms
SingleInserts SqlServer 1000 582.33 ms 8.988 ms 8.408 ms
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment