Mysql
 sql >> Base de données >  >> RDS >> Mysql

Insertions MySQL lentes

Cela pourrait être un moment pour le partitionnement horizontal et le déplacement du champ blob dans une table séparée. Dans cet article dans "A Quick Side Note on Vertical Partitioning", l'auteur supprime un champ varchar plus grand d'une table et augmente la vitesse d'une requête sur l'ordre de grandeur.

La raison en est que la traversée physique des données sur un disque devient beaucoup plus rapide s'il y a moins d'espace à couvrir, donc déplacer des champs plus grands ailleurs augmente les performances.

Aussi (et vous le faites probablement déjà) il est avantageux de diminuer la taille de votre colonne d'index à son minimum absolu (char(32) en codage ascii pour md5), car la taille de la clé est directement proportionnelle à la vitesse de son utilisation .

Si vous effectuez plusieurs insertions à la fois avec des tables InnoDB, vous pouvez augmenter considérablement la vitesse des insertions en les enveloppant dans une transaction et en effectuant plusieurs insertions en une seule requête :

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