За последние 24 часа нас посетили 18448 программистов и 1704 робота. Сейчас ищут 949 программистов ...

Проблемы с табличкой

Тема в разделе "MySQL", создана пользователем inline, 4 дек 2010.

  1. inline

    inline Активный пользователь

    С нами с:
    21 май 2010
    Сообщения:
    466
    Симпатии:
    0
    Изначально есть таблица прайсов
    prices(id - уникальный индекс, name - просто индекс, все остальные поля без индексов )
    Перед обновлением прайсов делаю временную копию таблицы prices - tempprices (create table tempprices like prices)
    Далее обновляю tempprices из xml-а (insert into table .... on duplicate key update ....)
    После обновления удаляю prices, а tempprices rename to prices.
    Все вроде гуд. Но время от времени (1-2 раза в неделю (прайсы обновляю каждые 2 часа)) сразу после обновления запросы к prices начинают страшно тормозить нагружая проц в 100%.
    В авральном порядке пробую разные методы востановления нормальной работы (один раз помогло repair table, второй раз уже не помогло - только удаление и создание индексов поновому дало результат)
    Подозреваю, что вроде как с индексами значит проблема.
    Почему она возникает и каким способом это победить?
     
  2. inline

    inline Активный пользователь

    С нами с:
    21 май 2010
    Сообщения:
    466
    Симпатии:
    0
    Никто ничего не подскажет?
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    тебя не заебало обновлять все это?

    обновляй только то что изменилось =) не?
     
  4. inline

    inline Активный пользователь

    С нами с:
    21 май 2010
    Сообщения:
    466
    Симпатии:
    0
    перед тем нужно еще проверить что именно изменилось, а на это тоже нужны ресурсы
    и как показала практика еще больше чем используется счас
     
  5. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    inline
    в зависимости от количества доступной памяти для мускула, можно временно создаваь таблицы типа MEMORY или HEAP, которые сидят только в памяти, и с ней работать. А в реальную таблицу скидывать обновлённые данные по кускам по заданию крона.

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

    Скорее всего у тебя загвоздка в том, что ты ненормально работаешь с таблицами, а именно - производишь переименование, что не есть гут.
     
  6. inline

    inline Активный пользователь

    С нами с:
    21 май 2010
    Сообщения:
    466
    Симпатии:
    0
    а что такого страшного в RENAME TABLE ?
     
  7. inline

    inline Активный пользователь

    С нами с:
    21 май 2010
    Сообщения:
    466
    Симпатии:
    0
    при RENAME TABLE индексы могли испортится?
     
  8. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    inline
    у тебя просто неправильный подход к делу. Потому-то и столько вопросов, на каждый из которых ты создаёшь топик. На многие из этих вопросов возможно не ответят просто потому, что не сталкивались. ХЗ, что происходит при переименовании таблицы, быть может индексы заново создаются; а быть может попытка использовать индексы от старой таблицы портит все запросы (хотя этого быть не должно по идее); может быть что-то ещё...

    Попробуй сменить подход к решению задачи, поищи другие пути.