MySQL, qui est plus efficace longtext, text ou blob? Amélioration de l'insertion de l'efficacité

Je suis dans le processus de migration d'une grande quantité de données à partir de plusieurs bases de données en un seul. Une étape intermédiaire je copie les données dans un fichier pour chaque type de données et la base de données source, puis de le copier sur une grande table dans ma base de données.

La structure est simple dans la nouvelle table, appelée migrate_data. Il se compose d'un id (clé primaire), un type_id (incrémentée dans le type de données défini), de données (un champ contenant un sérialisé objet PHP contenant les données, je suis en migration), source_db (se réfère à la base de données source, évidemment), data_type (identifie le type de données que nous recherchons).

J'ai créé des touches et combinaisons de touches pour tout, mais le champ de données. Actuellement, j'ai le champ de données défini comme un longtext colonne. L'utilisateur insère prennent environ 4,8 secondes en moyenne. J'ai été en mesure de couper jusqu'à 4,3 secondes à l'aide de DELAY_KEY_WRITE=1 sur la table.

Ce que je veux savoir au sujet est de savoir si ou non il est un moyen d'améliorer encore davantage les performances. Éventuellement en changeant de données différent type de colonne. C'est pourquoi je demande à propos de la longtext vs texte vs blob. Sont un de ces plus efficace pour ce genre d'insérer?

Avant de vous répondre, permettez-moi de vous donner un peu plus d'informations. J'ai envoyer toutes les données à insérer une fonction qui prend l'objet, l'exécute par le biais de sérialiser, puis exécute les données à insérer. Il est également fait à l'aide de Drupal 6 (et ses db_query fonction).

Toutes les améliorations de l'efficacité serait génial.

Structure actuelle de la table:

CREATE TABLE IF NOT EXISTS `migrate_data` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `type_id` int(10) unsigned NOT NULL DEFAULT '0',
  `data` longtext NOT NULL,
  `source_db` varchar(128) NOT NULL DEFAULT '',
  `data_type` varchar(128) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),
  KEY `migrated_data_source` (`source_db`),
  KEY `migrated_data_type_id` (`type_id`),
  KEY `migrated_data_data_type` (`data_type`),
  KEY `migrated_data_id__source` (`id`,`source_db`),
  KEY `migrated_data_type_id__source` (`type_id`,`source_db`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 DELAY_KEY_WRITE=1;

OriginalL'auteur Patrick | 2011-07-19