SQL Server 和 SqlDataReader - 万亿条记录 - 内存

2023-11-27

我从未尝试过这个 - 所以我不知道我是否会遇到内存问题。

但是 SqlDataReader 可以读取一万亿条记录吗?全部都正确传输了吗?我对 SQL/TDS 协议的幕后功能还不太了解。

UPDATE将万亿翻译为非常大的数字。我可能应该说 10 亿或 1 亿之类的。


有几个细节。

  • SqlDataReader 通常会读取内存中的整行并将其缓存。这包括任何 BLOB 字段,因此您最终可以在内存中缓存多个 2GB 字段(XML、VARBINARY(MAX)、VARCHAR(MAX)、NVARCHAR(MAX))。如果这些字段是一个问题,那么您必须传递命令行为.顺序访问 to 执行读取器并使用 SqlClient 特定类型的流功能,例如SqlBytes.Stream.

  • 连接处于繁忙状态,直到 SqlDataReader 完成为止。这会产生事务问题,因为您将无法在同一事务中对数据库进行任何处理,因为连接很忙。尝试打开不同的连接并注册同一事务将会失败,因为环回分布式事务是被禁止的。解决方案是使用MARS。您可以通过设置来做到这一点MultipleActiveResultSets=True在连接上。这允许您在same数据读取器仍处于活动状态时的连接(典型的获取-处理-获取循环)。仔细阅读 Christian Kleinerman 的链接,确保您了解有关 MARS 和交易的问题和限制,它们非常微妙且违反直觉。

  • 客户端中的冗长处理将阻塞服务器。您的查询仍将一直执行,当通信管道填满时,服务器将不得不暂停它。一个查询消耗一个worker(或者更多,如果有并行计划)并且作品是very服务器中的稀缺商品(它们大致相当于线程)。 您将无法负担许多客户随意处理大量结果集的费用。

  • 交易规模。在一笔交易中处理一万亿条记录是行不通的。日志必须增长以适应entire事务并且不会截断和重用 VLF,从而导致huge对数增长。

  • 恢复时间。如果在第 9990 亿条记录处处理失败,则必须回滚所有已完成的工作,因此回滚还需要“12”天。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL Server 和 SqlDataReader - 万亿条记录 - 内存 的相关文章

  • InvalidOperationException:无法解析类型“Microsoft.AspNetCore.Http.IHttpContextAccessor”的服务

    我开始将我的 asp net core RC1 项目转换为 RC2 并面临现在的问题IHttpContextAccessor没有解决 为了简单起见 我使用 Visual Studio 模板创建了新的 ASP NET RC2 项目ASP NE
  • C# 创建包含多个文件的 ZIP 存档

    我正在尝试创建包含多个文本文件的 ZIP 存档 如下所示 Dictionary
  • 意外的查询结果

    为什么我从 sql server 得到以下结果 SELECT 12 C1 CONVERT int C2 CASE WHEN THEN equal ELSE not equal END C3 Sql Server Fiddle 演示 http
  • 抽象类或接口。哪种方式是正确的?

    有两种方法可以选择抽象类或接口 微软解决方案和Oracle解决方案 微软 设计指南 请使用抽象 在 Visual Basic 中为 MustInherit 类而不是接口来将协定与实现分离 http msdn microsoft com en
  • C# 中处理 SQL 死锁的模式?

    我正在用 C 编写一个访问 SQL Server 2005 数据库的应用程序 该应用程序是数据库密集型的 即使我尝试优化所有访问 设置适当的索引等 我预计迟早会遇到死锁 我知道为什么会发生数据库死锁 但我怀疑我能否在某个时候发布不发生死锁的
  • 有没有办法设置 log4net 内存附加程序可以包含的最大错误消息数?

    我想向根记录器添加一个内存附加程序 以便我可以连接到应用程序并获取最后 10 个事件 我只想保留最后 10 个 我担心这个附加程序会消耗太多内存 该应用程序设计为 24 7 运行 或者还有别的办法吗 您需要创建一个自定义附加程序来存储有限数
  • 将文本从文本文件添加到 PDF 文件[重复]

    这个问题在这里已经有答案了 这是我的代码 using FileStream msReport new FileStream pdfPath FileMode Create step 1 using Document pdfDoc new D
  • 元素属性语法和属性属性语法之间有语义差异吗?

    我认为元素属性语法和属性属性语法在语义上没有太大区别 但是 我发现一定有什么不同 例如 下面的例子只是演示了一个简单的触发器
  • 反序列化嵌套类时不需要 xmlns=''

    我在尝试在服务器上序列化类 将其发送到客户端并在目标上反序列化时遇到问题 在服务器上我有以下两个类 XmlRoot StatusUpdate public class GameStatusUpdate public GameStatusUp
  • 文件显示在 Visual Studio 的解决方案资源管理器中,并带有快捷方式图标。这意味着什么?

    我已经下载了FParsec的库源代码 所有文件都带有快捷方式符号 这是什么意思 当该项目添加到该项目时 它被添加为链接Project gt Add Existing Item gt Add as Link 该文件很可能托管在目录结构中的另一
  • 当用户打开文件时如何锁定对文件的访问?

    我正在编写一个 C NET 程序 该程序使用 XmlSerializer 对当前用户正在处理的项目与 XML 文件进行序列化和反序列化 这工作正常 但我试图找到一种方法来防止两个用户从网络驱动器打开同一个文件并让一个用户覆盖前一个用户的保存
  • SELECT max(x) 返回 null;我怎样才能让它返回0?

    运行以下命令时如何返回 0 而不是 null SELECT MAX X AS MaxX FROM tbl WHERE XID 1 假设没有XID 1的行 or SELECT coalesce MAX X 0 AS MaxX FROM tbl
  • 每个托管线程是否都有自己对应的本机线程?

    我想知道是否在 Net 中创建托管线程 通过调用Thread Start 导致在后台创建一个本机线程 那么托管线程是否有对应的本机线程呢 如果是 当托管线程等待或睡眠时 是否意味着相应的本机线程也在等待或睡眠 是的 NET 线程映射到所有当
  • 同时从2个表中删除?

    我正在使用 asp net 和 sql 服务器 我有 2 个表 类别和产品 在产品表中 我的categoryId 为FK 我想要做的是 当我从类别表中删除类别时 我希望该类别中的所有产品都将在产品表中删除 如何才能做到这一点 我更喜欢使用存
  • 确保 StreamReader 不会挂起等待数据

    下面的代码读取从 tcp 客户端流读取的所有内容 并且在下一次迭代中它将仅位于 Read 上 我假设正在等待数据 我如何确保它不会在没有任何内容可供读取时返回 我是否必须设置低超时 并在失败时响应异常 或者有更好的办法吗 TcpClient
  • 如何创建包含 IPv4 地址的文本框? [复制]

    这个问题在这里已经有答案了 如何制作一个这样的文本框 我想所有的用户都见过这个并且知道它的功能 您可以使用带有 Mask 的 MaskedTestBox000 000 000 000 欲了解更多信息 请参阅文档 http msdn micr
  • 通知设置的数据库设计

    用户可以打开或关闭 他的通知设置 帐户 用于通知 例如 更改帐户资料信息 收到新消息等 通知可以通过电子邮件或手机 推送或短信 发送 用户可以只有 1 封电子邮件和多个手机设备 有什么方法可以改进以下数据库设计或者您会采取不同的方式吗 让我
  • 我可以从 SQL Server 读取元数据来了解最后更改的行/表吗?

    我们有一个数据库hundreds的桌子 有没有某种metaSQL Server 中的数据源 我可以以编程方式查询以获取名称最后更改表和行 或者我们是否需要实施这个我们自己每个表中的字段称为上次更改日期时间 etc 就查明表最后一次修改的时间
  • 如何在 32 位或 64 位配置中以编程方式运行任何 CPU .NET 可执行文件?

    我有一个可在 32 位和 64 位处理器上运行的 C 应用程序 我试图枚举给定系统上所有进程的模块 当尝试从 64 位应用程序枚举 32 位进程模块时 这会出现问题 Windows 或 NET 禁止它 我认为如果我可以从应用程序内部重新启动
  • 等待进程释放文件

    我如何等待文件空闲以便ss Save 可以用新的覆盖它吗 如果我紧密地运行两次 左右 我会得到一个generic GDI error

随机推荐