


Lösung zum Generieren einer eindeutigen Datenbank-ID in verteilten Situationen
ID als eindeutige Kennung des Unternehmens wird häufig im Datendesign verwendet, zum Beispiel:
•Produkt – Produkt_ID
•Bestellung – Bestell_ID
•Message—— message_id
Diese Bezeichner sind oft der Primärschlüssel der Datenbank. MySQL erstellt einen Clustered-Index für den Primärschlüssel. Im Vergleich zum normalen Index, der auf den Clustered-Index verweist, reduziert er eine Indexabfrage und ist sehr schnell. Unternehmen wie Nachrichten und Bestellungen müssen im Allgemeinen Daten in umgekehrter chronologischer Reihenfolge abfragen. Eine Möglichkeit besteht darin, einen Index für die Zeitspalte zu erstellen. Es ist besser, sich auf die Einfügereihenfolge der ID selbst zu verlassen. Daher muss die verteilte ID zwei Kernbedingungen erfüllen:
• Global eindeutig
• Zeitlicher Trend in der Reihenfolge
Manche Leute sagen vielleicht, dass es nicht möglich ist, MySQLs auto_increment zu verwenden direkt. Reicht das? In der Anfangszeit eines Unternehmens würde ich mich auch für diese Lösung entscheiden. Sie ist einfach, effizient und schnell – Startups müssen immer noch schnell iterieren und Produkte so schnell wie möglich produzieren, und Produkte ändern sich häufig Zeit für die Entwicklung ist möglicherweise nicht sinnvoll. Ja, es wurde wertvolle Zeit verschwendet. Allerdings gibt es bei dieser Lösung einige Probleme:
• Beeinflusst das parallele Einfügen – Datensatz B hängt vom Primärschlüssel von Datensatz A ab. Sie müssen warten, bis Datensatz A erfolgreich eingefügt wurde, und A.id erhalten, bevor Sie können Datensatz B einfügen
•Die Datenwiederherstellung ist schwierig – nachdem die Daten versehentlich gelöscht wurden oder verloren gegangen sind, da im Protokoll keine ID vorhanden ist, kann die Datenkorrelation nicht direkt bestimmt werden
• Betrifft den Sub -Datenbank und Untertabelle – da die ID eingegeben werden muss, um bekannt zu sein, können Datenbanken und Tabellen nicht basierend auf dem Primärschlüssel des Unternehmens aufgeteilt werden
Daher müssen Sie sich Zeit nehmen, nachdem das Unternehmen stabil ist um vorzeitige technische Schulden abzubezahlen.
Gemeinsame Lösungen
Verwenden Sie das Auto_Inkrement der Datenbank, um eine eindeutige ID zu generieren
Vorteile
•Einfach, Nutzung vorhandener Funktionen, geringer Entwicklungsaufwand
•ID-Schrittgröße ist fest
Nachteile
•Einzelner Schreibpunkt, nicht hochverfügbar
•Auch wenn mehrere Hauptbibliotheken entsprechend unterschiedlichem Auto_Inkrement erweitert werden Ausgangspunkte verbessern zwar die Verfügbarkeit, können aber die strikte Reihenfolge der IDs nicht garantieren
• Sie müssen jedes Mal auf die Datenbank zugreifen, wodurch leicht die Leistungsobergrenze erreicht werden kann
IDs stapelweise abrufen und Weisen Sie sie einzeln zu
Diese Art von Die Lösung besteht darin, die ID-Daten in der Datenbank zu speichern. Der ID-Dienst ruft jedes Mal N IDs aus der Datenbank ab und aktualisiert den aktuellen maximalen ID-Wert auf die Originaldaten N. Der ID-Dienst beginnt bei jedem Empfang einer ID-Generierungsanforderung mit diesem N. Die IDs werden der Reihe nach zurückgegeben.
Vorteile
•Batch-Erfassung, nicht jedes Mal auf die Datenbank zugreifen müssen, geringer Datenbankdruck
Nachteile
•Der gesamte Service ist immer noch ein einziger Punkt
•Dienstausfall und Neustart führen zu ID-Unterbrechungen
•Horizontale Erweiterung nicht möglich
Verbesserung
Fügen Sie einen Backup-Dienst hinzu, wenn der Hauptdienst hängt Wenn es aktiviert ist, wird es zum Backup-Dienst weitergeleitet. Sie können vip keepalived verwenden oder einen Proxy hinzufügen.
uuid
Vorteile
•Lokale Generierung von IDs, kein Single Point of Problems, keine Leistungsengpässe
Nachteile
•Inkrement ist nicht garantiert Bestellt
•Die Länge ist zu lang und die Leistung als Primärschlüssel ist gering
Snowflake-ähnlicher Algorithmus
Snowflake ist Twitters Open-Source-Algorithmus zur verteilten ID-Generierung Die Kernidee ist: Eine lange Typ-ID verwendet 41 Bit als Anzahl der Millisekunden, 10 Bit als Maschinennummer und 12 Bit als Seriennummer innerhalb von Millisekunden. Dieser Algorithmus kann theoretisch bis zu 1000 * (2 ^ 12) oder 400 W-IDs pro Sekunde auf einem einzelnen Computer generieren, was den Geschäftsanforderungen vollständig gerecht wird.
Basierend auf den Ideen von Snowflake und der Kombination der Geschäftslogik und Parallelität jedes Unternehmens können Sie Ihren eigenen verteilten ID-Generierungsalgorithmus implementieren.
Vorteile
•Zeit ist auf hohem Niveau, Tendenz steigend
•Einfache Implementierung, nicht auf andere Dienste angewiesen, leicht erweiterbar
Nachteile
•Es gibt keine globale Uhr und eine einzelne Maschine ist absolut in Ordnung, aber aus Sicht des gesamten Clusters ist der Trend in Ordnung
Anmerkungen
•Da die ID häufig als Kennung für Unterdatenbanken und Tabellen verwendet wird, ist es erforderlich, dass diese IDs einen gewissen Grad an Zufälligkeit aufweisen, damit die Daten nach der Aufteilung nicht ungerade sind. Die Sequenznummer darf nicht bei 1 beginnen von jeder Millisekunde. Zweitens kann es von 0 bis 9 beginnen

Speichernde Verfahren sind vorkompilierte SQL -Anweisungen in MySQL zur Verbesserung der Leistung und zur Vereinfachung komplexer Vorgänge. 1. Verbesserung der Leistung: Nach der ersten Zusammenstellung müssen nachfolgende Anrufe nicht neu kompiliert werden. 2. Die Sicherheit verbessern: Beschränken Sie den Zugriff auf die Datenentabelle durch Berechtigungssteuerung. 3. Vereinfachen Sie komplexe Operationen: Kombinieren Sie mehrere SQL -Anweisungen, um die Logik der Anwendungsschicht zu vereinfachen.

Das Arbeitsprinzip des MySQL -Abfrage -Cache besteht darin, die Ergebnisse der ausgewählten Abfrage zu speichern. Wenn dieselbe Abfrage erneut ausgeführt wird, werden die zwischengespeicherten Ergebnisse direkt zurückgegeben. 1) Abfrage -Cache verbessert die Leistung der Datenbank und findet zwischengespeicherte Ergebnisse durch Hash -Werte. 2) Einfache Konfiguration, setzen Sie in MySQL -Konfigurationsdatei query_cache_type und query_cache_size. 3) Verwenden Sie das Schlüsselwort SQL_NO_Cache, um den Cache spezifischer Abfragen zu deaktivieren. 4) In Hochfrequenz-Update-Umgebungen kann Abfrage-Cache Leistungs Engpässe verursachen und muss für die Verwendung durch Überwachung und Anpassung von Parametern optimiert werden.

Die Gründe, warum MySQL in verschiedenen Projekten häufig verwendet wird, umfassen: 1. Hochleistungs und Skalierbarkeit, die mehrere Speichermotoren unterstützen; 2. Einfach zu verwendende und pflegende, einfache Konfiguration und reichhaltige Werkzeuge; 3. Reiches Ökosystem, das eine große Anzahl von Community- und Drittanbietern anzieht; V.

Zu den Schritten für die Aktualisierung der MySQL -Datenbank gehören: 1. Sicherung der Datenbank, 2. Stoppen Sie den aktuellen MySQL -Dienst, 3. Installieren Sie die neue Version von MySQL, 14. Starten Sie die neue Version des MySQL -Dienstes, 5. Wiederherstellen Sie die Datenbank wieder her. Während des Upgrade -Prozesses sind Kompatibilitätsprobleme erforderlich, und erweiterte Tools wie Perconatoolkit können zum Testen und Optimieren verwendet werden.

Zu den MySQL-Backup-Richtlinien gehören logische Sicherungen, physische Sicherungen, inkrementelle Sicherungen, replikationsbasierte Backups und Cloud-Backups. 1. Logical Backup verwendet MySQldump, um die Datenbankstruktur und -daten zu exportieren, die für kleine Datenbanken und Versionsmigrationen geeignet sind. 2. Physische Sicherungen sind durch das Kopieren von Datendateien schnell und umfassend, erfordern jedoch eine Datenbankkonsistenz. 3. Incremental Backup verwendet eine binäre Protokollierung, um Änderungen aufzuzeichnen, was für große Datenbanken geeignet ist. V. 5. Cloud -Backups wie AmazonRDs bieten Automatisierungslösungen, aber Kosten und Kontrolle müssen berücksichtigt werden. Bei der Auswahl einer Richtlinie sollten Datenbankgröße, Ausfallzeittoleranz, Wiederherstellungszeit und Wiederherstellungspunktziele berücksichtigt werden.

MysqlclusteringenhancesDatabaserObustnessandScalabilityBydiTributingDataacrossmultiPlenodes

Das Optimieren von Datenbankschema -Design in MySQL kann die Leistung in den folgenden Schritten verbessern: 1. Indexoptimierung: Erstellen Sie Indizes für gemeinsame Abfragespalten, Ausgleich des Aufwand der Abfragen und Einfügen von Aktualisierungen. 2. Tabellenstrukturoptimierung: Redundieren Sie die Datenreduktion durch Normalisierung oder Anti-Normalisierung und verbessern Sie die Zugangseffizienz. 3. Datentypauswahl: Verwenden Sie geeignete Datentypen, z. B. int anstelle von VARCHAR, um den Speicherplatz zu reduzieren. 4. Partitionierung und Untertisch: Verwenden Sie für große Datenvolumina die Partitionierung und Untertabelle, um Daten zu dispergieren, um die Abfrage- und Wartungseffizienz zu verbessern.

TooptimizeMySQLperformance,followthesesteps:1)Implementproperindexingtospeedupqueries,2)UseEXPLAINtoanalyzeandoptimizequeryperformance,3)Adjustserverconfigurationsettingslikeinnodb_buffer_pool_sizeandmax_connections,4)Usepartitioningforlargetablestoi


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

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

DVWA
Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

MantisBT
Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

SecLists
SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

PHPStorm Mac-Version
Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung
