試想有這麼一幕。例如一張 test表,裡面有欄位
count:0
name:'abc'
當使用者開啟一個編輯介面的時候,從資料庫裡面讀取的資料是
count:3
name:'abc'
然後他改了一個name,變成了這樣
count:3
name:'efg'
此時此刻,這個test表,其他程式在高速的讀寫。因為使用者還沒儲存資料到資料表,其他程式儲存的資料就是
count:40
name:'abc'
不斷的改變count字段,變成41、42、43,此時使用者修改完畢,儲存資料到資料庫,此時儲存的最終資料是
count:3
name:'efg'
然後問題就出來了。 。 。 count字段資料有問題了。
如何解決這個問題?
1、要嘛把count欄位分開到另外一個表,然後兩個表關聯起來,互不干擾。不過這樣數據讀的時候需要讀兩個表,有點麻煩了。
2、用戶儲存資料的時候,只更新必要的欄位。例如count字段從資料庫讀取舊的。不過當資料表有幾十個欄位的時候,這樣,程式略顯煩瑣。
請問你們是如何解決的?
天蓬老师2017-06-05 11:14:48
典型的事務問題。
你用的什麼資料庫?學過事務嗎?去學你使用的資料庫如何支援事務的。
簡單說就是:給資料加鎖,使同一時間只能有一個client做讀寫操作,其它client都得等。