If you have a look at the mysql update script, you'll see that temporary tables are created and that the data from the old tables is inserted in the temp ones. Then, the new "working" tables are created and the data is copied from the temporary tables to the "working" ones.
During the insertion of the data, nested queries are performed. And as you seem to have got a lot of data, this takes a long, long time.