Зависает процесс copy to tmp table

Статус
В этой теме нельзя размещать новые ответы.

Tima111

Читатель
Заблокирован
Регистрация
5 Июл 2007
Сообщения
218
Реакции
488
  • Автор темы
  • Заблокирован
  • #1
Хочу перевести в Денвере (phpmyadmin) таблицу из одной кодировки в UTF-8, но процесс зависает со статусом copy to tmp table

Как сделать чтобы запрос быстро обрабатывался?
Ещё при попытки сделать INDEX по полю a1 та же история - зависает со статусом - copy to tmp table
 
У MySQL в папочке bin есть консольный клиент - mysql.exe

Запускаешь mysql -u юзер -p база,
вводишь пароль от юзера, если есть, и попадаешь в консоль, где пишешь всю вот ту вот свою ALTER TABLE `labl3` CHANGE .... и в конце точку с запятой. И ентер.
 
  • Автор темы
  • Заблокирован
  • #3
venetu, сделал через консольный клиент, но разницы не заметил, до сих пор запрос не обработан - статус copy to tmp table :nezn:
 
Размер какой у таблици? И какие самые большие поля?
В принцепе нет ничего проблемного в таком заисании, работа то идет. Я на серваке не на денвере а на большом заточенном мускуле бывало сутками ждал завершения процессов, а тут всего-лиш денвер с очень скромными настройками мускуля.
 
  • Автор темы
  • Заблокирован
  • #5
Sponge Bob, 34 миллиона записей, размер поля 60, вес таблицы 3Гб.
Я больше дня ждал (больше 24 часов) статус был copy to tmp table, убил процесс начал заново, уже около 4 часов прошло статус - copy to tmp table.
Можно ли узнать что делается в данный момент - сколько загруженно в tmp записей и не завис ли процесс?
Кстати оперативной памяти 4Гб, может можно как-то за счёт неё ускорить процесс копирования таблицы в tmp?
 
на денвере по умолчанию mysql настроен на слабую машину, возможно поможет увеличение ресурсов отведённых для mysql
в файл настроек mysql Z:\usr\local\mysql5\my
скопировать настройки для больших объёмов памяти
Код:
#huge
skip-locking
key_buffer = 300M
max_allowed_packet = 1M
table_cache = 512
sort_buffer_size = 200M
read_buffer_size = 200M
read_rnd_buffer_size = 800M
net_buffer_length = 33M
thread_stack = 33M
thread_cache_size = 8
sort_buffer_size = 30M
query_cache_size = 32M
или ещё увеличить.
С такими настройками у меня 12 миллионов записей групирует за пару минут
 
polyetilen
А не дофия буфер чтения? Тогда уже добавить как положено key_buffer_size и заменить
read_rnd_buffer_size = 800M
на что то типа
key_buffer_size=512M
read_rnd_buffer_size=128M
И при прочих параметрах указанныйх, логичнее поставить
query_cache_size = 128M
или около того.
 
  • Автор темы
  • Заблокирован
  • #8
Прописал все рекомендуемые настройки в my.cnf и перезапустил Denver.
SQL запрос уже час в статусе copy to tmp table, это реально для 34 миллиона записей? Кстати компьютер стал притормаживать. За сколько примерно обработается 4Гб? На винчестере полно свободного места, оперативной памяти ещё 2Гб свободно.
Можно ли где-нибудь посмотреть сколько уже записей или Мб скопировалось?
В папке tmp смотрел - там вообще нету ничего весом больше 1Мб :nezn:
 
Попробуй скопировать сто тысяч записей в другую таблицу и над ней совершить те же операции. Если пройдет на ура - пробуй миллион и засекай время. Если нет - что-то в таблице, значит.

Еще как вариант можно поиском и заменой в дампе сделать что тебе надо а потом дамп залить обратно. Муторно, конечно, но зато прекрасно делится на куски вплоть до одного инсерта.
 
mysql temp тут Z:\usr\local\mysql5\data
там видно как изменяется размер файлов
или сделать пустую таблицу с другой кодировкой и копировать в неё с запросом
Код:
INSERT INTO table1 SELECT * FROM table2
может быстрее будет
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху