[eluser]BrianDHall[/eluser]
Well, here's an idea. Create a new table for each time period, such as one a year or one a quarter, whatever you need to keep the table size manageable. Then once the time period is over that table will never get bigger, need only be backed up a single time, and you can optionally query multiple time period tables when you want to reach waaaay back.
Otherwise for only recent data the query would be a lot faster, you needn't do full backups of old data and can just do per-table backups if you would like, yet you don't lose anything or lose any functionality.
You could also optionally restrict who can do long-ago queries if they should become 'dangerous', meaning the query gets really resource intensive, so you can prevent just anyone from doing unlimited queries that could bring the server to its knees. You could just make sure a user authorized for old records appreciated the intensive nature of what they were asking - just as an extra safeguard.
So you might have tables with prefix analytics_, then:
analytics_2009|2010 or 2009_quarter1|2009_quarter2, etc.