Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从大型数据表中批量获取数据的查询_Java_Sql_Oracle_Performance - Fatal编程技术网

Java 从大型数据表中批量获取数据的查询

Java 从大型数据表中批量获取数据的查询,java,sql,oracle,performance,Java,Sql,Oracle,Performance,我需要从一个巨大的数据表(可能包含500万条记录)中创建一些具有我自己格式的文件(比如每个5000条记录)。我希望这个创建是多线程的 因此,如何高效地形成查询以获取1..5000和5001..10000等记录 我可以从表中生成select*from,其中rownum听起来像是需要一组使用MySqlLIMIT子句的查询来实现分页(例如,一个查询将获得第一个1000,另一个查询将获得第二个1000等等) 您可以形成这些查询,并将其作为Callables提交给具有一定数量线程的。执行器将管理线程。我怀

我需要从一个巨大的数据表(可能包含500万条记录)中创建一些具有我自己格式的文件(比如每个5000条记录)。我希望这个创建是多线程的

因此,如何高效地形成查询以获取1..5000和5001..10000等记录


我可以从表中生成select*from,其中rownum听起来像是需要一组使用MySql
LIMIT
子句的查询来实现分页(例如,一个查询将获得第一个1000,另一个查询将获得第二个1000等等)


您可以形成这些查询,并将其作为
Callables
提交给具有一定数量线程的。
执行器将管理线程。我怀疑在每个
可调用的
中查询和写入记录可能更有效,但这是一个可能需要测试的假设。

听起来您需要一组使用MySql
LIMIT
子句的查询来实现分页(例如,一个查询将得到第一个1000,另一个查询将得到第二个1000等等)


您可以形成这些查询,并将其作为
Callables
提交给具有一定数量线程的。执行器将管理线程。我怀疑在每个
Callable
中查询和写入记录可能更有效,但这是一个可能需要测试的假设。

如果您使用的是Oracle 11g您可以使用DBMS_PARALLEL_EXECUTE包在多个线程中运行您的过程


如果您使用的是早期版本,则可以使用Tom Kyte提供的技术实现DIY并行。饥饿的DBA提供。

如果您使用的是Oracle 11g,则可以使用DBMS\u PARALLEL\u EXECUTE包在多个线程中运行您的过程


如果您使用的是早期版本,您可以使用Tom Kyte提供的技术实现DIY并行。饥渴的DBA提供了。

请检查:每个文件是否必须具有相同的行数?如果这不重要,您可以将表划分为ROWID范围,然后每个线程将只使用类似于
的东西,在和B
。你是说要创建1000个文件吗?你需要将所有行写入文件吗?是的,我正在寻找相同的@davidridge。如何确定哪个记录指向哪个文件?请检查:每个文件必须具有相同的行数吗?如果这不重要,你可以将表划分为ROWID范围,然后每个行read只会使用类似于
的东西,其中A和B之间的rowid
。您正在谈论创建1000个文件吗?您需要将所有行写入文件吗?是的,我正在寻找相同的@davidardridge。您如何决定哪条记录进入哪一个文件?