Lets look at stolen memory a bit. The relationship between memory grants and stolen memory is probably the least intuitive relationship. Remember – if a query gets a memory grant the grant happens at the beginning of query execution. Its just a promise of sort/hash memory to be made available when the query needs it. The grant memory isn’t stolen immediately – rather its stolen in small allocations over time as needed by the query.
In the graph immediately below, the outstanding grants are shown over time. There are no pending grants during the observation period. Granted memory and reserved memory are both shown as areas, with reserved memory in front of granted memory. Granted memory is consistently greater than reserved memory (in this case, no resource pools have been added beyond the pre-existing default and internal pools). This is how we can determine that the reserved memory is granted memory which hasn’t been stolen yet.
This is a great explanation of what stolen memory is and why it’s important.
Comments closed