Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 提高SQL Server插入bigdata的性能_Sql Server - Fatal编程技术网

Sql server 提高SQL Server插入bigdata的性能

Sql server 提高SQL Server插入bigdata的性能,sql-server,Sql Server,我正在做一个将大约10亿条记录插入SQL Server表的过程。这个过程很漫长,我正在努力改进 因此,我做了以下工作: 已从插入的表中删除所有索引和主键 插入前已删除所有选择/更新检查 检查了SQL Server内存最大值,它似乎已经足够大了 我想知道限制日志文件大小是否有助于提高SQL Server性能?如果是,我该怎么做 我还可以做些什么来改进插入过程吗 编辑 SQL Server版本:15.0.2000.5 通过.Net应用程序加载数据,在该应用程序中,我处理数据并将其发送到仅包含i

我正在做一个将大约10亿条记录插入SQL Server表的过程。这个过程很漫长,我正在努力改进

因此,我做了以下工作:

  • 已从插入的表中删除所有索引和主键
  • 插入前已删除所有选择/更新检查
  • 检查了SQL Server内存最大值,它似乎已经足够大了

我想知道限制日志文件大小是否有助于提高SQL Server性能?如果是,我该怎么做

我还可以做些什么来改进插入过程吗

编辑

SQL Server版本:15.0.2000.5

通过.Net应用程序加载数据,在该应用程序中,我处理数据并将其发送到仅包含insert语句的存储过程(都在同一台PC上,没有网络,即SQL server和.Net app都在同一台计算机上)

目前,在50分钟内插入了大约2000万条记录

服务器规格:

恢复模式=完全恢复

我删除了所有聚集索引和非聚集索引

我同时插入一条记录

这不会很快。在每个命令中向SQL Server发送多行。最快的方法通常是,您可能不需要并行地执行任何操作。同时,使用表值参数或JSON一次发送多行也比您现在所做的要快得多


我正在做的是读取XML,然后将其插入1


您可以将整个XML文档发送到SQL Server,并使用XML或XML将其分解。或者,您可以使用XMLReader并通过实现从XML流读取的自定义IDataReader将行导入SqlBulkCopy。

什么版本的SQL Server?您是如何加载数据的?当前加载速度有多快?服务器规格是什么?数据库是否处于简单恢复模式?是否正在加载群集columnstore表?你读了吗?@DavidBrowne Microsoft我用你询问的信息编辑了我的帖子你每秒获得6500多条记录。您认为您应该能够以多快的速度(每秒记录数)运行?@JoelCoehoorn我有100个多线程.net函数插入到表中,其中有100个到DB的连接,瓶颈来自SQL Server存储过程一次插入一行吗?您是否正在将插入批处理到事务中?您考虑过使用SqlBulkCopy吗?100个并发连接的性能要差得多。从理论上讲,这100路闭塞可以导致100!更糟糕的性能我正在做的是读取XML然后将其插入1条记录,有没有办法将XML文件直接插入到表中?如果文档很大,则使用SqlBulkCopy将其分解或流式处理会更快。