XFS deletion performance can be improved by enabling lazy-counters. This can be done with a moderate recent kernel (supporting lazy-counters) and very recent xfs-utils. The xfs_admin command is the one to enable lazy-counter. You may also want to enable unwritten extents and log-version 2 (which can utilize bigger logs) and change the mount options to use more/bigger log buffers. This will usually boost xfs performance a lot. Some of these changes need an xfs_repair run afterwards. It cannot be changed while the filesystem is online.
We use these setting with great success. ext3 is usually slower except you turn off ordered data journalling. For us xfs has the advantage of supporting multiple parallel write threads due to its use of allocation groups which can be modified in parallel by multiple kernel threads. Combined with a RAID-5 (or others which can do independent writes in parallel to different disks) and xfs setup to use the correct stripe size this is a nice performance improvement. This should usually also yield a very performant database setup.
Here's the xfs_admin command line which would do that:
xfs_admin -ej -c1 /dev/sdXX
And the mount options:
mount -o relatime,sunit=128,swidth=384,logbufs=8,logbsize=256k /dev/sdXX ...
sunit and swidth are about the stripe width and size - it's a bit complicated to describe these at this point. The values are usually sectors (512-byte units). sunit is the stripe size, swidth is sunit * count-of-stripes. relatime should be default in latest kernels anyway.