Проблема с производительностью: импорт данных в базу данных - PullRequest
0 голосов
/ 24 ноября 2011

Я использую MySQL v5.1 .

Мой простой сценарий заключается в том, что я хотел бы импортировать большой объем данных из таблицы в одной базе данных в другую таблицу в другой базе данных. И таблица в другой базе данных (куда будут вставляться данные) будет сначала усечена.

Если говорить более подробно, скажем, у меня есть две базы данных с именами ' db_one ' и ' db_two ' соответственно.

db_one имеет таблицу с именем db_one_cars, которая содержит 6 000 000 записей (это большой объем данных). В то время как db_two имеет таблицу с именем db_two_cars, которая также содержит большое количество данных.

Я собираюсь сначала удалить все данные в db_two_cars (обрезать таблицу), затем импортировать все данные из db_one_cars в db_two_cars. (Примечание: две таблицы находятся в двух базах данных соответственно).

Итак, я создал файл sql с содержимым, подобным следующему:

TRUNCATE TABLE db_two_cars;

ALTER TABLE db_two_cars DISABLE KEYS;

INSERT INTO db_two_cars  (car_id, name, customer, company_name)
SELECT id, CONCAT('c-', name), customer, company_name FROM db_one.db_one_cars;

ALTER TABLE db_two_cars ENABLE KEYS;

обе db_one_cars и db_two_cars таблицы являются таблицами InnoDB и имеют одинаковую структуру, car_id используется как primary key, company_name используется как multi-column key, customer используется как multi-column key.

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

мои вопросы:

  1. Нужно ли иметь OPTIMIZE TABLE db_two_cars в конце моего оператора SQL? и почему? (это улучшит производительность? Я просто вставляю данные)
  2. Нужно ли использовать ALTER TABLE db_two_cars PACK_KEYS = 0 ? и почему? (улучшит ли это производительность)
  3. Что еще можно сделать, чтобы повысить скорость и производительность запросов в будущем?

P.S. Производительность, которую я имею в виду, включает ускорение импорта данных и хорошую производительность для будущих запросов данных

1 Ответ

1 голос
/ 24 ноября 2011

, чтобы улучшить это, выполните экспорт данных в CSV-файл

и загрузите этот файл в новую таблицу, используя:

загрузить данные в файл

другие советы по ускорению этого вы можете посмотреть на это ответ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...