MySQL, что более эффективно: длинный текст, текст или большой двоичный объект? Повышение эффективности вставки

Я нахожусь в процессе миграции большого количества данных из нескольких баз данных в одну. В качестве промежуточного шага я копирую данные в файл для каждого типа данных и исходной базы данных, а затем копирую их в большую таблицу в моей новой базе данных.

В новой таблице, называемой migrate_data, структура проста. Он состоит из id (первичный ключ), type_id (увеличивается в пределах набора типов данных), data (поле, содержащее сериализованный объект PHP, содержащий данные, которые я переношу), source_db (очевидно, относится к исходной базе данных), data_type (определяет, какой тип данных мы смотрим.)

Я создал ключи и комбинации клавиш для всего, кроме поля данных. В настоящее время у меня есть поле данных в виде столбца с длинным текстом. Пользовательские вставки в среднем занимают около 4,8 секунды. Я смог сократить это время до 4,3 секунды, используя для таблицы DELAY_KEY_WRITE = 1.

Я хочу знать, есть ли способ еще больше повысить производительность. Возможно, выбрав другой тип столбца данных. Вот почему я спрашиваю о длинном тексте против текста против блоба. Есть ли какие-либо из них более эффективны для такого рода вставок?

Прежде чем вы ответите, позвольте мне дать вам немного больше информации. Я отправляю все данные в функцию вставки, которая принимает объект, выполняет его сериализацию, а затем выполняет вставку данных. Это также делается с использованием Drupal 6 (и его функции db_query).

Любые улучшения эффективности были бы потрясающими.

Текущая структура таблицы:

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;
6
задан Patrick 19 July 2011 в 15:19
поделиться