【发布时间】:2011-11-01 02:32:29
【问题描述】:
我正在编写一个 .NET 4 应用程序,它将文件中的大量数据导入 PostgreSQL 9.1 数据库。分析表明,实际 INSERT 数据的 DB 调用占用了 90% 以上的时间。数据库服务器似乎受 CPU 限制 - 使用所有一个 CPU。
如果可能,我想通过使用所有 CPU 更快地导入数据。输入文件可以在客户端被分成几部分,所以这通常不会太难,但我想确保如果在导入文件时发生任何错误,那么数据库根本不会被修改。为了实现这一点,我将在一个事务中完成整个导入。
是否有可能以某种方式向数据库服务器发送并发命令(以利用其所有 CPU),但仍确保整个导入成功或不进行任何更改?据我了解,不能从多个线程使用事务来同时运行多个命令,可以吗?我使用 Npgsql 作为 ADO.NET 提供程序,如果这会有所不同的话。
【问题讨论】:
标签: .net multithreading postgresql transactions thread-safety