我尝试使用Bulk方法将500 MB的文件插入表(列数据类型:VARBINARY(MAX)
),SQL大约需要15分钟才能插入文件。我有2GB内存,我的PC是核心2二人,我使用的是SQL Server 2008 R2。
我的问题:
感谢。
我的程序是SQL
CREATE PROCEDURE [dbo].[UploadFile]
(
@FileName nvarchar(100) ,
@FileSize nvarchar(50) ,
@FileDescription nvarchar(200),
@FileExtontion nvarchar(10),
@DateUploaded nvarchar(50),
@FilePath nvarchar(3500),
@UserId int
)
AS
BEGIN
SET NOCOUNT ON;
declare @FileInBinary varbinary(MAX)
IF OBJECT_ID('#ORStable') IS NULL
BEGIN
-- Temporary stored into a hash table for avoid data error
CREATE TABLE #ORStable (Length BIGINT, vDocument VARBINARY(MAX))
DECLARE @SQL_QUERY NVARCHAR(4000)
SET @SQL_QUERY= 'INSERT INTO #ORStable
SELECT len(bulkcolumn), *
FROM OPENROWSET(BULK '''+@FilePath+''', SINGLE_BLOB) AS BinaryData'
exec SP_executesql @SQL_QUERY
END
SELECT TOP 1 @FileInBinary = vDocument FROM #ORStable
insert into [File] ([FileName], FileSize, FileDescription, FileExtontion,
DateUploaded, FileInBinary, UserId)
values (@FileName, @FileSize, @FileDescription, @FileExtontion,
@DateUploaded, @FileInBinary, @UserId)
DROP TABLE dbo.#ORStable
END
答案 0 :(得分:0)
我尝试使用Bulk将500 MB的文件插入表(列数据类型:VARBINARY(MAX)) 方法,
与您一样的低性能系统的大文件。
15分钟是否正常! ,或者它太长了?
在文件夹之间复制该文件需要多长时间,两次同时? (由于日志记录,这比SQL Server需要的多一点)?期望要么飞 - 我的sql数据库可以复制这样的东西,接近1gb /秒 - 或爬行(可能在低功率机器上,可能只有一个慢盘而不是大量的SSD)。
有更快的方法吗?
为手头的任务获取适当的硬件。 IO是王者 - 而SQL Server依赖于它。你的机器是RAM缺乏这项工作,可能有一个类似的非需求匹配光盘子系统。