Эх сурвалжийг харах

Improve aspcore DB benchmarks (#4015)

* Update .NET MySQL benchmarks to latest MySqlConnector version.

* Update optimized connection string settings for MySqlConnector.

* Use prepared commands with MySqlConnector.

* Update npgsql to latest version.
Bradley Grainger 7 жил өмнө
parent
commit
ddff3ac39c

+ 13 - 14
frameworks/CSharp/aspnetcore-mono/Benchmarks/Benchmarks.csproj

@@ -16,20 +16,19 @@
   </ItemGroup>
   </ItemGroup>
 
 
   <ItemGroup>
   <ItemGroup>
-    <PackageReference Include="Microsoft.AspNetCore.Hosting" Version="2.1.0-rc1-final" />
-    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.1.0-rc1-final" />
-    <PackageReference Include="Microsoft.AspNetCore.Server.Kestrel" Version="2.1.0-rc1-final" />
-    <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.1.0-rc1-final" />
-    <PackageReference Include="Microsoft.Extensions.Configuration" Version="2.1.0-rc1-final" />
-    <PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="2.1.0-rc1-final" />
-    <PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="2.1.0-rc1-final" />
-    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.1.0-rc1-final" />
-    <PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="2.1.0-rc1-final" />
-    <!-- Fix https://github.com/aspnet/KestrelHttpServer/pull/2562  -->
-    <PackageReference Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets" Version="2.1.0-rtm-30793" />
-    <PackageReference Include="MySqlConnector" Version="0.40.3" />
-    <PackageReference Include="Npgsql" Version="4.0.0-rc1" />
-    <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="2.1.0-rc1" />
+    <PackageReference Include="Microsoft.AspNetCore.Hosting" Version="2.1.1" />
+    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.1.2" />
+    <PackageReference Include="Microsoft.AspNetCore.Server.Kestrel" Version="2.1.3" />
+    <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.1.1" />
+    <PackageReference Include="Microsoft.Extensions.Configuration" Version="2.1.1" />
+    <PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="2.1.1" />
+    <PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="2.1.1" />
+    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.1.1" />
+    <PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="2.1.1" />
+    <PackageReference Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets" Version="2.1.3" />
+    <PackageReference Include="MySqlConnector" Version="0.44.1" />
+    <PackageReference Include="Npgsql" Version="4.0.2" />
+    <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="2.1.1.1" />
   </ItemGroup>
   </ItemGroup>
 
 
   <ItemGroup Condition=" '$(TargetFramework)' == 'net471' ">
   <ItemGroup Condition=" '$(TargetFramework)' == 'net471' ">

+ 2 - 2
frameworks/CSharp/aspnetcore-mono/PlatformBenchmarks/PlatformBenchmarks.csproj

@@ -18,8 +18,8 @@
     <PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="2.1.0-rc1-final" />
     <PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="2.1.0-rc1-final" />
     <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.1.0-rc1-final" />
     <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.1.0-rc1-final" />
     <PackageReference Include="Utf8Json" Version="1.3.7" />
     <PackageReference Include="Utf8Json" Version="1.3.7" />
-    <PackageReference Include="Npgsql" Version="4.0.0-rc1" />
-    <PackageReference Include="MySqlConnector" Version="0.40.3" />
+    <PackageReference Include="Npgsql" Version="4.0.2" />
+    <PackageReference Include="MySqlConnector" Version="0.44.1" />
   </ItemGroup>
   </ItemGroup>
   
   
   <ItemGroup Condition=" '$(TargetFramework)' == 'net471' ">
   <ItemGroup Condition=" '$(TargetFramework)' == 'net471' ">

+ 3 - 3
frameworks/CSharp/aspnetcore/Benchmarks/Benchmarks.csproj

@@ -14,9 +14,9 @@
   <ItemGroup>
   <ItemGroup>
     <PackageReference Include="Microsoft.AspNetCore.App" />
     <PackageReference Include="Microsoft.AspNetCore.App" />
     <PackageReference Include="Dapper" Version="1.50.4" />
     <PackageReference Include="Dapper" Version="1.50.4" />
-    <PackageReference Include="MySqlConnector" Version="0.40.3" />
-    <PackageReference Include="Npgsql" Version="4.0.0-rc1" />
-    <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="2.1.0-rc1" />
+    <PackageReference Include="MySqlConnector" Version="0.44.1" />
+    <PackageReference Include="Npgsql" Version="4.0.2" />
+    <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="2.1.1.1" />
     <PackageReference Include="SpanJson" Version="1.2.2" />
     <PackageReference Include="SpanJson" Version="1.2.2" />
     <PackageReference Include="Utf8Json" Version="1.3.7" />
     <PackageReference Include="Utf8Json" Version="1.3.7" />
   </ItemGroup>
   </ItemGroup>

+ 4 - 0
frameworks/CSharp/aspnetcore/Benchmarks/Data/RawDb.cs

@@ -64,6 +64,8 @@ namespace Benchmarks.Data
             id.Value = _random.Next(1, 10001);
             id.Value = _random.Next(1, 10001);
             cmd.Parameters.Add(id);
             cmd.Parameters.Add(id);
 
 
+            (cmd as MySql.Data.MySqlClient.MySqlCommand)?.Prepare();
+
             return cmd;
             return cmd;
         }
         }
 
 
@@ -147,6 +149,8 @@ namespace Benchmarks.Data
                 db.ConnectionString = _connectionString;
                 db.ConnectionString = _connectionString;
                 await db.OpenAsync();
                 await db.OpenAsync();
 
 
+                (cmd as MySql.Data.MySqlClient.MySqlCommand)?.Prepare();
+
                 using (var rdr = await cmd.ExecuteReaderAsync(CommandBehavior.CloseConnection))
                 using (var rdr = await cmd.ExecuteReaderAsync(CommandBehavior.CloseConnection))
                 {
                 {
                     while (await rdr.ReadAsync())
                     while (await rdr.ReadAsync())

+ 1 - 1
frameworks/CSharp/aspnetcore/Benchmarks/appsettings.mysql.json

@@ -1,4 +1,4 @@
 {
 {
-  "ConnectionString": "Server=tfb-database;Database=hello_world;User Id=benchmarkdbuser;Password=benchmarkdbpass;Maximum Pool Size=1024;SslMode=None;ConnectionReset=false;ConnectionIdlePingTime=900;ConnectionIdleTimeout=0",
+  "ConnectionString": "Server=tfb-database;Database=hello_world;User Id=benchmarkdbuser;Password=benchmarkdbpass;Maximum Pool Size=1024;SslMode=None;ConnectionReset=false;ConnectionIdlePingTime=900;ConnectionIdleTimeout=0;AutoEnlist=false;DefaultCommandTimeout=0;ConnectionTimeout=0;IgnorePrepare=false;",
   "Database": "mysql"
   "Database": "mysql"
 }
 }

+ 4 - 0
frameworks/CSharp/aspnetcore/PlatformBenchmarks/Data/RawDb.cs

@@ -62,6 +62,8 @@ namespace PlatformBenchmarks
             id.Value = _random.Next(1, 10001);
             id.Value = _random.Next(1, 10001);
             cmd.Parameters.Add(id);
             cmd.Parameters.Add(id);
 
 
+            (cmd as MySql.Data.MySqlClient.MySqlCommand)?.Prepare();
+
             return cmd;
             return cmd;
         }
         }
 
 
@@ -146,6 +148,8 @@ namespace PlatformBenchmarks
                 db.ConnectionString = _connectionString;
                 db.ConnectionString = _connectionString;
                 await db.OpenAsync();
                 await db.OpenAsync();
 
 
+                (cmd as MySql.Data.MySqlClient.MySqlCommand)?.Prepare();
+
                 using (var rdr = await cmd.ExecuteReaderAsync(CommandBehavior.CloseConnection))
                 using (var rdr = await cmd.ExecuteReaderAsync(CommandBehavior.CloseConnection))
                 {
                 {
                     while (await rdr.ReadAsync())
                     while (await rdr.ReadAsync())

+ 2 - 2
frameworks/CSharp/aspnetcore/PlatformBenchmarks/PlatformBenchmarks.csproj

@@ -13,8 +13,8 @@
 
 
   <ItemGroup>
   <ItemGroup>
     <PackageReference Include="Utf8Json" Version="1.3.7" />
     <PackageReference Include="Utf8Json" Version="1.3.7" />
-    <PackageReference Include="Npgsql" Version="4.0.0-rc1" />
-    <PackageReference Include="MySqlConnector" Version="0.40.3" />
+    <PackageReference Include="Npgsql" Version="4.0.2" />
+    <PackageReference Include="MySqlConnector" Version="0.44.1" />
     <PackageReference Include="Microsoft.AspNetCore.All" />
     <PackageReference Include="Microsoft.AspNetCore.All" />
   </ItemGroup>
   </ItemGroup>
 </Project>
 </Project>

+ 1 - 1
frameworks/CSharp/nancy/src/NancyBenchmark.csproj

@@ -21,7 +21,7 @@
 
 
   <ItemGroup>
   <ItemGroup>
     <PackageReference Include="Nancy" Version="2.0.0-pre1909" />
     <PackageReference Include="Nancy" Version="2.0.0-pre1909" />
-    <PackageReference Include="MySqlConnector" Version="0.40.3" />
+    <PackageReference Include="MySqlConnector" Version="0.44.1" />
     <PackageReference Include="Dapper" Version="1.50.4" />
     <PackageReference Include="Dapper" Version="1.50.4" />
   </ItemGroup>
   </ItemGroup>
 
 

+ 2 - 2
frameworks/VB/aspnetcore/Benchmarks/Benchmarks.vbproj

@@ -11,8 +11,8 @@
 
 
   <ItemGroup>
   <ItemGroup>
     <PackageReference Include="Utf8Json" Version="1.3.7" />
     <PackageReference Include="Utf8Json" Version="1.3.7" />
-    <PackageReference Include="Npgsql" Version="4.0.1" />
-    <PackageReference Include="MySqlConnector" Version="0.42.2" />
+    <PackageReference Include="Npgsql" Version="4.0.2" />
+    <PackageReference Include="MySqlConnector" Version="0.44.1" />
     <PackageReference Include="Microsoft.AspNetCore.App" />
     <PackageReference Include="Microsoft.AspNetCore.App" />
   </ItemGroup>
   </ItemGroup>
 
 

+ 1 - 1
frameworks/VB/aspnetcore/Benchmarks/appsettings.mysql.json

@@ -1,4 +1,4 @@
 {
 {
-  "ConnectionString": "Server=tfb-database;Database=hello_world;User Id=benchmarkdbuser;Password=benchmarkdbpass;Maximum Pool Size=1024;SslMode=None;ConnectionReset=false;ConnectionIdlePingTime=900;ConnectionIdleTimeout=0",
+  "ConnectionString": "Server=tfb-database;Database=hello_world;User Id=benchmarkdbuser;Password=benchmarkdbpass;Maximum Pool Size=1024;SslMode=None;ConnectionReset=false;ConnectionIdlePingTime=900;ConnectionIdleTimeout=0;AutoEnlist=false;DefaultCommandTimeout=0;ConnectionTimeout=0;",
   "Database": "mysql"
   "Database": "mysql"
 }
 }