Beschleunigen Sie MySQL für Einfügungen (zu Testzwecken)

Beschleunigen Sie MySQL für Einfügungen (zu Testzwecken)

Ich habe eine Software, die viele INSERTs ausführen muss. In einer Produktionsumgebung wird es einiges an Optimierung und Tests und ähnlichem geben, aber jetzt, wenn ich es testen muss, möchte ich die Inserts so weit wie möglich beschleunigen. Daher meine Frage: Gibt es eine Möglichkeit, MySQL so zu optimieren, dass es nicht viel Festplatten-E/A ausführt, sondern alles im RAM behält und selten mit der Festplatte synchronisiert (sagen wir etwa alle n Sekunden?)

Antwort1

Insert Delayed kann hilfreich sein (nur MyISAM), da es das Einfügen in großen Mengen ermöglicht (wofür MyISAM gut geeignet ist).
Die Partitionierung Ihrer Tabelle kann ebenfalls hilfreich sein.

Wenn Ihr Speicher es zulässt (und das ist, was Sie verlangen), können Sie eine Speichertabelle verwenden. Stellen Sie einfach sicher, dass die Einstellungen max_heap_table_size und tmp_table_size für die Daten ausreichen.

Ein kleiner Trick wäre, (unter Linux) TMPFS zu verwenden und Ihre Datendatei dort abzulegen (mithilfe von Symlinks).

Antwort2

Siehe die Antwort im MySQL-HandbuchHier. Um Ihre spezielle Frage zu beantworten, prüfen Sie, INSERT DELAYEDwelches genau das tut, was Sie wollen. Sie können sein Verhalten mit delayed_insert_limitund anpassen delayed_queue_size.

Wenn Sie die INSERTs stapelweise ausführen können, geht das sogar noch schneller; verwenden Sie entweder das Tool zum Masseneinfügen oder geben Sie mehrere VALUES-Listen an, z. B.:INSERT INTO table (column) VALUES (val1),(val2),(val3)

Antwort3

wie Daniel im zweiten Teil seiner Antwort sagt - Batch-Einfügungen werden Ihnen viel bringen. prüfenDasPräsentation. Ihr Maßstab ist wahrscheinlich viel kleiner, aber ich denke, Sie werden es trotzdem interessant finden.

verwandte Informationen