Heim Backend-Entwicklung PHP-Tutorial SQLServer-Lösung für hohe Parallelität und Big-Data-Speicherung

SQLServer-Lösung für hohe Parallelität und Big-Data-Speicherung

Jan 13, 2017 pm 03:48 PM

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:

SQLServer-Lösung für hohe Parallelität und Big-Data-Speicherung

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:

SQLServer-Lösung für hohe Parallelität und Big-Data-Speicherung

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

11 beste PHP -URL -Shortener -Skripte (kostenlos und Premium) 11 beste PHP -URL -Shortener -Skripte (kostenlos und Premium) Mar 03, 2025 am 10:49 AM

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

Arbeiten mit Flash -Sitzungsdaten in Laravel Arbeiten mit Flash -Sitzungsdaten in Laravel Mar 12, 2025 pm 05:08 PM

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-

Erstellen Sie eine React -App mit einem Laravel -Back -Ende: Teil 2, reagieren Erstellen Sie eine React -App mit einem Laravel -Back -Ende: Teil 2, reagieren Mar 04, 2025 am 09:33 AM

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

Vereinfachte HTTP -Reaktion verspottet in Laravel -Tests Vereinfachte HTTP -Reaktion verspottet in Laravel -Tests Mar 12, 2025 pm 05:09 PM

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' =>

Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs Mar 14, 2025 am 11:42 AM

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

12 Beste PHP -Chat -Skripte auf Codecanyon 12 Beste PHP -Chat -Skripte auf Codecanyon Mar 13, 2025 pm 12:08 PM

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

Ankündigung von 2025 PHP Situation Survey Ankündigung von 2025 PHP Situation Survey Mar 03, 2025 pm 04:20 PM

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

Benachrichtigungen in Laravel Benachrichtigungen in Laravel Mar 04, 2025 am 09:22 AM

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

See all articles