Cache-Datentabellen werden häufig beim Erfassen statistischer Daten verwendet und daher auch als statistische Daten bezeichnet. Beispielsweise müssen wir möglicherweise bei Mitarbeiter- und Abteilungsdatentabellen abfragen, wie viele Mitarbeiter in einer Abteilung beschäftigt sind. Es gibt drei Möglichkeiten, dies zu erreichen:
Am Beispiel des mobilen persönlichen Zentrums von Nuggets ist es nicht möglich, für jede Abfrage eine SUMME durchzuführen, um die Anzahl der Follower, Follower und den Nuggets-Power-Wert jedes Benutzers anzuzeigen. Dies bedeutet, dass SUM-Operationen mehrerer Tabellen durchgeführt werden müssen, was sehr ineffizient wäre. Darüber hinaus erfordert die Berechnung des Nuggets-Power-Werts eine komplexere Berechnungsmethode (bezogen auf die Anzahl der Aufrufe und Likes des Artikels). Daher können wir das allgemeine Tabellendesign erraten, sodass beim Abfragen der persönlichen Homepage-Informationen des Benutzers alle Daten aus dieser Tabelle gelesen werden können. ERSTELLEN Sie t_user_summay ( ID INT Primärschlüssel, Benutzer-ID BIGINT(20), fokussierter_Benutzer_cnt INT, gefolgt_Benutzer_cnt INT, Benutzerwert INT, Benutzerebene ENUM('Lv1', 'Lv2', ..., 'Lv8'), Erstellungszeit DATETIME, aktualisierte_Zeit DATETIME, ); Ist eine Echtzeitaktualisierung erforderlich?In der tatsächlichen Anwendung gibt es zwei Möglichkeiten, die statistische Tabelle zu aktualisieren: Eine ist die Echtzeitaktualisierung und die andere ist die regelmäßige Rekonstruktion der Daten. Beide Methoden haben ihre Vor- und Nachteile. Echtzeitaktualisierungen stellen die Unmittelbarkeit der Abfragedaten sicher, beeinträchtigen jedoch die Leistung und erfordern die Einbettung von Code. Da Datenaktualisierungen unregelmäßig erfolgen, kann es außerdem zu Fragmentierung kommen. Die regelmäßige Rekonstruktion von Daten geht zu Lasten der Echtzeitleistung. Wenn sich die meisten Daten nicht ändern, führt dies zu unnötigen statistischen Berechnungen. Wenn sich die Daten jedoch häufig ändern, ist die regelmäßige Rekonstruktion der Daten offensichtlich effizienter und vermeidet die Situation vergrabener Punkte. Natürlich kann das Einbetten von Anwendungen auch durch Trigger vermieden werden. Weitere Informationen finden Sie unter //www.jb51.net/article/213062.htm Materialisiertes Ansichtstool (Flexviews)In MySQL gibt es ein Open-Source-Tool namens Flexviews, das zum Extrahieren von Daten aus dem Datenbank-Binlog verwendet wird, um Datenstatistiken zu vervollständigen. Es ähnelt in gewisser Weise einer Ansicht, unterscheidet sich jedoch von einer Ansicht darin, dass die von Flexviews generierte Datentabelle eine physische Tabelle ist, weshalb sie als materialisierte Ansicht bezeichnet wird. Darüber hinaus unterstützt Flexviews auch inkrementelle Updates und vollständige Updates. Es wird empfohlen, inkrementelle Aktualisierungen zu verwenden, um zu vermeiden, dass die Statistiken für alle Zeilen neu erstellt werden müssen. Bei inkrementellen Updates wird vor der Durchführung des Updates geprüft, welche Zeilen sich geändert haben. Dies ist leistungsstärker als bei vollständigen Updates. Um Datenänderungen zu erkennen, muss jedoch eine Ansicht eingeführt werden, um das Änderungsprotokoll der Datenzeilen aufzuzeichnen. ZähltabelleBei der tatsächlichen Entwicklung müssen wir häufig einige Vorgänge zählen, beispielsweise die Anzahl der Artikellesungen und Likes. Werden die Zählwerte in die gleiche Tabelle eingetragen, kann es beim Aktualisieren zu Parallelitätsproblemen kommen. Durch die Verwendung einer separaten Zähltabelle können Probleme mit der Ungültigkeit des Abfragecaches vermieden und einige fortgeschrittenere Techniken ermöglicht werden. Beispielsweise eine Datentabelle, die die Anzahl der Artikel-Leser und Likes zählt: CREATE TABLE t_article_counter ( Artikel-ID INT PRIMARY KEY, read_cnt INT UNSIGNED NOT NULL, Lob_cnt INT UNSIGNED NOT NULL ); Beim Aktualisieren der Leseanzahl können Sie die in MySQL integrierte Inkrementierungsoperation verwenden: UPDATE t_article_counter SETze read_cnt = read_cnt + 1 WO Artikel-ID = 1; Mit dieser Methode kann die Operation einzeilig und für Dinge gegenseitig ausschließend gestaltet werden, wodurch die Transaktionen serialisiert werden und Parallelitätsprobleme vermieden werden. Dies wirkt sich jedoch auf die Anzahl gleichzeitiger Anfragen aus. Sie können einem Artikel mehrere Slots hinzufügen, um die Parallelität zu erhöhen. CREATE TABLE t_article_counter ( id INT NICHT NULL PRIMÄRSCHLÜSSEL, Steckplatz TINYINT UNSIGNED, Artikel-ID INT, read_cnt INT UNSIGNED NOT NULL, lob_cnt INT UNSIGNED NOT NULL, INDEX(Artikel-ID) ); Zu diesem Zeitpunkt können Sie 100 Slots erstellen, um die Daten zu initialisieren, und beim Aktualisieren Folgendes tun: UPDATE t_article_counter SETze read_cnt = read_cnt + 1 WO Slot = RAND() * 100 UND Artikel-ID = 1; Um die Gesamtzahl der Lesevorgänge für einen Artikel zu ermitteln, müssen Sie eine SUM-Operation verwenden: Wählen Sie SUM (read_cnt) aus t_article_counter WO Artikel-ID = 1; Bei dieser Methode wird tatsächlich Speicherplatz gegen Zeit getauscht und die Parallelität erhöht. ZusammenfassenDieser Artikel beschreibt, wie man statistische Datentabellen entwirft. Der Schlüssel liegt in der Art des Unternehmens. Bei Tabellen mit niedriger Aktualisierungsfrequenz und kleinem Datenvolumen ist die Verwendung von Echtzeitsynchronisierung oder direktem SUM kein Problem. Für große Datentabellen mit häufigen Aktualisierungen können unabhängige statistische Tabellen verwendet werden. Gleichzeitig kann bei einer hohen Parallelität die statistische Tabelle das Hinzufügen mehrerer Slots zu jeder Entität in Betracht ziehen, um die Parallelität zu erhöhen. Wenn Sie Daten regelmäßig synchronisieren möchten, können Sie auch das Plug-In „Materialisierte Ansicht“ von Flexviews verwenden. Oben finden Sie Einzelheiten zum Entwerfen statistischer Datentabellen in MySQL. Weitere Informationen zum Entwerfen statistischer Datentabellen in MySQL finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Detaillierte Erklärung des this-Pointing-Problems von JavaScript-Prototypobjekten
>>: Detailliertes Tutorial zur Installation von Harbor Private Warehouse mit Docker Compose
Datenbereinigung (ETL) Vor dem Ausführen des MapR...
Beim Entwickeln einer Website müssen Sie häufig e...
Dieser Artikel teilt den spezifischen Code des er...
In diesem Artikel erfahren Sie, wie Sie das benut...
Dieser Artikel veranschaulicht anhand von Beispie...
Inhaltsverzeichnis Warum Docker verwenden? Docker...
Vorwort In der MySQL-Datenbank verwenden wir manc...
Inhaltsverzeichnis 1. Laden Sie nodejs herunter 2...
Inhaltsverzeichnis 1: Webpack erstellen 2. Datend...
In diesem Artikelbeispiel wird der spezifische Co...
Einige Attribute zu Elementen Bei der täglichen E...
So überprüfen Sie den Status der Linux-Firewall 1...
1. Einleitung Nginx ist ein kostenloser, quelloff...
ins und del wurden in HTML 4.0 eingeführt, um Auto...
Installationsumgebung Windows 10 VMware Workstati...