gpt4 book ai didi

C# SqlCommand 字节传输大小

转载 作者:太空宇宙 更新时间:2023-11-03 14:12:42 25 4
gpt4 key购买 nike

我正在用 C# 编写一个 Sql 客户端,希望能够单点跟踪 Sql 命令的数据使用情况。据我所知,没有简单的方法可以做到这一点。

我从 SqlCommand 获取数据的函数看起来像这样:

private static void ExecuteReaderCallback(IAsyncResult async)
{
DBReqWrapper RequestObject = (DBReqWrapper)async.AsyncState;
SqlDataReader ResponseReader = command.EndExecuteReader(async);
if (ResponseReader.HasRows)
{
while (ResponseReader.Read())
{
object[] NewResponse = new object[ResponseReader.FieldCount];
ResponseReader.GetValues(NewResponse);

// Processing omitted
}
}

ResponseReader.Close();
}

我认为行不通的:

  1. 序列化数据以找出大小。太慢了,尤其是对于大请求。
  2. 大小。我们正在处理未知类型的对象。
  3. Marshal.sizeof。我们正在处理托管对象。
  4. 检查应用程序总内存。这是一个多线程应用程序,将处理许多并发请求,内存总量将不可靠。
  5. SqlDataReader::GetBytes()。此命令仅对部分类型有效。

感谢任何帮助,谢谢!

最佳答案

如果您想要计算通过“网络”传输的数据量,那么这些方法都行不通。 SQL Server 使用称为 TDS ( Tabular Data Stream ) 的协议(protocol)作为其应用程序级有线格式。

我认为性能计数器可能是您的 friend 。

关于C# SqlCommand 字节传输大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7338733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com