插入大BLOB需要很长时间

时间:2016-04-20 15:27:54

标签: .net sql-server blob sqlcommand

我正在构建一个复杂的应用程序。该应用程序的一部分是在其他服务器上运行并将数据发送到Web服务(ASP MVC)的代理 - > JSON。 在Controller中,我将数据转换为XML并调用存储过程将其存储在表中。 SQL代理作业将获取数据并执行必要的创建,更新和更新。删除某些表的操作。

到目前为止一直很好......

这里的问题是速度。生成的XML具有多个MB的大小。目前它的~16MB。将XML字符串插入新的DB行需要5-6秒。

我尝试了什么:

  • 将DB列更改为XML。结果相同!
  • 我认为问题是实体框架。我用存储过程替换了该代码。结果相同!
  • 删除了SP中的所有声明 - >空存储过程。结果相同!
  • 将参数类型从字符串/ nvarchar(max)更改为byte [] / varbinary(max)。这带来了一些改进。它现在快了50%。但还是很慢。

似乎将这个大字符串或字节数组传递给SQL服务器需要很长时间!

我能做些什么来加快速度?

我想到了以下几点: - 将数据放在文件系统上,并指示SQL服务器使用SELECT FROM OPENROWSET处理它。

还有其他选择吗?

1 个答案:

答案 0 :(得分:0)

尝试异步运行SQL操作。我希望你不需要立竿见影的结果。

Threading.ThreadPool.QueueUserWorkItem(new Threading.WaitCallback(InsertBLOB), MyBLOB);

这种方法的缺点是你不会在运行时收到错误。