Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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
Database Oracle DB多次同时提交速度太慢_Database_Oracle_Commit_Redo - Fatal编程技术网

Database Oracle DB多次同时提交速度太慢

Database Oracle DB多次同时提交速度太慢,database,oracle,commit,redo,Database,Oracle,Commit,Redo,我正在与Oracle数据库并行加载多批数据(~40 MB)。我注意到,在这种情况下,并行Oracle对DB的提交非常慢。但是单次提交要快得多。 看起来此问题与Oracle重做日志文件或日志文件同步有关。 您能否帮助解决此问题。如果您有日志文件切换(检查点不完整)事件,这意味着您将重做日志的大小调整为较小。 它们有多大? 您能用最大的大小添加更多内容吗(很容易做到)?并行Oracle提交对您来说意味着什么?您确定问题不仅仅在于并行处理没有按您希望的方式扩展吗?是什么让你相信提交是让你慢下来的操作?

我正在与Oracle数据库并行加载多批数据(~40 MB)。我注意到,在这种情况下,并行Oracle对DB的提交非常慢。但是单次提交要快得多。 看起来此问题与Oracle重做日志文件或日志文件同步有关。
您能否帮助解决此问题。

如果您有日志文件切换(检查点不完整)事件,这意味着您将重做日志的大小调整为较小。 它们有多大?
您能用最大的大小添加更多内容吗(很容易做到)?

并行Oracle提交对您来说意味着什么?您确定问题不仅仅在于并行处理没有按您希望的方式扩展吗?是什么让你相信提交是让你慢下来的操作?您是否有一些AWR/Statspack报告让您相信这一点?你是说每个线程加载一批40MB的数据,然后发出一次提交?您有多少并发线程,加载了多少数据,提交了多少次?我有5个Java进程。它们中的每一个都执行将数据加载到事务中的操作。每个进程有一个事务。我在调试执行数据加载的java类,在提交方法调用上花费了很多时间(在这种情况下大约5分钟),数据库在等待什么等待事件?每个Java进程是否都发出一个提交?所以你描述的情况是,如果总共有1次提交,事情会很快,但是当你只进行了5次提交时,你的过程会很慢?是的。每个Java进程发出一个提交。对一个进程中的100MB单次提交比我每5个进程提交20MB快。数据库在等什么?谢谢。我增加了重做日志的大小。现在我每400米有6组重做日志。因此,我的会话不会等待日志文件切换(检查点未完成)事件,但仍会等待空闲缓冲区等待事件(~2分钟)。我认为这是一个问题。不是吗?甚至超过5分钟。。。那么有没有办法增加缓冲区缓存的大小呢?我不确定是否能很好地理解您的问题,但在我看来,您有一个I/O pb。这可能是瓶颈。因此,在这种情况下,Parralelize可能不是一个好的解决方案。加速的一个解决方案是在无记录模式下进行批处理。