Как обновлять более 500к строк, без длительной блокировки MySQL таблицы?
Вариант 1. Обновлять данные кусочками. Блокировки все равно будут, но небольшие.
Вариант 2. Master-slave репликация. Обновлять данные на master, а читать со slave. В этом случае блокировка master не помешает читать данные со slave. В качестве бонуса - повышенная отказоустойчивость.
Копировать таблицу, которую собрались изменять, в другую таблицу, обновлять данные там, переименовывать или переносить данные обратно. По-моему так.