Ich mache viele INSERTs über LOAD DATA INFILE auf MySQL 5.0. Nach vielen Einfügungen, sagen wir ein paar hundert Millionen Zeilen (InnoDB, PK + ein nicht eindeutiger Index, 64 Bit Linux 4GB RAM, RAID 1), verlangsamen sich die Einfügungen beträchtlich und erscheinen IO gebunden. Werden Partitionen in MySQL 5.1 wahrscheinlich die Leistung verbessern, wenn die Daten in separate Partitionstabellen fließen?Werden Partitionen die MySQL INSERT-Geschwindigkeit verbessern?
Antwort
Die vorherige Antwort ist falsch in seinen Annahmen, dass dies die Leistung verringern wird. Ganz im Gegenteil.
Hier ist ein langwieriger, aber informativer Artikel und warum und wie Partitionierung in MySQL zu tun:
http://dev.mysql.com/tech-resources/articles/partitioning.html
Partitioning typischerweise verwendet wird, wie erwähnt, zu einer Gruppe wie-Daten zusammen. Auf diese Weise werden Ihre Tabellen nicht fragmentiert, wenn Sie sich dafür entscheiden, eine Partition zu archivieren oder zu zerstören. Dies schadet jedoch der Leistung nicht, es kann sie tatsächlich erhöhen. Sehen Sie, es sind nicht nur Deletionen, die Fragmente, Updates und Inserts können das auch tun. Durch das Partitionieren der Daten weisen Sie dem RDBMS die Kriterien (Indezes) zu, nach denen die Daten manipuliert und abgefragt werden sollen.
Wenn die INSERT-Spalten überprüft werden (zum Beispiel Primärschlüssel), wird dies nur die Geschwindigkeit verringern: MySQL muss zusätzlich über die Partitionierung entscheiden.
Alle Abfragen werden nur durch Hinzufügen von Indizes verbessert. Die Partitionierung ist nützlich, wenn Sie viele sehr alte Daten haben (z. B. Jahr < 2000), die nur selten verwendet werden: Dann ist es nett, eine Partition für diese Daten zu erstellen.
Prost!
Die Leistung aller Abfragen wird durch Indexierung nicht unterstützt: Leistung von INSERTs werden durch Indizierung verletzt. – nicolaskruchten
Bearbeiten: SiLent SoNG ist korrekt. DISABLE/ENABLE KEYS funktioniert nur für MyISAM, nicht für InnoDB. Ich wusste das nie, aber ich ging und las die Dokumente. http://dev.mysql.com/doc/refman/5.1/en/alter-table.html#id1101502.
Aktualisieren von Indizes möglicherweise was verlangsamt werden. Sie können während der Aktualisierung Indizes deaktivieren und sie wieder aktivieren, damit sie einmal für die gesamte Tabelle generiert werden können.
ALTER TABLE foo DISABLE KEYS; LOAD DATA INFILE ... ; ALTER TABLE ENABLE KEYS;
Dies führt dazu, dass alle Indizes auf einmal und nicht pro Zeile aktualisiert werden. Dies führt auch zu ausgeglicheneren BTREE-Indizes.
der bereits erwähnte Asker InnoDb. Schlüssel deaktivieren und Schlüssel aktivieren InnoDb nicht unterstützen. –
@SiLent SoNG: Danke, ich wusste nicht, dass es nur MyISAM ist. Beitrag bearbeitet um zu reflektieren. – Slashterix
Keine Verbesserung auf MySQL 5.6
"MySQL Partition Pruning anwenden kann auf SELECT, DELETE und UPDATE-Anweisungen. Anweisungen INSERT zur Zeit nicht beschnitten werden."
http://dev.mysql.com/doc/refman/5.6/en/partitioning-pruning.html
- 1. MySQL Query-Performance verbessern
- 2. Langsam MySQL-Abfrage - wie die Leistung verbessern
- 3. Verbessern Sie die Abfrageleistung in MySQL
- 4. wie MySQL Abfrage verbessern?
- 5. Spark-Partitionen: Erstellen von RDD-Partitionen, aber nicht Hive-Partitionen
- 6. Wie werden Partitionen Aufgaben in Spark zugeordnet?
- 7. Wie alle Partitionen aufgelistet werden und Ergebnisse aggregiert werden
- 8. Wie verbessern Indizes die aggregierte Lookup-Geschwindigkeit in MySQL?
- 9. Optimieren Sie und verbessern Sie die Leistung dieser MYSQL-Abfrage
- 10. Verbessern Sie die Leistung
- 11. Werden Daten von EBS in ephemeren Speicher verschoben, um die MySQL-Abfrageleistung zu verbessern?
- 12. Verbessern MySQL wählen Performance verschachtelt mit Join
- 13. Verbessern Mysql-Datenbank-Performance von Leistungsmetriken
- 14. MySQL - Verschieben von Daten zwischen Partitionen aka neu partitionieren
- 15. Maximale Anzahl der Partitionen in einer Tabelle MYSQL 5.6.10
- 16. Spark Coalesce Weitere Partitionen
- 17. Partitionen in Nodejs auflisten
- 18. Verbessern Sie die Best Practices?
- 19. Hive Partitionen nach Datum?
- 20. Cube-Partitionen: ist die Faktentabelle im DSV-Designer nur eine der Cube-Partitionen?
- 21. Azure Table Storage-Stapel werden über mehrere Partitionen hinweg eingefügt?
- 22. kafka Themen und Partitionen Entscheidungen
- 23. Erstellen der Partitionen einer Nummer
- 24. Müssen virtuelle Maschinen Swap-Partitionen?
- 25. Partitionen und Hochwassermarke in Oracle
- 26. Aufzählung aller Partitionen in Mathematica
- 27. Verbessern Sie die Leistung von Efeu Lösung
- 28. Wie kann ich die Hibernate-Leistung in Java verbessern?
- 29. Verbessern der Zeichnungsleistung (für die Dudel-Anwendung)
- 30. Wohin mit Partitionen, die von der gesamten Anwendung in Rails geteilt werden?
, die sicherlich viele Zeilen ist. Welche Tischmaschine verwendest du? MyISAM oder InnoDB? – Asaph
Haben Sie Indizes für diese Tabelle (weil sie Einfügungen verlangsamen)? – Asaph
Welches Betriebssystem? Welches Dateisystem? Wie viel Speicher hat die Box? – Asaph