Je fais beaucoup d'insertions via des données de charge infilive sur MySQL 5.0. Après de nombreux inserts, dites quelques centaines de lignes de plusieurs millions (Innodb, PK + un indice non unique, RAM Linux 4 Go de 64 bits, RAID 1), les inserts ralentissent considérablement et apparaissent io liés. Les partitions dans MySQL 51 sont-elles susceptibles d'améliorer les performances si les données s'écoulent dans des tables de partition séparées? p>
4 Réponses :
Si les colonnes Insérez les chèques (touches primaires, par exemple) sont indexées - alors cela ne diminuera que la vitesse: MySQL devra décider en outre du partitionnement. P>
Toutes les questions ne sont améliorées que par l'ajout d'index. Le partitionnement est utile lorsque vous avez des tonnes de données très anciennes (E. Année <2000) qui est rarement utilisée: alors ce sera bien de créer une partition pour ces données. P>
acclamations! p>
Les performances de toutes les requêtes ne sont pas aidées par indexation: les performances des inserts sont blessées par indexation.
La réponse précédente est erronée dans ses hypothèses que cela diminuera les performances. Tout le contraire. P>
Voici un article long, mais informatif et pourquoi et comment faire partitionnement dans MySQL: P>
http://dev.mysql.com/tech-resources/articles /partitioning.html P>
Partitionnement est généralement utilisé, comme on l'a mentionné, pour grouper des données similaires ensemble. De cette façon, lorsque vous avez décidé d'archiver ou de détruire une partition, vos tables ne deviennent pas fragmentées. Toutefois, cela ne fait pas de mal à la performance, cela peut en réalité augmenter. Voir, ce ne sont pas simplement des suppressions que le fragment, les mises à jour et les inserts peuvent également le faire. En cloisonnant les données, vous demandez aux SGBDM les critères (INDECES) par lesquels les données doivent être manipulées et interrogées. p>
Salut @wayne, j'essaie aussi de faire un partitionnement. Dois-je supprimer d'abord les index de la table?
EDIT: strong> Silent Song est correct. Désactiver / Activer les clés ne fonctionne que pour MyISAM, pas innoDB. Je ne savais jamais ça, mais je suis allé lire les docs. http://dev.mysql.com/doc/ Refman / 5.1 / fr / alter-table.html # ID1101502 . Mise à jour des index peut être ce qui le ralentit. Vous pouvez désactiver la désactivation des index pendant votre mise à jour et les éteignez-les afin qu'ils puissent être générés une fois pour toute la table. P>
ALTER TABLE foo DISABLE KEYS;
LOAD DATA INFILE ... ;
ALTER TABLE ENABLE KEYS;
L'astucieux a déjà mentionné InnoDB. Désactiver les touches et activer les touches ne prennent pas en charge InnoDB.
@Silent chanson: Merci, je ne savais pas que c'était myisam seulement. Post édité pour réfléchir.
Aucune amélioration sur MySQL 5.6 P>
"MySQL peut appliquer la taille de la partition pour sélectionner, supprimer et mettre à jour les instructions. Insertion des instructions ne peuvent actuellement pas être élagues." P>
http://dev.mysql.com/doc/ Refman / 5.6 / FR / partitionnement-pruning.html p>
Cela est certainement beaucoup de lignes. Quel moteur de table utilisez-vous? Myisam ou innodb?
Avez-vous des index sur cette table (parce qu'ils ralentissent des inserts)?
Quel système d'exploitation? Quel système de fichiers? Combien de mémoire la boîte a-t-elle?
ASAP après avoir répondu à toutes vos questions, vous n'avez pas donné de conseils. Impressionnant!