批处理单独准备好的 npgsql 命令
Batching separate prepared npgsql commands
假设您准备了三个 NpgsqlCommand。因为它们必须分开执行。但有时必须同时执行两个或所有三个(好吧,一个接一个)。
有没有办法通过一次往返服务器来批处理和重用这些先前准备好的命令? (目标是尽量减少延迟)
现在我使用第四个命令并用分号分隔原始三个命令的副本,并准备这个 -- 但我假设这将在服务器上使用更多资源,并在 npgsql 上进行更多 SQL 解析客户.
Npgsql 通过在 CommandText
中包含多个语句来支持批处理,语句之间用分号分隔。这些在单次网络往返中执行,也可以准备:
cmd.CommandText = "SELECT ...; UPDATE ...";
cmd.Prepare();
在内部,Npgsql 在分号上拆分这些命令并分别准备每个语句(PostgreSQL 实际上不识别批处理,只识别单个语句)。此外,Npgsql 在逐个语句级别管理准备好的语句,并且知道重用已经存在的语句。这意味着如果您准备两个包含相同语句的命令,这些语句将共享相同的服务器端准备语句资源。
假设您准备了三个 NpgsqlCommand。因为它们必须分开执行。但有时必须同时执行两个或所有三个(好吧,一个接一个)。
有没有办法通过一次往返服务器来批处理和重用这些先前准备好的命令? (目标是尽量减少延迟)
现在我使用第四个命令并用分号分隔原始三个命令的副本,并准备这个 -- 但我假设这将在服务器上使用更多资源,并在 npgsql 上进行更多 SQL 解析客户.
Npgsql 通过在 CommandText
中包含多个语句来支持批处理,语句之间用分号分隔。这些在单次网络往返中执行,也可以准备:
cmd.CommandText = "SELECT ...; UPDATE ...";
cmd.Prepare();
在内部,Npgsql 在分号上拆分这些命令并分别准备每个语句(PostgreSQL 实际上不识别批处理,只识别单个语句)。此外,Npgsql 在逐个语句级别管理准备好的语句,并且知道重用已经存在的语句。这意味着如果您准备两个包含相同语句的命令,这些语句将共享相同的服务器端准备语句资源。