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?
典型的事务问题。
你用的什么数据库?学过事务吗?去学学你使用的数据库如何支持事务的。
简单说就是:给数据加锁,使同一时间只能有一个client做读写操作,其它client都得等着。