depending on the amount of changes that you have, querying the database just to get an idea how much changes are there may be an expensive operation.
i normally base the batch size on average row size... if i have rows that are around 1k each, then a 1024 batch would more or less mean 10 rows per batch. if i have 100 row changes on average, i know it would take at least 10 batches...