在做乙個併發搶購功能,使用併發鎖庫存邏輯後,發現還有漏網之魚導致超賣。
調查後,發現庫存資料鎖定成功,但存在幾筆失敗,即扣完庫存後被別的更新覆蓋了,出現該問題主要是設計問題,鎖庫存欄位被多方更新,通過更改,使得庫存更新只能通過專門方法解決該問題。
此處主要想記錄解決問題的方法。
1、通過日誌調查知道庫存鎖定成功,但何時被誰覆蓋未知
2、通過mysql的binlog,檢視出問題時間對該錶的update操作,發現了更新的記錄從而定位問題
此處打個tag記錄調查語句及方法
mysqlbinlog --start-datetime='2019-07-24 09:22:57' --stop-datetime='2019-07-24 09:22:57' -d lfcp_txwuzhendai_web /mnt/disk1/data/mysql/binlog.000039 --base64-output=decode-rows -v
mysqlbinlog --start-datetime='2019-07-24 09:22:57' --stop-datetime='2019-07-24 10:00:00' -d lfcp_txwuzhendai_web /mnt/disk1/data/mysql/binlog.000039 --base64-output=decode-rows -v >/home/mysql.20190724092257-100000.txt
解決併發問題
一.使用redis鎖 智慧型雲 工單系統 搶單 工單id鎖key public static final string cloud live gain order lock orderid cloud live gain order lock orderid component public cla...
Connection併發問題
connection lock getconnection lock.setautocommit false lock.createstatement execute select from zhaojianyong for update final connection connection ge...
hive併發問題
hive 併發模型 使用案例 併發支援 是資料庫的必須,而且他們的使用案例很好懂。至少,我們要盡可能支援併發讀和寫。新增幾個發現當前已經鎖定的鎖,是有用的。這裡沒有乙個直接的需求新增乙個api顯式獲取鎖,所以,所有鎖都是隱式獲取的。hive定義一下模式的鎖 注意不需要意向鎖 共享 s 排他 x 見名...