Изначально есть таблица прайсов 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, второй раз уже не помогло - только удаление и создание индексов поновому дало результат) Подозреваю, что вроде как с индексами значит проблема. Почему она возникает и каким способом это победить?
перед тем нужно еще проверить что именно изменилось, а на это тоже нужны ресурсы и как показала практика еще больше чем используется счас
inline в зависимости от количества доступной памяти для мускула, можно временно создаваь таблицы типа MEMORY или HEAP, которые сидят только в памяти, и с ней работать. А в реальную таблицу скидывать обновлённые данные по кускам по заданию крона. Или же наоборот - данные брать из временной таблицы в памяти (использовать как кеш вывода), обновить по кускам основную таблицу и заново пересоздать таблицу в памяти. Скорее всего у тебя загвоздка в том, что ты ненормально работаешь с таблицами, а именно - производишь переименование, что не есть гут.
inline у тебя просто неправильный подход к делу. Потому-то и столько вопросов, на каждый из которых ты создаёшь топик. На многие из этих вопросов возможно не ответят просто потому, что не сталкивались. ХЗ, что происходит при переименовании таблицы, быть может индексы заново создаются; а быть может попытка использовать индексы от старой таблицы портит все запросы (хотя этого быть не должно по идее); может быть что-то ещё... Попробуй сменить подход к решению задачи, поищи другие пути.