使用 SqlAggregator
注
仅适用于 Windows 系统上的 .NET Framework 4.x 和 .NET 8(原 .NET Core)。
SqlAggregator 是一个类,其作用类似于分布式连接,但仅在单个进程中运行。要使用 SqlAggregator,C# 应用程序会创建一个 SqlLocalConnection 对象数组作为分片运行。然后启动所有 SqlLocalConnection 对象,并将数组传递给 SqlAggregator 构造函数。
例如:
SqlLocalConnection [] shards = new SqlLocalConnection[NSHARDS];
for (int i = 0; i < NSHARDS; i++)
{
shards[i] = create_database("aggg" + Convert.ToString(i), config, is_dptr);
}
SqlAggregator agg = db.ConnectSqlAggregator(shards);
一旦聚合器创建并初始化完成,就可以像使用 SqlLocalConnection 一样使用它。例如,执行查询:
agg.executeStatement("2:insert into MyTable (pk,value) values (?,?)", 2013, "Hello"));
当不再需要时,必须通过 SqlAgregator.Disconnect() 方法关闭聚合器,然后关闭 SqlLocalConnection 对象:
agg.Disconnect();
for (int i = 0; i < NSHARDS; i++)
{
shards[i].Disconnect();
}
SQL 字符串长度
对于 SqlLocalConnection 类的 ExecuteStatement() 和 ExecuteQuery() 方法,语句字符串参数的长度没有限制,但对于 SqlRemoteConnection 类,语句字符串的长度受传递给构造函数的 bufferSize 参数限制,默认值为 64 Kb。(这同样适用于 SqlAggregator 类)。更多详情请参阅 SQL 语句字符串页面。