Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Langsame MySQL-Einfügungen

Es könnte an der Zeit sein, das Blob-Feld horizontal zu partitionieren und in eine separate Tabelle zu verschieben. In diesem Artikel in 'Eine schnelle Randbemerkung zur vertikalen Partitionierung' entfernt der Autor ein größeres varchar-Feld aus einer Tabelle und erhöht die Geschwindigkeit einer Abfrage über die Größenordnung.

Der Grund dafür ist, dass das physische Durchlaufen der Daten auf einer Festplatte erheblich schneller wird, wenn weniger Speicherplatz abgedeckt werden muss, sodass das Verschieben größerer Felder an andere Stellen die Leistung erhöht.

Außerdem (und Sie tun es wahrscheinlich bereits) ist es vorteilhaft, die Größe Ihrer Indexspalte auf ihr absolutes Minimum (char(32) in ASCII-Codierung für md5) zu verringern, da die Größe des Schlüssels direkt proportional zur Geschwindigkeit seiner Verwendung ist .

Wenn Sie mit InnoDB-Tabellen mehrere Einfügungen gleichzeitig durchführen, können Sie die Geschwindigkeit der Einfügungen erheblich erhöhen, indem Sie sie in Transaktionen einbetten und mehrere Einfügungen in einer Abfrage durchführen:

START TRANSACTION
INSERT INTO x (id, md5, field1, field2) values (1, '123dab...', 'data1','data2'),(2,'ab2...','data3','data4'),.....;
COMMIT