Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Mysql как быстро скопировать таблицу?
цитата
03/12/10 в 01:26
 ibiz
есть большое кол-во записей,
если тупо делать
INSERT INTO table_1 SELECT * FROM table_2
то эта операция выполняется долго

такая операция выполняется быстрее
SELECT * INTO OUTFILE FROM table_2
LOAD DATA LOCAL INFILE

можно ли как-то ускорить обычный запрос INSERT..SELECT?
цитата
03/12/10 в 01:36
 Еugene
вообще чудес не бывает.
можно добавить вокруг дампа эти строки:

SET AUTOCOMMIT = 0;
SET FOREIGN_KEY_CHECKS=0;

тут дамп SQL

SET FOREIGN_KEY_CHECKS = 1;
COMMIT;
SET AUTOCOMMIT = 1;

плюс можно настроить mysqld под INSERT запросы. для этого иди гугли

ps: недавно таблицы по 40 гигов с индексами заливал, заняло около 40 часов.
цитата
03/12/10 в 01:44
 Stek
Код:
mysql> LOCK TABLES real_table WRITE, temp_table WRITE;
mysql> INSERT INTO real_table SELECT * FROM temp_table;
mysql> UNLOCK TABLES;

По идее лок таблицы поможет быстрее вносить записи.
цитата
03/12/10 в 01:55
 ibiz
SET AUTOCOMMIT = 0;
SET FOREIGN_KEY_CHECKS=0;
не помогло достичь скорости работы LOAD DATA LOCAL, ведь у него какой-то рабочий механизм должен быть!?


Stek писал:
Код:
mysql> LOCK TABLES real_table WRITE, temp_table WRITE;
mysql> INSERT INTO real_table SELECT * FROM temp_table;
mysql> UNLOCK TABLES;

По идее лок таблицы поможет быстрее вносить записи.


после лока время почему то увеличилось в 1.5 раз icon_sad.gif
цитата
03/12/10 в 03:46
 Stek
гм , а сколько данных у тебя копируется, структуру таблицы покажи.
Попробую у себя такое же сделать, тоже результат интересен.
цитата
03/12/10 в 10:16
 ibiz
тестирую на тупо 30м записей
таблица id, time(unix)
id index, uniq

вчера раскопал утилиту mysqlhotcopy, хочу с ней поиграться, но по умолчанию на сервере она у меня не установлена
цитата
03/12/10 в 11:07
 Alexandur
А если с ignore?

Или ты целиком копируешь, а не вставляешь? Тогда проще всего файлы таблицы скопировать.
цитата
03/12/10 в 11:12
 ibiz
gimcnuk писал:
А если с ignore?
Или ты целиком копируешь, а не вставляешь? Тогда проще всего файлы таблицы скопировать.


грубо говоря копирую одно поле, в данном примере поле id
хочу с помощью утилиты mysqlhotcopy скопировать всю таблицу, затем ненужные поля удалить и глянуть на скорость


Эта страница в полной версии