The main memory component in SQL Server is the
buffer pool.
All memory not used by another memory component remains in the
buffer pool to be used as a data cache for pages read in from the database fi
les on disk.
The buffer manager manages disk I/O functions for bringing data
and index pages into the data cache so data can be shared among users. When
other components require memory, they can request a buffer from the buffer
pool. A buffer is a page in memory that’s the same size as a data or index
page.
You can think of it as a page frame that can hold one page from a
database. Most of the buffers taken from the buffer pool for other memory
components go to other kinds of memory caches, the largest of which is typically the cache for
procedure and query plans, which is usually called the plan cache.
Occasionally, SQL Server must request contiguous memory in larger
blocks than the 8-KB pages that the buffer pool can provide, so memory must be
allocated from outside the buffer pool. Use of large memory blocks is typically
kept to a minimum, so direct calls to the operating system account for a small
fraction of SQL Server memory usage.