Re: Innodb bogs down on complicated query(ies)
The "Table lock" is thread status information that is set in mysql_lock_tables(), file lock.cc. InnoDB generally downgrades locks requested by MySQL. InnoDB table locks are only used within LOCK TABLES, as far as I remember. MySQL tries to acquire a table lock before executing a statement. The related InnoDB methods are ha_innobase::external_lock() and ha_innobase::store_lock().
If the UPDATE cannot be done in place, InnoDB will map it to DELETE and INSERT. If the update only modifies fixed-length columns (as I would assume based on what you have disclosed), InnoDB should perform the update in-place, and no cascade should take place.
With this limited data, I'm afraid I can't help you further. As a last resort before buying support from MySQL, you could try to experiment with the innodb_max_purge_lag setting, to throttle the UPDATE statements.
Best regards,
Marko Mäkelä
Innobase Oy/Oracle Corp.