My preference is to keep tabs on growth by month for all objects => N MB's and then aggregate monthly growth of objects which are < N MB's into a single row. Each object is a single row, size history is stored in a comma separated list "100,101,102,200..." for as many months as I care about. It pretty easy to visually see what matters to me and with some simple API's to operate on lists you can find things like "what has increased by > 10% this month?". The simplest thing to do is just store size history in a table by object, and month. If you go with the "aggregate objects < N MB's into a single object" you can greatly reduce the number of rows you store. I go with a slightly more complicated setup because it works well with a some API's I already have at hand. My feeling is every DBA should have a solution for above in their personal script library.