我想创建一个外部应用程序,它将从大型 Oracle 数据库中查询一个表。
该查询将每天运行,我预计将处理 30,000 多行。
为了分解这些行的大小,我想为存在的每 10,000 行创建一个新线程/进程。因此,按照上图,处理所有这些行将是 3 个线程。
我不希望每个线程相互重叠行集,所以我知道我需要在表中添加一列作为范围标记,row_position
逻辑
Get row_count of data set in query parameters
Get first_row_pos
While (row_count > 10,000)
{
Create thread with 10,000 rows starting from first_row_pos
row_count == row_count - 10,000
first_row_pos = first_row_pos + 10,000
}
create thread for remaining rows
all threads run their queries concurrently.
这是目前的基本逻辑,但是我不知道这是否可行。
这是一个好方法还是有更好的方法?
这可以通过每个线程共享的一个数据库连接来完成,还是每个线程都有一个单独的数据库连接更好?
欢迎任何其他建议?
注意:我刚刚意识到如果在这种情况下少于 10,000 行,do while 循环会更好。
谢谢