我有一个存储过程(SQL Server 2016),当前基于该SP的参数返回100K至200K行。
每行的大小可以为100KB至200KB。因此,总大小约为10GB到20GB。
我的客户端(后台作业)必须调用此SP并处理所有行并将其发送给另一个客户端。
处理此类情况的最佳方法是什么?
目前,我正在考虑使用使用yield的流式枚举器。
每当“ datareader.Read()”读取一行并对其进行处理并将其发送给其他客户端时,获取记录。
dataReader = command.ExecuteReader();
while (dataReader.Read())
{
obj = new SomeClass();
// prepare Someclass
yield return obj;
}
这种方法足以处理如此大的数据吗?
有什么更好的方法吗? (例如多线程等)
如果是这样,我应该如何处理。有指针要参考吗?
编辑:SP有多个联接,一天运行几次。
答案 0 :(得分:0)
根据您的描述,我认为这是实现SSIS(集成服务)的好方案,该SSIS可以管理最终结果并将其写入CSV文件,并允许客户交换。