Есть ли способ выполнять обновления с низким приоритетом в mysql?
Я запускаю приложение с очень высокой нагрузкой, в котором могут быть буквально тысячи пользователей, пытающихся одновременно обновить одни и те же записи данных. В основном это статистическая информация на основе сеанса, большая часть которой может быть проигнорирована, если с запросом связано время ожидания. Я хотел бы иметь возможность проверить, заблокирована ли какая-то таблица / строка, и если да, просто не передавать запрос на обновление на сервер. Это возможно?
Какой механизм базы данных вы используете? 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. Вы, вероятно, получите там лучший ответ.
-Джеффри Ли