проц, оперативки 140Gb, SSD родные.
Есть табличка на 5 млн записей.
В табличке есть поле is_complete.
Мне нужно во всей табличке его установить в false.
Устанавливается очень долго и похоже единой транзакцией.
Может что нужно в настройках мускуля подкрутить, что бы работало быстрее?
UPDATE `dislocation` SET `is_rwc_complete`=0 WHERE `is_rwc_complete`=1
Чанками по 1000 записей проставь. Update t set f=val where id >0 and id <=1000; Update t set f=val where id >1000 and id <=2000; Update t set f=val where id >2000 and id <=3000; ... Где id - pk или uk
А может что в настройке самого мускуля не так? Все-таки 25 минут это очень долго...
А что с нагрузкой по Цпу в этот момент? Сервант очень древний
while true ; do mysql -e "Update dislocation SET is_rwc_complete = 0 WHERE is_rwc_complete = 1 LIMIT 1000; sleep 0.1 echo -n "." done
чуть позже еще раз будет проверять, сделаю.
Обсуждают сегодня