Прежде всего, я бы сказал, вместо того, чтобы делать большую загрузку в первый раз, почему бы не поставлять ваше приложение вместо копии базы данных? Тогда вам нужно беспокоиться только о дополнительных обновлениях.
Если база данных не изменяется постоянно, я думаю, что самый простой способ сделать это - использовать журнал запросов. Включите ведение журнала запросов в БД MySQL, чтобы все операции записывались в файл. Затем, когда iPhone запрашивает обновленные данные, вы можете просто проанализировать файл журнала и подготовить ответ, который описывает вставки, обновления и удаления.
Если база данных изменяется многими пользователями в режиме реального времени, это не очень хорошая идея, поскольку журнал запросов будет огромным. В этом случае вы можете использовать метки времени созданного / измененного в базе данных, чтобы узнать, какие вставки и обновления являются кандидатами на ответ iPhone. Однако при удалении вы можете либо пометить каждую строку как «не действительно удаленную» до тех пор, пока приложение iPhone не станет известно, либо вы можете создать таблицу под названием «удаленные данные» и перемещать туда данные вместо того, чтобы явно удалять их.