Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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语句的多个核心_Sql_Insert_Parallel Processing - Fatal编程技术网

利用执行SQL语句的多个核心

利用执行SQL语句的多个核心,sql,insert,parallel-processing,Sql,Insert,Parallel Processing,我有一个小应用程序,它可以读取XML文件并在SQL数据库中插入信息 有大约300000个文件要导入,每个文件有大约1000条记录 我在20%的文件上启动了这个应用程序,现在它已经运行了18个小时,我希望这次我可以改进其余的文件 我没有使用多线程的方法,但是因为我运行进程的计算机有4个内核,所以我想这样做是为了提高性能(尽管我想主要的问题是I/O,而不仅仅是处理) 我曾考虑在为每次插入创建的SqlCommand对象上使用BeginExecutingNonQuery()方法,但我不知道是否应该限制最

我有一个小应用程序,它可以读取XML文件并在SQL数据库中插入信息

有大约300000个文件要导入,每个文件有大约1000条记录

我在20%的文件上启动了这个应用程序,现在它已经运行了18个小时,我希望这次我可以改进其余的文件

我没有使用多线程的方法,但是因为我运行进程的计算机有4个内核,所以我想这样做是为了提高性能(尽管我想主要的问题是I/O,而不仅仅是处理)

我曾考虑在为每次插入创建的SqlCommand对象上使用BeginExecutingNonQuery()方法,但我不知道是否应该限制最大并发线程数(也不知道如何做到)

您对获得最佳CPU利用率有什么建议

谢谢

看看吧

以用户指定的格式将数据文件导入数据库表或视图


你试过使用吗?基本上,将数据加载到DataTable实例中,然后使用SqlBulkCopy类将其加载到SQL Server。应该可以提供巨大的性能提升,而不会像使用bcp或其他实用程序那样对当前进程进行太多更改。

如果我理解正确,您正在运行数据库的同一台机器上读取这些文件。虽然我对您的机器了解不多,但我敢打赌您的瓶颈是磁盘IO。对我来说,这听起来并不是非常需要计算。

我知道这个过程不需要计算,但我猜如果我同时进行4次插入,SQL将利用多核,并以更高效的方式进行。是的,IO是密集型的,但至少我想让SQL尽可能忙。然后确保您正在从另一个物理驱动器读取文件,然后是存放db的驱动器。问题是,在插入信息之前,我必须对信息进行一些小的处理,基本上文件包含4个不同表中的信息,但我会看一看,它可能有用。ThanksIt在这种情况下也会有所帮助——也许您需要4个数据表来保存处理结果,但无论如何,您都应该提高性能。