我們在處理選擇語句時接近3500(!!)綁定變量時,我們的oracle服務器窒息。帶有大量綁定變量的oracle select的影響/限制是什麼?
這個選擇顯然是由我們無法更改的代碼動態構建的。在執行此選擇期間,數據庫服務器的CPU使用率達到100%,我們的系統幾乎停止。
我們知道如何重現此問題。所以我們可以防止這個特定的情況。但我想知道是否有一種方法來保護數據庫(通過配置)從這種類型的問題。
更新:
的選擇看起來像這樣:
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
我已將select添加到問題中。這很簡單。 – 2010-04-25 07:35:08