MySQL-Tabellengröße - mysql

Wenn ich einen Tisch mit 500 Millionen Reihen hätte und gutIndexierung würde die DB irgendwelche Leistungsdegradation erleiden? Ich frage mich, ob ich Tabelle über mehrere DBs zersplittern muss, selbst wenn sie auf dem gleichen Server sind. Jede Zeile kann 1k groß sein, da sie ein paar Textfelder enthält. Selbst wenn ich sie fremdcodierte, wären sie immer noch eine 500 Millionen Zeilen-Tabelle, die aus etwa 700 Byte Daten besteht.

Auch Tipps zur Motorauswahl für Tische dieser Größe wären großartig. Jede Beratung würde sehr geschätzt werden.

Prost

Reich

Antworten:

1 für die Antwort № 1

MySQL unterstützt benutzerdefinierte Partitionierung für große Tische.

Ob Sie es benötigen oder nicht, hängt von Ihrer Anwendung und Ihren Anfragen ab. Sehen Sie sich die Vorteile der Partitionierung an und sehen Sie, ob einige davon auf Ihre Situation zutreffen:

  • Durch die Partitionierung können mehr Daten in einer Tabelle gespeichert werden als auf einer einzelnen Festplatte oder Dateisystempartition.

  • Daten, die ihre Nützlichkeit verlieren, können oft seinleicht aus einer partitionierten Tabelle entfernt werden, indem die Partition (oder die Partitionen), die nur diese Daten enthält, abgelegt wird. Umgekehrt kann der Prozess des Hinzufügens neuer Daten in einigen Fällen erheblich erleichtert werden, indem eine oder mehrere neue Partitionen hinzugefügt werden, um speziell diese Daten zu speichern.

  • Einige Abfragen können stark optimiert werdender Tatsache, dass Daten, die eine bestimmte WHERE-Klausel erfüllen, nur auf einer oder mehreren Partitionen gespeichert werden können, wodurch automatisch alle verbleibenden Partitionen von der Suche ausgeschlossen werden. Da Partitionen geändert werden können, nachdem eine partitionierte Tabelle erstellt wurde, können Sie Ihre Daten reorganisieren, um häufige Abfragen zu verbessern, die bei der ersten Einrichtung des Partitionierungsschemas nicht häufig verwendet wurden. Diese Möglichkeit, nicht übereinstimmende Partitionen (und damit auch die darin enthaltenen Zeilen) auszuschließen, wird oft als Partition-Beschneidung bezeichnet und in MySQL 5.1.6 implementiert. Weitere Informationen finden Sie in Abschnitt 18.4, "Partition Pruning".


0 für die Antwort № 2

Ich habe erlebt, dass ich über 10 Millionen habeDatensätze in einer InnoDB-Tabelle können sehr langsam sein, wenn die Tabelle verbunden wird, auch wenn die Indizes korrekt sind. Wenn Sie nur aus dieser Tabelle auswählen, ohne Joins, Gruppieren oder Sortieren, könnte es einfach funktionieren.