我應該檢查為什么 Oracle 服務器需要超過 20 秒才能回傳UNIQUE特定資料的約束沖突錯誤?
我們的一個行程是一天處理超過 30000 條資料,多行程有時會在 1 秒內出現 UNIQUE 約束違規錯誤
但是需要超過 20 秒才能回傳UNIQUE特定資料的約束違規錯誤。
查詢與下面相同。(只修改表名)
MERGE
INTO TableA S
USING (
SELECT NVL(:sccm_cd , ' ') SCCM_CD
, NVL(:oder_dt , ' ') ODER_DT
, NVL(:mrkt_dstn_cd, ' ') MRKT_DSTN_CD
, NVL(:oder_no , ' ') ODER_NO
, NVL(:cncd_unpr , 0) CNCD_UNPR
, B.SLBY_FEE_GRD_CD
, B.ACCT_MNGR_EMPL_NO
, C.AO_FEE_GRD_CD
FROM DUAL A
, TableB B
, TableC C
WHERE 1 = 1
AND B.SCCM_CD = :sccm_cd
AND B.ACNO = :acno
AND C.SCCM_CD( ) = B.SCCM_CD
AND C.EMPL_NO( ) = B.ACCT_MNGR_EMPL_NO
) T
ON ( S.sccm_cd = T.sccm_cd
AND S.oder_dt = T.oder_dt
AND S.mrkt_dstn_cd = T.mrkt_dstn_cd
AND S.oder_no = T.oder_no
AND S.cncd_unpr = T.cncd_unpr
)
WHEN MATCHED THEN
UPDATE
SET S.cncd_qty = S.cncd_qty NVL(:cncd_qty ,0)
, S.slby_fee = S.slby_fee NVL(:slby_fee ,0)
, S.slby_fee_srtx = S.slby_fee_srtx NVL(:slby_fee_srtx,0)
, S.idx_fee_amt = S.idx_fee_amt NVL(:idx_fee_amt ,0)
, S.cltr_fee = S.cltr_fee NVL(:cltr_fee ,0)
, S.trtx = S.trtx NVL(:trtx ,0)
, S.otc_fee = S.otc_fee NVL(:otc_fee ,0)
, S.wht_fee = S.wht_fee NVL(:wht_fee ,0)
WHEN NOT MATCHED THEN
INSERT (
sccm_cd
, oder_dt
, mrkt_dstn_cd
, oder_no
, cncd_unpr
, acno
, item_cd
, slby_dstn_cd
, md_dstn_cd
, cncd_qty
, stlm_dt
, trtx_txtn_dstn_cd
, proc_cmpl_dstn_cd
, item_dstn_cd
, slby_fee_grd_cd
, slby_fee
, slby_fee_srtx
, idx_fee_amt
, cltr_fee
, trtx
, wht_fee
, otc_fee
, acct_mngr_empl_no
, ao_fee_grd_cd
)
VALUES
( T.sccm_cd
, T.oder_dt
, T.mrkt_dstn_cd
, T.oder_no
, T.cncd_unpr
, :acno
, :item_cd
, :slby_dstn_cd
, :md_dstn_cd
, NVL(:cncd_qty ,0)
, DECODE(:mrkt_dstn_cd, 'TN', T.oder_dt, :stlm_dt)
, :trtx_txtn_dstn_cd
, '0'
, :item_dstn_cd
, NVL(:slby_fee_grd_cd, T.SLBY_FEE_GRD_CD)
, NVL(:slby_fee ,0)
, NVL(:slby_fee_srtx ,0)
, NVL(:idx_fee_amt ,0)
, NVL(:cltr_fee ,0)
, NVL(:trtx ,0)
, NVL(:wht_fee , 0)
, NVL(:otc_fee , 0)
, T.acct_mngr_empl_no
, T.ao_fee_grd_cd
)
uj5u.com熱心網友回復:
可能有多種原因。我將在此處列出導致此行為的一些可能原因。
并發問題
您insert可能正在等待其他操作,例如其他插入或更新或洗掉。
網路問題
可能由于某種原因您的網路被請求淹沒,或者如果服務器是遠程的,這也可能是互聯網速度問題。
服務器負載
服務器可能會因大量作業而不堪重負。
慢查詢
select您在insert命令中使用的 也可能非常慢。測驗它的速度是有意義的。此外,測驗insert速度也是有意義的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/342568.html
