


SQLServer-Lösung für hohe Parallelität und Big-Data-Speicherung
Angesichts der steigenden Anzahl von Benutzern und der sprunghaft ansteigenden täglichen Aktivitäten und Spitzenwerte steht die Datenbankverarbeitungsleistung vor großen Herausforderungen. Teilen wir den Datenbankoptimierungsplan für die tatsächliche Plattform mit einem Spitzenwert von 100.000+. Diskutieren Sie mit allen und lernen Sie voneinander, um sich zu verbessern!
Fall: Spielplattform.
1. Lösung hoher Parallelität
Wenn die Anzahl der Clientverbindungen ihren Höhepunkt erreicht, ist die Aufrechterhaltung und Verarbeitung der Verbindungen durch den Server nicht möglich hier vorerst besprechen. Wenn mehrere Schreibanforderungen an die Datenbank gesendet werden, müssen zu diesem Zeitpunkt mehrere Tabellen eingefügt werden, insbesondere einige Ausdrücke, in denen mehrere zehn Millionen Daten pro Tag gespeichert werden. Mit der Zeit ist die herkömmliche Methode zum synchronen Schreiben von Daten offensichtlich nicht ratsam. Nachdem Experimente durch asynchrones Einfügen erheblich verbessert wurden, müssen gleichzeitig einige Abstriche bei der Echtzeitleistung beim Lesen von Daten gemacht werden.
Es gibt viele asynchrone Methoden. Die aktuelle Methode besteht darin, die Daten durch den Job in regelmäßigen Abständen (5 Minuten, 10 Minuten ... abhängig von den Anforderungseinstellungen) zu übertragen.
1. Es gibt die Originaltabelle A, die auch tatsächlich beim Lesen verwendet wird.
2. Erstellen Sie B und C mit der gleichen Struktur wie die ursprüngliche Tabelle A für die Datenübertragungsverarbeitung.
3. Erstellen Sie den Job Job1, der die Daten synchronisiert, und die Tabelle, die den laufenden Status von Job1 aufzeichnet. Das Wichtigste während der Synchronisierung ist, den aktuellen Status von Job1 zu überprüfen zu A, dann Die Daten vom Server werden in C gespeichert und dann werden die Daten nach B importiert. Dieser Datenstapel wird an A übertragen, wenn der nächste Job ausgeführt wird. Wie in Abbildung 1 dargestellt:
Gleichzeitig sollte zur Gewährleistung der Sicherheit und zur Erleichterung der Fehlerbehebung eine gespeicherte Prozedur verwendet werden, die die gesamte Datenbankinstanz aufzeichnet, um die zu überprüfen Die Auftragsausführung erfolgt in kürzerer Zeit. Wenn ein ungewöhnlicher Fehler auftritt, sollten die zuständigen Mitarbeiter umgehend auf andere Weise benachrichtigt werden. Schreiben Sie beispielsweise in die E-Mail- und SMS-Tabelle, lassen Sie ein Tcp-Benachrichtigungsprogramm regelmäßig lesen und senden usw.
Hinweis: Wenn die Daten pro Tag Dutzende G erreichen und für diese Tabelle Abfrageanforderungen bestehen (Partitionierung wird unten erwähnt), ist eine der besten Strategien:
Sie kann B mit mehreren Servern synchronisieren, die den Abfragedruck teilen und den Ressourcenwettbewerb verringern. Da die Ressourcen der gesamten Datenbank begrenzt sind, z. B. bei einem Einfügevorgang, wird zunächst eine gemeinsame Sperre abgerufen, dann wird eine bestimmte Datenzeile über den Clustered-Index lokalisiert und dann auf eine Absichtssperre aktualisiert, die SQL Server benötigt Je nach Speichergröße muss eine unterschiedliche Sperrenwartung beantragt werden, was zu einem Wettbewerb um Ressourcen führt. Daher sollten Lesen und Schreiben so weit wie möglich getrennt werden und je nach Geschäftsmodell oder festgelegten Regeln aufgeteilt werden können. Bei Plattformprojekten sollte der Schwerpunkt darauf gelegt werden, dass Daten effektiv eingefügt werden können.
Das Abfragen großer Datenmengen verbraucht auf jeden Fall viele Ressourcen. Wenn Sie auf eine Stapellöschung stoßen, können Sie zu einer zyklischen Stapelmethode wechseln (z. B. 2000 Elemente gleichzeitig), um dieses Problem nicht zu verursachen. Der Prozess führt dazu, dass sich die gesamte Bibliothek aufhängt, was zu einigen unvorhersehbaren Fehlern führt. Nach einiger Zeit ist es effektiv und machbar, aber es geht nur mit Stauraum einher. Felder mit einer großen Datenmenge in der Tabelle können je nach Abfrageanforderungen auch in neue Tabellen aufgeteilt werden. Diese sollten natürlich entsprechend den Anforderungen jedes Geschäftsszenarios festgelegt werden, und es kann eine geeignete, aber nicht auffällige Lösung entworfen werden.
2. Lösen Sie das Speicherproblem
Wenn die Daten in einer einzelnen Tabelle jeden Tag Dutzende Gigabyte erreichen, ist es selbstverständlich, die Speicherlösung zu verbessern. Jetzt möchte ich meinen eigenen Plan mitteilen, trotz der verheerenden Datenflut an vorderster Front zu bleiben! Hier ist ein Beispiel, um meine bescheidene Meinung zu meiner eigenen Umgebung zu teilen:
Bestehende Datentabelle A, eine einzelne Tabelle fügt jeden Tag 30 GB Daten hinzu und verwendet während der Speicherung die asynchrone Datensynchronisierung Durch die Partitionierung können Sie die Dateigruppen auch in Dateigruppen aufteilen und die Dateigruppen verschiedenen Festplatten zuweisen, um die Konkurrenz um E/A-Ressourcen zu verringern und den normalen Betrieb vorhandener Ressourcen sicherzustellen. Kombinieren Sie nun die Anforderungen für die Aufbewahrung historischer Daten für 5 Tage:
1 Zu diesem Zeitpunkt müssen Sie den Job verwenden, um einen Partitionsplan basierend auf der Partitionsfunktion zu generieren, z. B. eine Partitionierung basierend auf Benutzer-ID oder Zeitfeld ;
2. Verschieben Sie die Tabelle. Nach der Partitionierung kann die Abfrage schnell eine bestimmte Partition über den entsprechenden Index finden.
3 Durch den Auftrag werden Partitionen zusammengeführt und anschließend die Daten in dieser Tabelle gelöscht.
Wie in Abbildung 2 gezeigt:
Erfassen Sie lange Abfragezeiten durch SQL-Abfrageverfolgung und verwenden Sie die SQL-eigene gespeicherte Prozedur sp_lock oder die Ansichten dm_tran_locks und dblockinfo Typ und Granularität der Sperren, die auf der aktuellen Instanz vorhanden sind.
Nachdem Sie die spezifische Abfrageanweisung oder gespeicherte Prozedur gefunden haben, verschreiben Sie das richtige Medikament! Das Medikament heilt die Krankheit!
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels jedem beim Lernen oder Arbeiten helfen kann. Ich hoffe auch, die PHP-Chinese-Website zu unterstützen.
Weitere Artikel zu Sqlserver-Lösungen für hohe Parallelität und Big-Data-Speicherung finden Sie auf der chinesischen PHP-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

Lange URLs, die oft mit Schlüsselwörtern und Tracking -Parametern überfüllt sind, können Besucher abschrecken. Ein URL -Verkürzungsskript bietet eine Lösung, die präzise Links erstellt, die ideal für soziale Medien und andere Plattformen sind. Diese Skripte sind für einzelne Websites a wertvoll

Laravel vereinfacht die Behandlung von temporären Sitzungsdaten mithilfe seiner intuitiven Flash -Methoden. Dies ist perfekt zum Anzeigen von kurzen Nachrichten, Warnungen oder Benachrichtigungen in Ihrer Anwendung. Die Daten bestehen nur für die nachfolgende Anfrage standardmäßig: $ Anfrage-

Dies ist der zweite und letzte Teil der Serie zum Aufbau einer Reaktionsanwendung mit einem Laravel-Back-End. Im ersten Teil der Serie haben wir eine erholsame API erstellt, die Laravel für eine grundlegende Produktlistenanwendung unter Verwendung von Laravel erstellt hat. In diesem Tutorial werden wir Dev sein

Laravel bietet eine kurze HTTP -Antwortsimulationssyntax und vereinfache HTTP -Interaktionstests. Dieser Ansatz reduziert die Code -Redundanz erheblich, während Ihre Testsimulation intuitiver wird. Die grundlegende Implementierung bietet eine Vielzahl von Verknüpfungen zum Antworttyp: Verwenden Sie Illuminate \ Support \ facades \ http; Http :: fake ([ 'Google.com' => 'Hallo Welt',, 'github.com' => ['foo' => 'bar'], 'Forge.laravel.com' =>

Die PHP Client -URL -Erweiterung (CURL) ist ein leistungsstarkes Tool für Entwickler, das eine nahtlose Interaktion mit Remote -Servern und REST -APIs ermöglicht. Durch die Nutzung von Libcurl, einer angesehenen Bibliothek mit Multi-Protokoll-Dateien, erleichtert PHP Curl effiziente Execu

Möchten Sie den dringlichsten Problemen Ihrer Kunden in Echtzeit und Sofortlösungen anbieten? Mit Live-Chat können Sie Echtzeitgespräche mit Kunden führen und ihre Probleme sofort lösen. Sie ermöglichen es Ihnen, Ihrem Brauch einen schnelleren Service zu bieten

Die 2025 PHP Landscape Survey untersucht die aktuellen PHP -Entwicklungstrends. Es untersucht Framework -Nutzung, Bereitstellungsmethoden und Herausforderungen, die darauf abzielen, Entwicklern und Unternehmen Einblicke zu geben. Die Umfrage erwartet das Wachstum der modernen PHP -Versio

In diesem Artikel werden wir das Benachrichtigungssystem im Laravel -Web -Framework untersuchen. Mit dem Benachrichtigungssystem in Laravel können Sie Benachrichtigungen an Benutzer über verschiedene Kanäle senden. Heute werden wir diskutieren, wie Sie Benachrichtigungen OV senden können
