并行执行中的不同结果 - Oracle

时间:2015-07-17 20:12:12

标签: oracle

在我公司的应用程序中,oracle中有一个使用并行执行的查询(配置为4个服务器),构建它的不是我,而是开发人员用它来表现性能。

查询在视图和表之间建立连接,最奇怪的是:有时它返回11k结果(不正确),有时27k结果(正确)。

经过大量研究后我发现,如果我删除了这个并行的东西,它总会返回正确的数字:27k。如果我将服务器的数量增加到6或7,它总是返回错误的数字:11k。

查询的布局如下:

SELECT /*+ PARALLEL(NAME, 4) */ * FROM(
    SELECT DISTINCT COLUMNS                           
    FROM VIEW
    JOIN TABLE1 ON (....)
    JOIN TABLE2 ON (....)
    JOIN TABLE3 ON (....)
    ORDER BY 3
) NAME

任何人都知道为什么?我对这个问题知之甚少。

0 个答案:

没有答案