Wie groß kann eine MySQL-Datenbank, bevor die Leistung beginnt zu degradieren

stimmen
253

An welchem ​​Punkt beginnt eine MySQL Datenbank-Performance zu verlieren?

  • Hat physikalische Datenbankgröße eine Rolle?
  • Sie Anzahl der Datensätze eine Rolle?
  • Ist eine Leistungsverschlechterung linear oder exponentiell?

Ich habe, was ich glaube, eine große Datenbank sein, mit rund 15 Millionen Datensätze, die fast 2 GB aufnehmen. Auf der Grundlage dieser Zahlen ist es ein Anreiz für mich, die Daten aus, zu reinigen oder bin ich sicher, damit es für ein paar weitere Jahre fortsetzen Skalierung?

Veröffentlicht am 04/08/2008 um 15:31
quelle vom benutzer
In anderen Sprachen...                            


13 antworten

stimmen
169

Die physische Datenbankgröße keine Rolle spielt. Die Anzahl der Datensätze keine Rolle spielen.

Nach meiner Erfahrung ist das größte Problem, dass Sie in gehen, laufen, ist nicht groß, aber die Anzahl der Abfragen, die Sie zu einer Zeit verarbeiten können. Höchstwahrscheinlich werden Sie gehen zu müssen, zu einem Master / Slave-Konfiguration bewegen, so dass die Lese Abfragen für die Sklaven und die Schreibabfragen laufen gegen den Master laufen kann. Allerdings, wenn Sie für diese noch nicht fertig sind, können Sie immer optimieren Sie Ihre Indizes für die Abfragen ausgeführt werden, um die Antwortzeiten zu beschleunigen. Auch gibt es eine Menge Tweaking Sie können in Linux mit dem Netzwerk-Stack und Kernel zu tun, die helfen.

Ich habe meine zu 10GB aufstehen musste, mit nur einer moderaten Anzahl von Verbindungen und die Anforderungen ganz gut behandelt.

Ich würde zuerst auf Ihren Indizes konzentriert, dann einen Server Admin Blick auf Ihren OS, und wenn alle, die es nicht helfen könnte sein, Zeit, um eine Master / Slave-Konfiguration zu implementieren.

Beantwortet am 04/08/2008 um 16:26
quelle vom benutzer

stimmen
71

In der Regel ist dies eine sehr subtile Angelegenheit und was nicht trivial. Ich ermutige Sie , lesen mysqlperformanceblog.com und High Performance MySQL . Ich glaube wirklich , es für diese keine allgemeine Antwort.

Ich arbeite an einem Projekt, das mit fast 1 TB Daten mit einer MySQL-Datenbank hat. Der wichtigste Faktor ist die Skalierbarkeit RAM. Wenn die Indizes der Tabellen passen in den Speicher und Ihre Anfragen hoch optimiert sind, können Sie eine angemessene Menge an Anfragen mit einer durchschnittlichen Maschine dienen.

Die Anzahl der Datensätze keine Rolle, abhängig davon, wie Ihre Tabellen aussehen. Es ist ein Unterschied viele varchar Felder haben oder nur ein paar Ints oder Long-Positionen.

Die physische Größe der Datenbank Angelegenheiten auch: Man denke an Sicherungen, zum Beispiel. Je nach Motor, Ihre physischen db Dateien auf wachsen, aber nicht schrumpfen, zum Beispiel mit innodb. So löschen viele Zeilen, hilft nicht, Ihre physischen Dateien zu schrumpfen.

Es gibt eine Menge zu diesen Problemen und wie in vielen Fällen der Teufel steckt im Detail.

Beantwortet am 04/08/2008 um 19:44
quelle vom benutzer

stimmen
33

Die Größe der Datenbank ist von Bedeutung . Wenn Sie mit mehr als einer Million Datensätze mehr als eine Tabelle, dann beginnt die Leistung in der Tat zu verschlechtern. Die Anzahl der Datensätze hat natürlich die Leistung beeinflussen: MySQL kann mit großen Tabellen langsam sein . Wenn Sie eine Million Datensätze getroffen werden Sie Performance - Probleme, wenn die Indizes nicht richtig eingestellt sind (zB keine Indizes für Felder in „WHERE Aussagen“ oder „ON Bedingungen“ in Joins). Wenn Sie 10 Millionen Datensätze treffen, beginnen Sie Performance - Probleme zu bekommen , auch wenn Sie alle Ihre Indizes Recht haben. Hardware - Upgrades - Hinzufügen von mehr Speichern und mehr Prozessorleistung, vor allem Speicher - oft helfen , die schwersten Probleme zu reduzieren , indem die Leistung wieder zu erhöhen, zumindest bis zu einem gewissen Grad. Beispielsweise37 Signale gingen von 32 GB RAM 128 GB RAM für das Basislager Datenbankserver.

Beantwortet am 26/01/2012 um 11:33
quelle vom benutzer

stimmen
20

Ich würde zuerst auf Ihren Indizes konzentrieren, als einen Server-Admin-Blick auf Ihren OS, und wenn alle, die ihm nicht helfen könnten, Zeit für eine Master / Slave-Konfiguration sein.

Das ist richtig. Eine andere Sache, die funktioniert in der Regel ist nur die Datenmenge zu reduzieren, die mit immer wieder gearbeitet hat. Wenn Sie „alten Daten“ und „neue Daten“ und 99% Ihrer Abfragen arbeiten mit neuen Daten haben, bewegen Sie einfach alle alten Daten an einen anderen Tisch - und schaut nicht auf sie;)

-> Hier finden Sie aktuelle Partitionierung .

Beantwortet am 11/08/2008 um 20:19
quelle vom benutzer

stimmen
19

2GB und über 15 Millionen Datensätze ist eine sehr kleine Datenbank - ich habe auf einem Pentium III viel größeren laufen und alles ziemlich schnell hat noch .. laufen Wenn Ihr langsam ist es eine Datenbank / Anwendung Design-Problem, kein mysql (!) ein.

Beantwortet am 05/08/2010 um 10:03
quelle vom benutzer

stimmen
16

Es ist irgendwie sinnlos, über „Datenbank-Performance“, „Abfrage-Performance“ ist ein besserer Begriff hier zu sprechen. Und die Antwort ist: Es hängt von der Abfrage, Daten, die er arbeitet auf, Indizes, Hardware, etc. Sie können eine Vorstellung davon, wie viele Zeilen werden gescannt werden und welche Indizes gehen mit EXPLAIN-Syntax verwendet werden.

2GB nicht wirklich als „große“ Datenbank zählen - es ist eher mittelgroß ist.

Beantwortet am 06/08/2008 um 20:53
quelle vom benutzer

stimmen
9

Ein wichtiger Punkt ist auch der Zweck des Systems und die Daten in den Tag zu Tag.

Zum Beispiel für ein System mit GPS-Überwachung von Fahrzeugen sind nicht relevant Abfragedaten aus den Positionen des Autos in den Vormonaten.

Daher können die Daten zu anderen historischen Tabellen mögliche Anhörung übergeben werden und die Ausführungszeiten der täglichen Anfrage reduzieren.

Beantwortet am 06/12/2012 um 06:13
quelle vom benutzer

stimmen
9

Ich wurde einmal aufgefordert, an einer MySQL zu suchen, die „funktioniert nicht mehr“ hatte. Ich entdeckte, dass die DB-Dateien auf einem Network Appliance Filer mit NFS2 und mit einer maximalen Dateigröße von 2 GB montiert aufhielten. Und sicher genug, dass der Tisch aufgehört hatte, Transaktionen zu akzeptieren war genau 2 GB auf der Festplatte. Aber in Bezug auf die Leistungskurve Mir wurde gesagt, dass es wie ein Weltmeister richtig funktioniert, bis er überhaupt nicht arbeiten! Diese Erfahrung dient immer für mich als eine nette Erinnerung daran, dass es sind immer Dimensionen oberhalb und unterhalb der von Ihnen natürlich vermuten.

Beantwortet am 06/08/2008 um 05:27
quelle vom benutzer

stimmen
8

Achten Sie auch auf komplexe Joins. Transaktions Komplexität kann ein großer Faktor zusätzlich zu Transaktionsvolumen sein.

manchmal schwere Abfragen Refactoring bietet eine große Leistungssteigerung.

Beantwortet am 04/08/2008 um 20:01
quelle vom benutzer

stimmen
4

Ich bin derzeit eine MySQL-Datenbank auf Amazons Cloud-Infrastruktur verwalten, die zu 160 GB gewachsen ist. Die Abfrageleistung ist in Ordnung. Was hat sich zu einem Alptraum Backups, Wiederherstellungen, das Hinzufügen Sklaven, oder irgendetwas anderes, das mit dem gesamten Datensatz behandelt oder sogar DDL auf großen Tischen. Wie Sie einen sauberen Import einer Dump-Datei ist problematisch. zu automatisieren, benötigt verschiedene Möglichkeiten gemacht werden zu priorisieren Stabilität über Leistung Um den Prozess stabil genug zu machen. Wenn wir jemals von einer Katastrophe mit einem SQL-Backup wiederherstellen haben, würden wir für Tage gelegt.

Horizontal SQL Skalierung ist auch ziemlich schmerzhaft, und in den meisten Fällen führt es in einer Weise, verwenden Sie wahrscheinlich nicht die Absicht haben, wenn Sie gewählt haben Ihre Daten in SQL an erster Stelle zu setzen. Shards, lesen Sklaven, Multi-Master, et al, sie sind alle wirklich beschissen Lösungen, die Komplexität alles fügen Sie jemals mit dem DB tun, und nicht einer von ihnen löst das Problem; nur mildert es in gewisser Weise. Ich würde vorschlagen, stark Blick auf einige Ihrer Daten aus MySQL (oder wirklich jede SQL) zu bewegen, wenn Sie beginnen, einen Datensatz mit einer Größe nähert, wo diese Art von Dingen ein Thema geworden.

Beantwortet am 30/06/2017 um 16:25
quelle vom benutzer

stimmen
4

Die Leistung kann in einer Angelegenheit von wenigen tausend Zeilen verschlechtern, wenn Datenbank nicht richtig ausgelegt ist.

Wenn Sie die richtige Indizes haben, richtige Motoren Verwendung (MyISAM nicht verwenden, wo mehrere DML erwartet werden), verwenden Partitionierung, zuteilen richtigen Speicher abhängig von der Verwendung und natürlich gute Server-Konfiguration haben, können MySQL-Daten auch in Terabytes Griff!

Es gibt immer Möglichkeiten, um die Datenbank-Performance zu verbessern.

Beantwortet am 19/09/2013 um 12:26
quelle vom benutzer

stimmen
2

Die Größe der Datenbank ist von Bedeutung im Hinblick auf die Bytes und Zeilen Anzahl der Tabelle. Sie wird einen großen Unterschied in der Leistung zwischen einer Licht Datenbank und einem Klecks gefüllt man bemerken. Einmal habe meine Anwendung stecken, weil ich binäre Bilder in Felder anstelle von Bildern in Dateien auf der Festplatte zu halten und setzen nur die Dateinamen in der Datenbank setzen. eine große Anzahl von Zeilen auf der anderen Seite Iterieren ist nicht kostenlos.

Beantwortet am 05/06/2017 um 10:27
quelle vom benutzer

stimmen
2

Es hängt von Ihrer Abfrage und Validierung.

Zum Beispiel arbeitete ich mit einer Tabelle von 100 000 Medikamente, die eine Spalte Gattungsnamen hat, wo es mehr als 15 Zeichen für jedes Medikament hat in dieser Tabelle .I eine Abfrage stellen den Gattungsnamen von Drogen vergleichen zwischen zwei Tischen.Die Abfrage dauert mehr Minuten Gleichfalls run.The, wenn Sie die Medikamente mit der Droge Index vergleichen, eine ID-Spalte (wie oben gesagt), dauert es nur wenige Sekunden.

Beantwortet am 29/11/2016 um 12:05
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more