Sql server 2008 无法将250MB字节数组插入远程SQL Server

Sql server 2008 无法将250MB字节数组插入远程SQL Server,sql-server-2008,jdbc,large-data,Sql Server 2008,Jdbc,Large Data,我正在生成一个大小约为250MB的字节数组。然后使用Java应用程序中的标准JDBC代码将其插入远程Microsoft SQL Server中的表中 我的第一个设置-应用程序运行在一个Amazon EC2实例上,Microsoft SQL Server运行在一个单独的Amazon EC2实例上。在这种情况下,INSERT语句起作用-pass 我的第二个设置-应用程序在我的笔记本电脑上本地运行,数据库托管在AmazonEC2实例上。此处连接正确,但在线路上 pstmt执行机构(1,byteArra

我正在生成一个大小约为250MB的字节数组。然后使用Java应用程序中的标准JDBC代码将其插入远程Microsoft SQL Server中的表中

我的第一个设置-应用程序运行在一个Amazon EC2实例上,Microsoft SQL Server运行在一个单独的Amazon EC2实例上。在这种情况下,INSERT语句起作用-pass

我的第二个设置-应用程序在我的笔记本电脑上本地运行,数据库托管在AmazonEC2实例上。此处连接正确,但在线路上
pstmt执行机构(1,byteArray)
即使在半小时后,程序也会继续运行而不终止-失败

为了检查我是否能够从本地机器访问远程数据库并将数据插入其中,我编写了一个简单的应用程序,将一个整数插入表-pass

我怀疑,由于我没有一个真正快速的互联网连接,我的数据上传失败。是否有任何方法可以加快从JDBC到远程SQL Server数据库的数据传输


我曾考虑过增加SQL Server上的数据包大小,但我不确定这是否正确,因为它在使用另一个Amazon EC2实例运行同一个应用程序时有效,而在从应用程序的本地实例运行时无效。为团队中的每个开发人员运行amazonec2实例是一项昂贵的任务。

首先想到的是。我不建议尝试通过远程连接将如此多的数据直接推入SQL Server。一个快速的建议

是否可以将250MB阵列(我怀疑是文件/图像/视频/某些备份)作为文件(普通文件上载..ajax或普通POST)上载到远程Amazon实例文件系统,然后在同一台机器上运行守护进程,该进程随后在本地磁盘上拾取文件并将其推送到SQL实例中

优势

  • 文件上传速度肯定会更快
  • 不依赖JDBC适配器来保持活动状态并可靠地上载文件

  • 我会尝试找到一个更适合您的直接方法的更好的解决方案。

    这里的第一个想法。我不建议尝试通过远程连接将如此多的数据直接推入SQL Server。一个快速的建议

    是否可以将250MB阵列(我怀疑是文件/图像/视频/某些备份)作为文件(普通文件上载..ajax或普通POST)上载到远程Amazon实例文件系统,然后在同一台机器上运行守护进程,该进程随后在本地磁盘上拾取文件并将其推送到SQL实例中

    优势

  • 文件上传速度肯定会更快
  • 不依赖JDBC适配器来保持活动状态并可靠地上载文件

  • 我将尝试提供更适合您的直接方法的更好的解决方案。

    您的问题是网络延迟,而不是数据库本身

    考虑如何优化文件到EC2实例的传输。以同步方式发送250mb文件从来都不是一个好方法。这总是会引起问题。上载文件和将其插入数据库是两件不同的事情。不要把它们混在一起

    你应该做的事情:

  • 尽可能压缩文件,然后发送。及
  • 使用ftp或http(尽管性能相同)并将文件上载到服务器。然后在服务器上对该文件执行任何操作。(如将其插入数据库)
  • 通过网络传输大文件的另一种超级棒的方式是:将文件分成块(压缩后),异步发送(例如:python中的twister或java中的nio),最后在服务器端合并所有文件(使用校验和验证文件的完整性)

  • 您的问题是网络延迟,而不是数据库本身

    考虑如何优化文件到EC2实例的传输。以同步方式发送250mb文件从来都不是一个好方法。这总是会引起问题。上载文件和将其插入数据库是两件不同的事情。不要把它们混在一起

    你应该做的事情:

  • 尽可能压缩文件,然后发送。及
  • 使用ftp或http(尽管性能相同)并将文件上载到服务器。然后在服务器上对该文件执行任何操作。(如将其插入数据库)
  • 通过网络传输大文件的另一种超级棒的方式是:将文件分成块(压缩后),异步发送(例如:python中的twister或java中的nio),最后在服务器端合并所有文件(使用校验和验证文件的完整性)

  • 您可以看看SQL Server的其他JDBC驱动程序。微软提供的defaukt驱动程序绝对不是最佳选择。看看这里,这是一个很好的建议-我们将尝试一下。虽然有多个开发人员访问数据库,但这可能会造成开销。您可以看看SQL Server的其他JDBC驱动程序。微软提供的defaukt驱动程序绝对不是最佳选择。看看这里,这是一个很好的建议-我们将尝试一下。虽然有多个开发人员访问数据库,但这可能是一种开销。如果你想远程上传大块数据,我肯定会考虑将上传分块并使其可恢复。。。希望您的会话在混乱的互联网连接上保持长时间不间断是一种优化如果您希望远程上传大块数据,我肯定会考虑将上传分块并使其可恢复。。。希望您的会话在混乱的互联网连接上长时间不间断地进行是乐观的