Я нахожусь в процессе переноса большого количества данных из нескольких баз данных в одну.В качестве промежуточного шага я копирую данные в файл для каждого типа данных и базы данных источника, а затем копирую их в большую таблицу в моей новой базе данных.
Структура проста в новой таблице, которая называется migrate_data.Он состоит из идентификатора (первичный ключ), type_id (увеличивается в наборе типов данных), данных (поле, содержащее сериализованный объект 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;