我正在为我的应用程序编写一个高性能数据检索/存储类,它使用SqlDataReader从SQL服务器检索数据。
出于好奇,我想知道数据来自SQL服务器的形式。人物?二进制?其他一些形式?
不幸的是,我不能在我的办公室做任何数据包嗅探,这是我认为可以找到答案的一种方式。
编辑:此问题的目的是确定从SQL服务器检索数据的格式,以便在将其放入数据结构之前尽可能少地进行操作。
这个问题与a previous question of mine有关,我发现将数据格式转换为字符串会对性能产生重大影响。
答案 0 :(得分:3)
格式记录在Tabular Data Stream Protocol Specification。话虽这么说,协议和有线格式在很大程度上是无关紧要的,如果你检索到如此多的数据,转移到物质的速度,你已经在错误的道路上。
确保您的数据访问得到优化,最重要的是,您的数据模型设计得很好并且与预期的工作负载相匹配(换句话说:为关键查询设置覆盖索引)。
如果您检索大块数据(例如,存储在数据库中的媒体文件),则有一些特定方法可以使用SqlCommand
类,即SequentialAccess
行为标记:
为DataReader提供了一种处理包含列的行的方法 具有较大的二进制值。而不是加载整行, SequentialAccess使DataReader能够将数据作为流加载。您 然后可以使用GetBytes或GetChars方法指定一个字节 开始读取操作的位置,以及有限的缓冲区大小 返回的数据。
有关如何使用此功能的示例,请参阅Download and Upload images from SQL Server via ASP.Net MVC。