我有一个从数据库(Oracle)读写的进程(c ++代码)。 但是完成这个过程需要很长时间。
我在考虑在此进程查询的表中创建分区。 然后使进程成为多线程,以便每个线程(每个分区一个)可以并行读/写数据。
我将为每个线程创建一个数据库连接。
write
会减慢速度吗?
这会有用吗?
有没有其他方法可以提高性能(所有查询都已调整和优化)?
谢谢, NIKHIL
答案 0 :(得分:0)
如果当前的瓶颈是将数据写入数据库,那么创建更多线程来写入更多数据可能会有所帮助,也可能没有帮助,具体取决于数据的分区方式,以及写入是否可以同时发生,或者是否会干扰彼此(在数据库锁级别,或在数据库磁盘IO级别)。
创建更多线程将允许应用程序处理更多数据,并将其排队以写入数据库,假设有足够的硬件并发(例如在多核计算机上)来处理其他线程。
分区可能会提高数据库性能,因为可能会更改相关表上的索引。如果您可以将单独的分区放在不同的物理磁盘上,那么当给定的SQL语句只需要访问一个分区时,这可以改善IO。
删除不需要的索引,更改索引列的顺序以匹配查询,甚至更改索引类型也可以提高性能。
与所有内容一样:在每次提议的更改之前和之后对其进行概述。