iT邦幫忙

1

資料庫調校心得--偵錯篇

減少 LOCK 的最好方法, 是縮短交易時間, 例如調整索引或改寫SQL, 還有長交易切割成數個短交易, 最好不要用 SET LOCK_TIMEOUT, NOLOCK 這是抑制資料庫鎖定機制, 可能會產生異常及資料不精確.
a. set LOCK_TIMEOUT 20 : 是連線層級參數(SESSION PARAMETER) , 是這連線在這參數以後的每一個SQL指令, 若遇到要等待在20ms以內則執行此SQL指令, 等待超出20ms則會跳過此SQL指令(過站不停), 會造成漏失.

b. nolock : 是忽略任何鎖定, 其實在資料庫機制是蠻複雜的, 忽略鎖定會有可能出現不可預期的資料.

建議若要求數據精確, 則少用抑制資料庫機制的參數或提示, 才可少花時間在資料問題查找.


1 則留言

0
Albert
iT邦高手 1 級 ‧ 2012-10-15 14:30:38

charmmih提到:
減少 LOCK 的最好方法, 是縮短交易時間, 例如調整索引或改寫SQL,

在大型系統裡

沒是千萬別用 UPDATE 指令

一堆Oracle EBS 美國印度 原廠工程師

沒看過 [代工業] 的資料量是 千萬倍於 [品牌業]

就傻傻的用了Update 在模擬運算過程

千萬筆運算就垮了

我們專精於 Oracle EBS 效率精進
我們是全球最大開源 ERP Adempiere 開發團隊
技術轉移顧問
Albert
Skype:Adempiere/Compiere

Albert iT邦高手 1 級 ‧ 2012-10-15 14:51:33 檢舉

albertachen提到:
沒是千萬別用 UPDATE 指令

沒事
千萬別用 UPDATE 指令

charmmih iT邦研究生 5 級 ‧ 2012-10-16 18:03:51 檢舉

是啊...交易指令小心下

sunrandy iT邦新手 1 級 ‧ 2012-10-17 10:34:09 檢舉

albertachen提到:
千萬別用 UPDATE 指令

千萬別幫USER直接後端用UPDATE指令,出事只有自己啞巴吃黃蓮 嘆氣

我要留言

立即登入留言