SQL SERVER The Buffer Pool and the Data Cache


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.