[snip]
If I understood correctly, you have to delete about 3 million records(worst case) from the main table each day. Including the other 8 tables those are 27 million DELETE queries each of which deletes only a few records. That's about 300 queries per second. I'd be worried about impacting performance on other queries at this rate.
300 records/second. Fewer DELETE statements if there are one-many relationships with the child tables.
I'd go for a middle ground: Instead of expiring once per day, use a shorter interval, maybe once per hour or once per minute. That will (probably) make each expire job really quick but still create much less load overall.
--
Born in Arizona, moved to Babylonia.
Born in Arizona, moved to Babylonia.