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

Тема в разделе "Базы данных", создана пользователем Tima111, 24 май 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Tima111

    Tima111 Читатель

    Заблокирован
    Регистр.:
    5 июл 2007
    Сообщения:
    218
    Симпатии:
    486
    Хочу перевести в Денвере (phpmyadmin) таблицу из одной кодировки в UTF-8, но процесс зависает со статусом copy to tmp table
    [​IMG]
    Как сделать чтобы запрос быстро обрабатывался?
    Ещё при попытки сделать INDEX по полю a1 та же история - зависает со статусом - copy to tmp table
     
  2. venetu

    venetu

    Регистр.:
    28 мар 2007
    Сообщения:
    735
    Симпатии:
    261
    У MySQL в папочке bin есть консольный клиент - mysql.exe

    Запускаешь mysql -u юзер -p база,
    вводишь пароль от юзера, если есть, и попадаешь в консоль, где пишешь всю вот ту вот свою ALTER TABLE `labl3` CHANGE .... и в конце точку с запятой. И ентер.
     
    Tima111 нравится это.
  3. Tima111

    Tima111 Читатель

    Заблокирован
    Регистр.:
    5 июл 2007
    Сообщения:
    218
    Симпатии:
    486
    venetu, сделал через консольный клиент, но разницы не заметил, до сих пор запрос не обработан - статус copy to tmp table :nezn:
     
  4. Sponge Bob

    Sponge Bob Создатель

    Регистр.:
    22 апр 2010
    Сообщения:
    23
    Симпатии:
    14
    Размер какой у таблици? И какие самые большие поля?
    В принцепе нет ничего проблемного в таком заисании, работа то идет. Я на серваке не на денвере а на большом заточенном мускуле бывало сутками ждал завершения процессов, а тут всего-лиш денвер с очень скромными настройками мускуля.
     
    Tima111 нравится это.
  5. Tima111

    Tima111 Читатель

    Заблокирован
    Регистр.:
    5 июл 2007
    Сообщения:
    218
    Симпатии:
    486
    Sponge Bob, 34 миллиона записей, размер поля 60, вес таблицы 3Гб.
    Я больше дня ждал (больше 24 часов) статус был copy to tmp table, убил процесс начал заново, уже около 4 часов прошло статус - copy to tmp table.
    Можно ли узнать что делается в данный момент - сколько загруженно в tmp записей и не завис ли процесс?
    Кстати оперативной памяти 4Гб, может можно как-то за счёт неё ускорить процесс копирования таблицы в tmp?
     
  6. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    на денвере по умолчанию 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 миллионов записей групирует за пару минут
     
    Tima111 нравится это.
  7. Sponge Bob

    Sponge Bob Создатель

    Регистр.:
    22 апр 2010
    Сообщения:
    23
    Симпатии:
    14
    polyetilen
    А не дофия буфер чтения? Тогда уже добавить как положено key_buffer_size и заменить
    на что то типа
    И при прочих параметрах указанныйх, логичнее поставить
    query_cache_size = 128M
    или около того.
     
    Tima111 и polyetilen нравится это.
  8. Tima111

    Tima111 Читатель

    Заблокирован
    Регистр.:
    5 июл 2007
    Сообщения:
    218
    Симпатии:
    486
    Прописал все рекомендуемые настройки в my.cnf и перезапустил Denver.
    SQL запрос уже час в статусе copy to tmp table, это реально для 34 миллиона записей? Кстати компьютер стал притормаживать. За сколько примерно обработается 4Гб? На винчестере полно свободного места, оперативной памяти ещё 2Гб свободно.
    Можно ли где-нибудь посмотреть сколько уже записей или Мб скопировалось?
    В папке tmp смотрел - там вообще нету ничего весом больше 1Мб :nezn:
     
  9. venetu

    venetu

    Регистр.:
    28 мар 2007
    Сообщения:
    735
    Симпатии:
    261
    Попробуй скопировать сто тысяч записей в другую таблицу и над ней совершить те же операции. Если пройдет на ура - пробуй миллион и засекай время. Если нет - что-то в таблице, значит.

    Еще как вариант можно поиском и заменой в дампе сделать что тебе надо а потом дамп залить обратно. Муторно, конечно, но зато прекрасно делится на куски вплоть до одного инсерта.
     
  10. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    mysql temp тут Z:\usr\local\mysql5\data
    там видно как изменяется размер файлов
    или сделать пустую таблицу с другой кодировкой и копировать в неё с запросом
    Код:
    INSERT INTO table1 SELECT * FROM table2
    
    может быстрее будет
     
Статус темы:
Закрыта.