


Analysieren Sie, ob die Aktualisierung der geänderten Daten in MySQL mit den Originaldaten übereinstimmt und erneut ausgeführt wird
Der Inhalt dieses Artikels befasst sich mit der Analyse, ob die geänderten Daten in MySQL erneut ausgeführt werden, wenn sie mit den Originaldaten übereinstimmen. Ich hoffe, dass dies der Fall ist Dir hilfreich sein.
In diesem Artikel wird hauptsächlich getestet, wann MySQL die Update-Anweisung ausführt. Wird die Update-Anweisung, die mit den Originaldaten übereinstimmt (d. h. nicht geändert), in MySQL erneut ausgeführt?
Testumgebung
- MySQL5.7.25
- Centos 7.4
binlog_format ist ROW
Parameter
root@localhost : (none) 04:53:15> show variables like 'binlog_row_image'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | binlog_row_image | FULL | +------------------+-------+ 1 row in set (0.00 sec) root@localhost : (none) 04:53:49> show variables like 'binlog_format'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | binlog_format | ROW | +---------------+-------+ 1 row in set (0.00 sec) root@localhost : test 05:15:14> show variables like 'transaction_isolation'; +-----------------------+-----------------+ | Variable_name | Value | +-----------------------+-----------------+ | transaction_isolation | REPEATABLE-READ | +-----------------------+-----------------+ 1 row in set (0.00 sec)
Testschritte
Sitzung1
root@localhost : test 04:49:48> begin; Query OK, 0 rows affected (0.00 sec) root@localhost : test 04:49:52> select * from test where id =1; +----+------+------+------+ | id | sid | mid | name | +----+------+------+------+ | 1 | 999 | 871 | NW | +----+------+------+------+ 1 row in set (0.00 sec) root@localhost : (none) 04:54:03> show engine innodb status\Gshow master status\G ... --- LOG --- Log sequence number 12090390 Log flushed up to 12090390 Pages flushed up to 12090390 Last checkpoint at 12090381 0 pending log flushes, 0 pending chkp writes 33 log i/o's done, 0.00 log i/o's/second *************************** 1. row *************************** File: mysql-bin.000001 Position: 154 Binlog_Do_DB: Binlog_Ignore_DB: Executed_Gtid_Set: 1 row in set (0.00 sec)
Sitzung2
root@localhost : test 04:47:45> update test set sid=55 where id =1; Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0 root@localhost : (none) 04:54:03> show engine innodb status\Gshow master status\G ... --- LOG --- Log sequence number 12091486 Log flushed up to 12091486 Pages flushed up to 12091486 Last checkpoint at 12091477 0 pending log flushes, 0 pending chkp writes 39 log i/o's done, 0.00 log i/o's/second *************************** 1. row *************************** File: mysql-bin.000001 Position: 500 Binlog_Do_DB: Binlog_Ignore_DB: Executed_Gtid_Set: 8392d215-4928-11e9-a751-0242ac110002:1 1 row in set (0.00 sec)
Sitzung1
root@localhost : test 04:49:57> update test set sid=55 where id =1; Query OK, 0 rows affected (0.00 sec) Rows matched: 1 Changed: 0 Warnings: 0 root@localhost : (none) 04:54:03> show engine innodb status\Gshow master status\G ... --- LOG --- Log sequence number 12091486 Log flushed up to 12091486 Pages flushed up to 12091486 Last checkpoint at 12091477 0 pending log flushes, 0 pending chkp writes 39 log i/o's done, 0.00 log i/o's/second *************************** 1. row *************************** File: mysql-bin.000001 Position: 500 Binlog_Do_DB: Binlog_Ignore_DB: Executed_Gtid_Set: 8392d215-4928-11e9-a751-0242ac110002:1 1 row in set (0.00 sec) root@localhost : test 04:52:05> select * from test where id =1; +----+------+------+------+ | id | sid | mid | name | +----+------+------+------+ | 1 | 999 | 871 | NW | +----+------+------+------+ 1 row in set (0.00 sec) root@localhost : test 04:52:42> commit; Query OK, 0 rows affected (0.00 sec) root@localhost : test 04:52:52> select * from test where id =1; +----+------+------+------+ | id | sid | mid | name | +----+------+------+------+ | 1 | 55 | 871 | NW | +----+------+------+------+ 1 row in set (0.00 sec)
Zusammenfassung
Wenn binlog_format=row und binlog_row_image=FULL, werden beim Auslesen der Daten alle Daten gelesen, da MySQL alle Felder im Binlog aufzeichnen muss Die Aktualisierung doppelter Daten wird nicht durchgeführt. Das heißt, MySQL ruft die von der InnoDB-Engine bereitgestellte Schnittstelle „Modify to (1,55)“ auf, aber die Engine stellt fest, dass der Wert mit dem Original übereinstimmt, aktualisiert ihn nicht und gibt direkt
binlog_format zurück als STATEMENT
Parameter
root@localhost : (none) 04:53:15> show variables like 'binlog_row_image'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | binlog_row_image | FULL | +------------------+-------+ 1 row in set (0.00 sec) root@localhost : (none) 05:16:08> show variables like 'binlog_format'; +---------------+-----------+ | Variable_name | Value | +---------------+-----------+ | binlog_format | STATEMENT | +---------------+-----------+ 1 row in set (0.00 sec) root@localhost : test 05:15:14> show variables like 'transaction_isolation'; +-----------------------+-----------------+ | Variable_name | Value | +-----------------------+-----------------+ | transaction_isolation | REPEATABLE-READ | +-----------------------+-----------------+ 1 row in set (0.00 sec)
Testschritte
session1
root@localhost : test 05:16:42> begin; Query OK, 0 rows affected (0.00 sec) root@localhost : test 05:16:44> select * from test where id =1; +----+------+------+------+ | id | sid | mid | name | +----+------+------+------+ | 1 | 111 | 871 | NW | +----+------+------+------+ 1 row in set (0.00 sec) root@localhost : (none) 05:16:51> show engine innodb status\Gshow master status\G ... --- LOG --- Log sequence number 12092582 Log flushed up to 12092582 Pages flushed up to 12092582 Last checkpoint at 12092573 0 pending log flushes, 0 pending chkp writes 45 log i/o's done, 0.00 log i/o's/second *************************** 1. row *************************** File: mysql-bin.000001 Position: 154 Binlog_Do_DB: Binlog_Ignore_DB: Executed_Gtid_Set: 1 row in set (0.00 sec)
session2
root@localhost : test 05:18:30> update test set sid=999 where id =1; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 root@localhost : (none) 05:18:47> show engine innodb status\Gshow master status\G ... --- LOG --- Log sequence number 12093678 Log flushed up to 12093678 Pages flushed up to 12093678 Last checkpoint at 12093669 0 pending log flushes, 0 pending chkp writes 51 log i/o's done, 0.14 log i/o's/second *************************** 1. row *************************** File: mysql-bin.000001 Position: 438 Binlog_Do_DB: Binlog_Ignore_DB: Executed_Gtid_Set: 8392d215-4928-11e9-a751-0242ac110002:1 1 row in set (0.00 sec)
session1
root@localhost : test 05:16:47> update test set sid=999 where id =1; Query OK, 0 rows affected (0.00 sec) Rows matched: 1 Changed: 0 Warnings: 0 root@localhost : (none) 05:20:03> show engine innodb status\Gshow master status\G ... --- LOG --- Log sequence number 12094504 Log flushed up to 12094504 Pages flushed up to 12094504 Last checkpoint at 12094495 0 pending log flushes, 0 pending chkp writes 56 log i/o's done, 0.00 log i/o's/second *************************** 1. row *************************** File: mysql-bin.000001 Position: 438 Binlog_Do_DB: Binlog_Ignore_DB: Executed_Gtid_Set: 8392d215-4928-11e9-a751-0242ac110002:1 1 row in set (0.00 sec) root@localhost : test 05:19:33> select * from test where id =1; +----+------+------+------+ | id | sid | mid | name | +----+------+------+------+ | 1 | 999 | 871 | NW | +----+------+------+------+ 1 row in set (0.00 sec) root@localhost : test 05:20:44> commit; Query OK, 0 rows affected (0.01 sec) root@localhost : test 05:20:57> select * from test where id =1; +----+------+------+------+ | id | sid | mid | name | +----+------+------+------+ | 1 | 999 | 871 | NW | +----+------+------+------+ 1 row in set (0.00 sec)
Zusammenfassung
Wenn binlog_format=statement und binlog_row_image=FULL, führt InnoDB die Update-Anweisung intern sorgfältig aus, d. h Durch den Vorgang „Diesen Wert auf (1.999) ändern“ sollte die Sperre gesperrt und das Update aktualisiert werden.
Das obige ist der detaillierte Inhalt vonAnalysieren Sie, ob die Aktualisierung der geänderten Daten in MySQL mit den Originaldaten übereinstimmt und erneut ausgeführt wird. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



MySQL ist ein Open Source Relational Database Management System. 1) Datenbank und Tabellen erstellen: Verwenden Sie die Befehle erstellte und creatEtable. 2) Grundlegende Vorgänge: Einfügen, aktualisieren, löschen und auswählen. 3) Fortgeschrittene Operationen: Join-, Unterabfrage- und Transaktionsverarbeitung. 4) Debugging -Fähigkeiten: Syntax, Datentyp und Berechtigungen überprüfen. 5) Optimierungsvorschläge: Verwenden Sie Indizes, vermeiden Sie ausgewählt* und verwenden Sie Transaktionen.

Sie können PhpMyAdmin in den folgenden Schritten öffnen: 1. Melden Sie sich beim Website -Bedienfeld an; 2. Finden und klicken Sie auf das Symbol phpmyadmin. 3. Geben Sie MySQL -Anmeldeinformationen ein; 4. Klicken Sie auf "Login".

MySQL ist ein Open Source Relational Database Management -System, das hauptsächlich zum schnellen und zuverlässigen Speicher und Abrufen von Daten verwendet wird. Sein Arbeitsprinzip umfasst Kundenanfragen, Abfragebedingungen, Ausführung von Abfragen und Rückgabergebnissen. Beispiele für die Nutzung sind das Erstellen von Tabellen, das Einsetzen und Abfragen von Daten sowie erweiterte Funktionen wie Join -Operationen. Häufige Fehler umfassen SQL -Syntax, Datentypen und Berechtigungen sowie Optimierungsvorschläge umfassen die Verwendung von Indizes, optimierte Abfragen und die Partitionierung von Tabellen.

MySQL wird für seine Leistung, Zuverlässigkeit, Benutzerfreundlichkeit und Unterstützung der Gemeinschaft ausgewählt. 1.MYSQL bietet effiziente Datenspeicher- und Abruffunktionen, die mehrere Datentypen und erweiterte Abfragevorgänge unterstützen. 2. Übernehmen Sie die Architektur der Client-Server und mehrere Speichermotoren, um die Transaktion und die Abfrageoptimierung zu unterstützen. 3. Einfach zu bedienend unterstützt eine Vielzahl von Betriebssystemen und Programmiersprachen. V.

Redis verwendet eine einzelne Gewindearchitektur, um hohe Leistung, Einfachheit und Konsistenz zu bieten. Es wird E/A-Multiplexing, Ereignisschleifen, nicht blockierende E/A und gemeinsame Speicher verwendet, um die Parallelität zu verbessern, jedoch mit Einschränkungen von Gleichzeitbeschränkungen, einem einzelnen Ausfallpunkt und ungeeigneter Schreib-intensiver Workloads.

MySQL und SQL sind wesentliche Fähigkeiten für Entwickler. 1.MYSQL ist ein Open -Source -Relational Database Management -System, und SQL ist die Standardsprache, die zum Verwalten und Betrieb von Datenbanken verwendet wird. 2.MYSQL unterstützt mehrere Speichermotoren durch effiziente Datenspeicher- und Abruffunktionen, und SQL vervollständigt komplexe Datenoperationen durch einfache Aussagen. 3. Beispiele für die Nutzung sind grundlegende Abfragen und fortgeschrittene Abfragen wie Filterung und Sortierung nach Zustand. 4. Häufige Fehler umfassen Syntaxfehler und Leistungsprobleme, die durch Überprüfung von SQL -Anweisungen und Verwendung von Erklärungsbefehlen optimiert werden können. 5. Leistungsoptimierungstechniken umfassen die Verwendung von Indizes, die Vermeidung vollständiger Tabellenscanning, Optimierung von Join -Operationen und Verbesserung der Code -Lesbarkeit.

Die Position von MySQL in Datenbanken und Programmierung ist sehr wichtig. Es handelt sich um ein Open -Source -Verwaltungssystem für relationale Datenbankverwaltung, das in verschiedenen Anwendungsszenarien häufig verwendet wird. 1) MySQL bietet effiziente Datenspeicher-, Organisations- und Abruffunktionen und unterstützt Systeme für Web-, Mobil- und Unternehmensebene. 2) Es verwendet eine Client-Server-Architektur, unterstützt mehrere Speichermotoren und Indexoptimierung. 3) Zu den grundlegenden Verwendungen gehören das Erstellen von Tabellen und das Einfügen von Daten, und erweiterte Verwendungen beinhalten Multi-Table-Verknüpfungen und komplexe Abfragen. 4) Häufig gestellte Fragen wie SQL -Syntaxfehler und Leistungsprobleme können durch den Befehl erklären und langsam abfragen. 5) Die Leistungsoptimierungsmethoden umfassen die rationale Verwendung von Indizes, eine optimierte Abfrage und die Verwendung von Caches. Zu den Best Practices gehört die Verwendung von Transaktionen und vorbereiteten Staten

Das Erstellen einer SQL -Datenbank umfasst 10 Schritte: Auswählen von DBMs; Installation von DBMs; Erstellen einer Datenbank; Erstellen einer Tabelle; Daten einfügen; Daten abrufen; Daten aktualisieren; Daten löschen; Benutzer verwalten; Sichern der Datenbank.
