好的,我对我应该做什么和怎么做有点困惑。我知道并行编程和线程的理论,但这是我的情况:
我们在给定文件夹中有许多日志文件。我们在数据库中读取这些日志文件。通常读取这些文件需要几个小时才能读取,正如我们以串行方法执行的那样,即我们遍历每个文件,然后为每个文件打开一个 SQL 事务并将日志插入数据库,然后读取另一个并执行相同操作。
现在,我正在考虑使用并行编程,这样我就可以消耗 CPU 的所有内核,但是我仍然不清楚是否对每个文件使用 Thread,这会对系统有什么影响吗?我的意思是,如果我创建 30 个线程,那么它们会在单核上运行还是在 Parallel 上运行?我怎样才能同时使用它们?如果他们还没有这样做?
编辑:我使用的是单服务器,具有 10K 硬盘速度和 4 核 CPU,具有 4 GB RAM,没有网络操作,SQL Server 与 Windows 2008 作为操作系统在同一台机器上。[如果有帮助,也可以更改操作系统:)]。
编辑 2:我根据您的反馈进行了一些测试,这是我在具有 4 GB RAM 的 i3 四核 CPU 上发现的
CPU 保持在 24-50% CPU1,CPU2 保持在 50% 以下,CPU3 保持在 75%,CPU4 保持在 0% 左右。是的,我打开了 Visual Studio、eamil 客户端和许多其他应用程序,但这告诉我应用程序没有使用所有内核,因为 CPU4 保持 0%;
RAM 始终保持在 74% [测试前约为 50%],这就是我们设计读取的方式。所以,没什么好担心的
HDD 保持 READ/Write 或使用值保持低于 25% 甚至在正弦波中飙升至 25%,因为我们的 SQL 事务首先存储在内存中,然后在内存达到阈值时写入磁盘,所以再次,
所以这里的所有资源都没有得到充分利用,因此我认为我可以分配工作以提高效率。又是你的想法。谢谢。