In Beispielen zu mysql Backups werden häufig die Optionen --complete-inserts
und --extended-inserts
benutzt, doch was bedeuten die eigentlich?
Complete inserts fügen dem mysql dump die Spaltennamen hinzu. Dieser Parameter verbessert die Lesbarkeit und Zuverlässigkeit des dumps. Das Hinzufügen der Spaltennamen erhöht die Grösse des Dumps, aber wenn es mit Extended Inserts kombiniert wird, ist es vernachlässigbar.
Extended Inserts kombiniert mehrere Datenzeilen in einer einzigen INSERT-Abfrage. Dies verringert signifikant die Dateigrösse für grosse SQL-Dumps, erhöht die INSERT-Geschwindigkeit beim Import und wird allgemein empfohlen.
Die folgenden Beispiele zeigen die Unterschiede beim Export einer Tabelle mit 3 Zeilen.
Beide Optionen weggelassen:
INSERT INTO `table` VALUES(1, 'Katze'); INSERT INTO `table` VALUES(2, 'Hund'); INSERT INTO `table` VALUES(3, 'Vogel'); |
Nur --complete-inserts
:
INSERT INTO `table` (`id`, `name`) VALUES(1, 'Katze'); INSERT INTO `table` (`id`, `name`) VALUES(2, 'Hund'); INSERT INTO `table` (`id`, `name`) VALUES(3, 'Vogel'); |
Nur --extended-inserts
:
INSERT INTO `table` VALUES (1, 'Katze'), (2, 'Hund'), (3, 'Vogel'); |
--complete-inserts
UND --extended-inserts
:
INSERT INTO `table` (`id`, `name`) VALUES (1, 'Katze'), (2, 'Hund'), (3, 'Vogel'); |
Wie man sehen kann, ergibt die Kombination von beiden Parametern die beste Balance zwischen SQL-Dump Grösse und Lesbarkeit.
Die beiden Parameter schliessen sich also nicht aus – Man kann eine, beide oder keine verwenden. Es gibt kein „Complete inserts vs. Extended Inserts“ Argument. Sie haben jeweils einfach eine andere Funktion.
Quellen
- Scriptalicious Blog: Complete inserts or Extended inserts
One thought on “mysql: „complete inserts“ und „extended inserts“”