DataPilot
Knowledge Base
· Updated 2026-07-29

How would you manage maintenance plan on 10 Tb of data on Sqlserver db

With a 10TB database the biggest thing is you stop treating maintenance as one big blanket job and start being surgical about it, because you simply don't have a window big enough to reindex or check everything every night. So the first thing I'd do is throw out the built-in maintenance plans and move to Ola Hallengren's scripts, because they let me do intelligent, threshold-based work instead of brute force.

For index maintenance, I'd never rebuild everything. I'd let Ola's IndexOptimize look at fragmentation and only reorganize between roughly 5 and 30 percent and rebuild above 30, and I'd set a page-count minimum so it ignores tiny indexes that don't matter. On something this big I'd strongly prefer online rebuilds on Enterprise so I'm not blocking users, and I'd break it into smaller batches by table or filegroup spread across several nights rather than one massive run.

Statistics I actually treat separately and more aggressively, because on a table with billions of rows the auto-update threshold kicks in far too late. So I'd update stats more frequently than I rebuild indexes, often with a targeted sample rather than fullscan on the huge tables to keep it affordable.

Integrity checks are the part people skip on VLDBs and regret. CHECKDB on 10TB is expensive, so I'd split it — run CHECKALLOC and CHECKCATALOG separately, and use the physical-only option during the week, saving a fuller check for the weekend. Even better, I'd offload CHECKDB by restoring backups onto a secondary server and running it there, which validates my backups at the same time.

Speaking of backups, at this size I'd lean on a weekly full, daily differentials, and frequent log backups, and I'd use compression and multiple backup files striped across disks to cut the time dramatically. If the storage supports it, I'd look at SAN or Azure snapshot-based backups.

And underpinning all of it, I'd partition the big tables so I can target maintenance at just the hot or recently changed partitions instead of the whole thing.

Likely follow-up: How do you handle CHECKDB when it doesn't fit the window?