2011-02-14 92 views
1

我有一个方法(C++代码)读出并从数据库(Oracle)的写操作。 但过程需要很长时间才能完成。多线程数据库读访问

我正在考虑在这个进程查询的表中创建分区。 然后使该方法的多线程,以便每个线程(每个分区)可以读/并行写入数据。

我将创建每个线程一个数据库连接。

请问write慢下来?
这项工作? 是否有任何其他改进性能的方式(所有查询都已经过调整和优化)?

感谢, 尼基尔

+0

这是不可能的说,不知道当前系统的性能配置。时间到了哪里?它可能正在等待数据,处理数据,等待写入事务提交或其他地方。这在很大程度上决定了适当的解 – 2011-02-14 06:18:39

回答

0

如果目前的瓶颈是写入数据到数据库,然后创建多个线程写入更多的数据可能会或可能不会帮助,这取决于数据是如何分区,以及是否将写操作可能会同时发生,或者它们是否相互干扰(无论是在数据库锁定级别还是在数据库磁盘IO级别)。

假设有足够的硬件并发性(例如在多核机器上)来处理额外的线程,创建更多的线程将允许应用程序处理更多数据,并将其排队以写入数据库。

分区可能会提高数据库性能,因为可能会更改相关表上的索引。如果您可以将单独的分区放在单独的物理磁盘上,那么当只有一个分区需要由给定的SQL语句访问时,这可以提高IO。

删除不需要的索引,更改索引列的顺序以匹配查询,甚至更改索引类型也可以提高性能。

与一切:之前和所有建议的更改配置文件后它。