Ouch! For that many records, you are, indeed, reaching the limit. Here's a thought on how to safeguard yourself.
Every so often, export the big table to a .CSV or .TXT file or some other reasonable format.
Trash the big table by deleting everything in it.
Now compact and repair the remnants.
Now re-import the .CSV or .TXT file.
Another way to protect yourself is to consider whether the records might be subject to life-cycle management techniques. In which you eventually declare the records "obsolete" and remove them from your primary. (Again, export to another format and reclaim the space. Import to your history database.)
Without knowing what you are doing, it is hard to be more directly constructive in terms of ways to protect your data.
I'll make one more suggestion. Look at your machine's physical memory and swap space. I would strongly suggest that you max out the box and the swap file. When making lists of data at that level, you are looking at 25 Mb just to hold the pointer list that corresponds to a single sorted query. Your database growth rate makes most of our puny little DBs pale by comparison.