減少 LOCK 的最好方法, 是縮短交易時間, 例如調整索引或改寫SQL, 還有長交易切割成數個短交易, 最好不要用 SET LOCK_TIMEOUT, NOLOCK 這是抑制資料庫鎖定機制, 可能會產生異常及資料不精確.
a. set LOCK_TIMEOUT 20 : 是連線層級參數(SESSION PARAMETER) , 是這連線在這參數以後的每一個SQL指令, 若遇到要等待在20ms以內則執行此SQL指令, 等待超出20ms則會跳過此SQL指令(過站不停), 會造成漏失.
b. nolock : 是忽略任何鎖定, 其實在資料庫機制是蠻複雜的, 忽略鎖定會有可能出現不可預期的資料.
建議若要求數據精確, 則少用抑制資料庫機制的參數或提示, 才可少花時間在資料問題查找.
charmmih提到:
減少 LOCK 的最好方法, 是縮短交易時間, 例如調整索引或改寫SQL,
在大型系統裡
沒是千萬別用 UPDATE 指令
一堆Oracle EBS 美國印度 原廠工程師
沒看過 [代工業] 的資料量是 千萬倍於 [品牌業]
就傻傻的用了Update 在模擬運算過程
千萬筆運算就垮了
我們專精於 Oracle EBS 效率精進
我們是全球最大開源 ERP Adempiere 開發團隊
技術轉移顧問
Albert
Skype:Adempiere/Compiere
albertachen提到:
沒是千萬別用 UPDATE 指令
沒事
千萬別用 UPDATE 指令
是啊...交易指令小心下
albertachen提到:
千萬別用 UPDATE 指令
千萬別幫USER直接後端用UPDATE指令,出事只有自己啞巴吃黃蓮