Stellen Sie sich eine solche Szene vor. Beispielsweise enth?lt eine Testtabelle Felder
count:0
name:'abc'
Wenn der Benutzer eine Bearbeitungsoberfl?che ?ffnet, werden die aus der Datenbank gelesenen Daten
count:3
name:'abc'
Dann ?nderte er seinen Namen und es wurde so
count:3
name:'efg'
Zu diesem Zeitpunkt lesen und schreiben andere Programme diese Testtabelle mit hoher Geschwindigkeit. Da der Benutzer die Daten nicht in der Datentabelle gespeichert hat, sind die von anderen Programmen gespeicherten Daten
count:40
name:'abc'
?ndern Sie das Z?hlfeld kontinuierlich auf 41, 42, 43. Zu diesem Zeitpunkt hat der Benutzer die ?nderung abgeschlossen und die Daten in der Datenbank gespeichert. Die endgültigen zu diesem Zeitpunkt gespeicherten Daten sind
count:3
name:'efg'
Dann entsteht das Problem. . . Es liegt ein Problem mit den Z?hlfelddaten vor.
Wie kann dieses Problem gel?st werden?
1. Trennen Sie entweder das Z?hlfeld in eine andere Tabelle und verknüpfen Sie dann die beiden Tabellen, ohne sich gegenseitig zu st?ren. Wenn Daten auf diese Weise gelesen werden, müssen jedoch zwei Tabellen gelesen werden, was etwas mühsam ist.
2. Wenn Benutzer Daten speichern, aktualisieren Sie nur die erforderlichen Felder. Beispielsweise liest das Z?hlfeld das alte aus der Datenbank. Wenn die Datentabelle jedoch Dutzende Felder enth?lt, ist das Verfahren etwas umst?ndlich.
Wie hast du es gel?st?
ringa_lee
典型的事務(wù)問題。
你用的什么數(shù)據(jù)庫?學(xué)過事務(wù)嗎?去學(xué)學(xué)你使用的數(shù)據(jù)庫如何支持事務(wù)的。
簡單說就是:給數(shù)據(jù)加鎖,使同一時(shí)間只能有一個(gè)client做讀寫操作,其它c(diǎn)lient都得等著。