Нам нужно запустить скрипт каждые 24 часа, который вычисляет суммы & значений данных из 1 большой таблицы журналов и обновляет данные в Main_Table (Innodb), у которых есть много запросов на выбор/обновление время (примерно 1 раз в секунду)Блокировка данных предотвращает запуск запроса - MySQL InnoDB
Я провел тестовый запрос на локальной БД, которая заняла около 10 минут:
Update Main_Table Set Steps = (Select count(*) From Log_Activity Where Log_Activity.MainID = Main_Table.ID)
И поскольку это обновляет все строки в Main_Table все застрять в живых проект из-за перетаскивания таблицы. Думаю, мне пришлось убить процесс запроса, чтобы это начало работать правильно снова - данные не были обновлены.
я сделал некоторое рытье и я рассматриваю следующие 3 варианта:
- Обновить все данные в временную таблицу, а затем сливаются в Main_Table каким-то образом.
- Запустите сценарий в php-циклах вместо 1 запроса MySql (потребуется больше времени, но обновите 1 строку за раз).
- Я не уверен, что это связано с нашей проблемой, но я прочитал что-то о «НАЧАЛЬНОЙ ОПЕРАЦИИ ... и т. Д.», И я думаю, что это может быть связано с ... не так ли?
Надеюсь, что кто-то может пролить свет на это и помочь нам. Благодаря
Thanks eggyal! Однако я предпочитаю не создавать индекс для Log_Activity.MainID, потому что эта таблица получает много вставок в минуту (иногда в секунду), и это, как ожидается, будет расти ..) любые другие идеи? – SiteAppDev