在处理接近3500(!!)绑定变量。
显然,这个选择是由我们无法更改的代码动态构建的。在执行这个选择的过程中,DB服务器达到了100%的CPU使用率,我们的系统几乎停止运行。
我们知道如何重现这个问题。所以我们可以防止这种特殊情况。但是我想知道是否有一种方法可以保护DB(通过配置)不受此类问题的影响。
更新
:
选择如下:
SELECT "FieldOfChar20"
FROM "TableOf111Krows"
WHERE ( "FieldOfChar20" BETWEEN :a0 AND :a1
OR "FieldOfChar20" BETWEEN :a2 AND :a3
OR "FieldOfChar20" BETWEEN :a4 AND :a5
snip snip
OR "FieldOfChar20" BETWEEN :a290 AND :a291
OR "FieldOfChar20" BETWEEN :a292 AND :a293
)
OR ( "FieldOfChar20" IN
(:a294,
:a295,
snip snip
:a1292,
:a1293
)
OR "FieldOfChar20" IN
(:a1294,
:a1295,
snip snip
:a2292,
:a2293
)
OR "FieldOfChar20" IN
(:a2294,
:a2295,
snip snip
:a3292,
:a3293
)
OR "FieldOfChar20" IN
(:a3294,
:a3295,
snip snip
:a3476,
:a3477
)
)
Oracle版本为10.2.0.2