Jon*_*eet 28
我强烈怀疑读者一次读取一批结果.这比一次一行更有效(想想单行只有几个字节的情况......当一行可以在一个数据包中检索到大量行时,你不希望每行有一个网络数据包).它还可能允许数据库尽早释放其内部资源 - 如果数据读取器已读取所有结果(当只有少数时),它可以有效地忘记查询.
我怀疑如果你用一个返回大量结果的查询尝试相同类型的东西,你会得到预期的异常.
数据读取器一次读取一条记录,但它从底层数据库驱动程序读取它.数据库驱动程序通常使用8千字节的缓冲区以块为单位从数据库中读取数据.
如果您的结果记录很小并且您没有得到很多,那么它们都将适合缓冲区,并且数据库驱动程序将能够将它们全部提供给数据读取器,而无需向数据库请求更多数据.
如果获取的结果大于缓冲区,则只能在数据库驱动程序需要向数据库请求更多数据之前读取其第一部分.那时,如果数据库不再可访问,您将收到异常.
| 归档时间: |
|
| 查看次数: |
8249 次 |
| 最近记录: |