Ich bin während der Entwicklung auf ein solches Problem gestoßen Ein auf 100 aktualisierter Video-Wiedergabedatensatz bedeutet, dass das Video angesehen wurde, und wird bei nachfolgenden Anfragen nicht aktualisiert. sich herausstellen: Daher sind viele der darin enthaltenen Daten problematisch. Es wird spekuliert, dass die folgenden Umstände dazu führen werden, Die erste Anforderungstransaktion wird ausgeführt und wurde noch nicht festgeschrieben (da die lokale Reproduktion manchmal schwierig ist, schlafe ich das Programm bei der Verarbeitung des ersten Datensatzes manuell einige Sekunden lang, um diesen Effekt zu erzielen). Die Ausführung der zweiten Anforderungstransaktion wurde begonnen. Zu diesem Zeitpunkt beträgt der gefundene historische Maximalwert nicht 100 und wird daher aktualisiert. Ich habe im Internet nach der Lösung gesucht: Pessimistische Sperre Direktes Sperren von Zeilendatensätzen Ich habe das lokal getestet und es funktioniert wirklich. Eine Transaktion wird gestartet, aber nicht beendet, und die zweite Transaktion wartet. Aufgrund der Systemparallelität wird es jedoch zu einem Blockierungszustand kommen. Ich wage es nicht, darüber nachzudenken, also zeichne ich diese Methode einfach auf. Manuelle Simulation: Führen Sie die erste Transaktion aus: -- Video 100 BEGINNT; Wählen Sie * aus `biz_coursestudyhistory`, wobei sid = 5777166; UPDATE biz_coursestudyhistory setze studyStatus = 100,versionNO=versionNO+1, wobei sid = 1 UND versionNO = 0; - commit; Nicht zuerst ausführen, zuerst kommentieren und nur das oben genannte ausführen Führen Sie dann die zweite Transaktion aus: BEGINNEN; UPDATE biz_coursestudyhistory setze studyStatus = 90,versionNO=versionNO+1, wobei sid = 1 UND versionNO = 0; Wählen Sie * aus `biz_coursestudyhistory`, wobei sid = 1 für Update ist; BEGEHEN; Sie werden feststellen, dass Ihnen kein Erfolg gelingt und Sie sich immer in einem Wartezustand befinden. Schlösser ansehen Es ist tatsächlich gesperrt. Hier wird die zweite Transaktion ausgeführt, solange das Commit der ersten Transaktion ausgeführt wird. Daraus können wir ersehen, dass Zeilensperren direkt den idealen Zustand der Datenvereinigung erreichen können. Wenn eine Transaktion geändert wird, können andere Vorgänge nicht ausgeführt werden. Ich denke, dass dies für Sicherheitsprojekte wie Banken besser geeignet ist. Optimistisches Sperren: Das ist einfacher und verursacht keine Blockierung Der Weg besteht darin, die Versionsnummer hinzuzufügen Zum Aktualisieren verwenden Sie Geschriebene Wörter INSERT in Tabelle (contentStudyID,courseWareID,studyStatus,studyTime,endTime) Wählen Sie 27047358,3163,100,333,NOW() aus dual, wo nicht vorhanden (wählen Sie 1 aus Tabelle, wo contentStudyID =27047358 und Kursware-ID = 3163 ) Auf diese Weise können Sie beim Aktualisieren oder Schreiben direkt feststellen, ob die Daten in der Bibliothek vorhanden sind. Wenn sie nicht vorhanden sind, werden sie von anderen Threads verwendet. Nach der Umstellung auf diesen Schreibstil und der Verwendung von JMeter für Multithread-Tests waren die anfänglichen Aktualisierungen mehrerer Datensätze erfolgreich, jetzt ist jedoch nur noch ein Datensatz erfolgreich und der Rest schlägt fehl. Vom Einfügen mehrerer Datensätze am Anfang bis zum Einfügen nur eines Datensatzes später Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: Beispielcode zur Konvertierung von http in https mit nginx
Ich bin erst kürzlich zufällig auf diese kleine A...
Vorwort Je nach Projektbedarf wird Vue-Touch verw...
Inhaltsverzeichnis Das Grundkonzept der Modularit...
Der Autor arbeitet seit über einem Jahr an einem ...
Inhaltsverzeichnis 1. Seitenlayout 2. Bild-Upload...
Experimentelle Umgebung: Physische Maschine Windo...
Inhaltsverzeichnis 1. Zugehörige Konfiguration Fa...
Inhaltsverzeichnis 1. Konfigurieren Sie das Vue-F...
Inhaltsverzeichnis Vorwort 1. 404 Seite 1. Ursach...
JSONObject ist lediglich eine Datenstruktur, die ...
Bevor Sie idea zum Schreiben von JSP-Dateien verw...
Ich konnte nie herausfinden, ob der Port belegt i...
Warum sollten wir das Protokoll lesen? Wenn beisp...
1. Hintergrund Die Projekte des Unternehmens wurd...
Der Sortierbefehl wird sehr häufig verwendet, ver...