Oracle多插入语句
|
在我的应用程序中,我必须添加许多记录。我正在使用以下构造:
INSERT /*+ append parallel(t1, 4) parallel(t2, 4) */ ALL
INTO t1 (col1, col2, col3) VALUES (\'val1_1\', \'val1_2\', \'val1_3\')
INTO t2 (col1, col2, col3) VALUES (\'val2_1\', \'val2_2\', \'val2_3\')
INTO t2 (col1, col2, col3) VALUES (\'val3_1\', \'val3_2\', \'val3_3\')
.
.
.
SELECT 1 FROM DUAL;
我也在使用APPEND和PARALLEL提示。请注意,我正在将数据插入两个不同的表中。似乎并行被忽略了(DBA告诉我)。那么我怎么知道它是否被使用呢?是否可以在这种构造中使用PARALLEL提示?有效吗
没有找到相关结果
已邀请:
4 个回复
死搭胯
您可以使用以下查询检查实际的并行度:
如果仍然没有并行处理,则有许多可能的原因。首先,请查看以下参数:
但是您可能不希望插入语句具有并行性。并行处理具有大量开销,通常仅在处理成千上万条记录时才有用。 我猜您真正的问题是解析大型SQL语句的时间。多表插入尤其糟糕。如果您尝试插入几百行以上,则您的查询将花费很多秒来进行解析。并且根据您的Oracle版本,如果您尝试使用501表,它将永久挂起。运行几个较小的查询而不是一个较大的查询要快得多。例如,5个100行的插入将比500个行的插入快得多。 (通常,这与Oracle性能调整的方式正好相反。由于与解析大型SQL语句有关的错误,因此这是特例。)
河饶办斜施
嘘伪
抚驰