Wanted to add to this from our recent experience:
We have been careful to not make individual transactions grow too much in size (<1MB), but in places where we needed to delete a bunch of keys/key-ranges, we ended up fitting a lot of clear/clear-range operations in a single transaction (~500 / tx), expecting to save tx start/commit time.
This caused significant performance issues for us - SS kind of takes huge pauses when there are such transactions - SS starts to show alternating read-spikes followed by write-spikes with long pauses (seconds) in between. This causes SS queues and TLog queues to build up significantly, and they take long time to clear even after the load is removed.
Breaking these operations into a lot of smaller transactions (each transaction clears ~10 keys/key-ranges) makes FDB perform much better. There are no pauses and FDB is able to clear the incoming load much smoother. We still need to come with the optimal number of keys/tx, but for now, keeping these transactions touch fewer rows has definitely helped.
I will provide more details/test-case for reproducing this sometime later (we are in middle of some crunch time at present).