|
@@ -11,6 +11,7 @@ namespace PlatformBenchmarks
|
|
{
|
|
{
|
|
private const int MaxBatch = 500;
|
|
private const int MaxBatch = 500;
|
|
private static string[] _queries = new string[MaxBatch];
|
|
private static string[] _queries = new string[MaxBatch];
|
|
|
|
+ private static DatabaseServer _databaseServer;
|
|
|
|
|
|
public static IList<BatchUpdateString> Strings { get; } =
|
|
public static IList<BatchUpdateString> Strings { get; } =
|
|
Enumerable.Range(0, MaxBatch)
|
|
Enumerable.Range(0, MaxBatch)
|
|
@@ -30,18 +31,28 @@ namespace PlatformBenchmarks
|
|
private string CreateQuery(int batchSize)
|
|
private string CreateQuery(int batchSize)
|
|
{
|
|
{
|
|
var sb = StringBuilderCache.Acquire();
|
|
var sb = StringBuilderCache.Acquire();
|
|
- foreach (var q in Enumerable.Range(0, batchSize + 1)
|
|
|
|
- .Select(i => $"UPDATE world SET randomnumber = @Random_{i} WHERE id = @Id_{i};"))
|
|
|
|
|
|
+ if (_databaseServer == DatabaseServer.PostgreSql)
|
|
{
|
|
{
|
|
- sb.Append(q);
|
|
|
|
|
|
+ sb.Append("UPDATE world SET randomNumber = temp.randomNumber FROM (VALUES ");
|
|
|
|
+ Enumerable.Range(0, batchSize).Select(i => sb.Append($"(@Id_{i}, @Random_{i}), ")).ToList();
|
|
|
|
+ sb.Append($"(@Id_{batchSize}, @Random_{batchSize}) ORDER BY 1) AS temp(id, randomNumber) WHERE temp.id = world.id");
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ foreach (var q in Enumerable.Range(0, batchSize + 1)
|
|
|
|
+ .Select(i => $"UPDATE world SET randomnumber = @Random_{i} WHERE id = @Id_{i};"))
|
|
|
|
+ {
|
|
|
|
+ sb.Append(q);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
var query = sb.ToString();
|
|
var query = sb.ToString();
|
|
_queries[batchSize] = query;
|
|
_queries[batchSize] = query;
|
|
return query;
|
|
return query;
|
|
}
|
|
}
|
|
|
|
|
|
- public static void Initalize()
|
|
|
|
|
|
+ public static void Initialize(DatabaseServer databaseServer)
|
|
{
|
|
{
|
|
|
|
+ _databaseServer = databaseServer;
|
|
Observe(Strings[0].UpdateQuery);
|
|
Observe(Strings[0].UpdateQuery);
|
|
Observe(Strings[4].UpdateQuery);
|
|
Observe(Strings[4].UpdateQuery);
|
|
Observe(Strings[9].UpdateQuery);
|
|
Observe(Strings[9].UpdateQuery);
|