MySQL — выпуск обновлений с низким приоритетом

MySQL — выпуск обновлений с низким приоритетом

Есть ли способ выполнить обновления с низким приоритетом в MySQL?

Я запускаю очень высоконагруженное приложение, в котором могут быть буквально тысячи пользователей, пытающихся одновременно обновить одни и те же записи данных. Это в основном статистическая информация на основе сеанса, большая часть которой может быть проигнорирована в случае, если с запросом связано время ожидания. Я хотел бы иметь возможность проверять, заблокирована ли какая-то таблица/строка, и если да, то просто не передавать запрос на обновление на сервер. Это возможно?

решение1

Какую базу данных вы используете? MyISAM или InnoDB? Если это MyISAM, вы можете использовать следующую команду для просмотра блокировок:

SHOW FULL PROCESSLIST;

Источник:Как показать блокировки MySQL?

Однако я бы рекомендовал вам использовать другой подход. Вместо того, чтобы иметь одну точку конфликта, просто вставьте новую строку для каждой точки данных с помощью INSERT DELAYED. Затем в конце дня или когда вам понадобятся данные, вы можете выполнить пакетную обработку всего. Обратите внимание, что это работает только для типов движков MyISAM, MEMORY и ARCHIVE.

Источник: dev.mysql.com/doc/refman/5.1/en/insert-delayed.html

Я думаю, этот вопрос следует задать на Stack Overflow. Там вы, вероятно, получите лучший ответ.

-Джеффри Ли

Связанный контент