Multithreading 多线程数据库读访问

Multithreading 多线程数据库读访问,multithreading,Multithreading,我有一个从数据库(Oracle)读写的进程(c++代码)。 但这一过程需要很长时间才能完成 我正在考虑在这个过程查询的表中创建分区。 然后使进程多线程化,以便每个线程(每个分区一个线程)可以并行地读/写数据 我将为每个线程创建一个DB连接 写会减慢速度吗? 这样行吗? 有没有其他方法可以提高性能(所有查询都已经过调优和优化) 谢谢, Nikhil如果当前瓶颈是将数据写入数据库,则创建更多线程来写入更多数据可能会有帮助,也可能没有帮助,具体取决于数据的分区方式、写入是否可以同时发生,或者它们是否相

我有一个从数据库(Oracle)读写的进程(c++代码)。 但这一过程需要很长时间才能完成

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

我将为每个线程创建一个DB连接

会减慢速度吗?
这样行吗? 有没有其他方法可以提高性能(所有查询都已经过调优和优化)

谢谢,
Nikhil

如果当前瓶颈是将数据写入数据库,则创建更多线程来写入更多数据可能会有帮助,也可能没有帮助,具体取决于数据的分区方式、写入是否可以同时发生,或者它们是否相互干扰(在数据库锁级别或数据库磁盘IO级别)

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

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

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


与所有内容一样:在每次提议的更改之前和之后对其进行分析。

如果不知道当前系统的性能分析,则无法确定。现在时间到哪里去了?它可能在等待数据、处理数据、等待提交写事务,或者在其他地方。这将在很大程度上决定合适的解决方案。我再次发布了一些细节。也许你现在可以帮我:)