Does MySQL lock full table in case of update query on specific rows?
Locking 3.6M rows, especially when it is 90% of the table, has multiple burdens on the system.  It may "feel like" the entire table is locked.

This sounds like a 1-time fix; perhaps you should simply wait for it to finish -- which could take many minutes.

If you need a better, but more complex, solution, do the UPDATE in chunks of 100-1000 rows.  More details:  http://mysql.rjweb.org/doc.php/deletebig#deleting_in_chunks