為什麼常常遇到 Record Lock? 可以如何避免?
當系統愈來愈複雜、data volume 水漲船高、系統間integration 交錯縱橫、automated process 與日俱增……你可能會愈來愈常遇到這種 error message:
error: UNABLE_TO_LOCK_ROW, unable to obtain exclusive access to this record
此時你可能會好奇,哪可能就這麼巧、其它人也在同時操作同一個 record!?
其實被鎖住的原因不一定是在這筆 record 本身,以下列兩個可能性:
- 有太多 child record 擠在同一個 parent record 下。
當 child 被操作的時候,會連同 parent 一起鎖住。所以當你操作的 record 是與很多其它 record 共享一個 parent 時,就有高機率被鎖住。 - 太多 record 都 lookup 到同一筆 record。
當 record 被操作的時候,會連同此 record 所 lookup 的 record 一起鎖住。所以當你操作的 record 是與很多其它 record 共同 lookup 到同一個 record 時,就有高機率被鎖住。
相關案例延伸閱讀:
針對 LDV (Large Data Volume)的設計概念與技巧,可以參考這個 module,值得一讀:
Large Data Volumes > Design Your Data Model
留言
張貼留言