J'ai un scénario où j'ai besoin de faire des quantités relativement importantes d'insertions. Disons que j'ai un million de lignes par minute ... qui est inséré dans des tables structurellement identiques, mais avec différents niveaux d'agrégation appliqués aux données.Mysql InnoDB fusionner/copier des données
Aussi, afin d'accéder à ces données à nouveau, il est très fortement indexé. Maintenant, afin de faire les insertions le plus rapidement possible, pour libérer du temps pour d'autres traitements, j'ai pensé à insérer dans une table "DUMP" qui a exactement la même structure, mais pas d'index ... et puis exécuter un "proc de fusion" qui triplerait ETL les données dans les tables agrégées indexées ... arguant que puisque tout se passe à l'intérieur de la base de données, il devrait être plus rapide que de le pousser plusieurs fois de l'extérieur.
Cependant, un simple "insérer dans tableB select * from tableA" dépasse facilement mon innodb_buffer_pool avec des verrous de ligne, puis erreur 1026es moi. Donc, enfin à la question: existe-t-il un moyen rapide/fiable de déplacer/fusionner des volumes de données volumineux d'une table à l'autre?
Les tables peuvent et seront probablement partitionnées. Je suppose que c'est un vœu pieux que vous puissiez simplement déplacer une partition d'une table à l'autre.
Si "sélectionnez de l'insertion dans" est-il, alors je suppose qu'il sera plus sûr et plus facile de simplement insérer tout cela du côté de l'application.