Supported features
For a detailed explanation of disk I/O in SQL Server, see
I/O fundamentals.
A buffer is an 8-KB page in memory, the same size as a data or index page. Thus, the buffer
cache is divided into 8-KB pages. The buffer manager manages the functions for reading data
or index pages from the database disk files into the buffer cache, and writing modified pages
back to disk. A page remains in the buffer cache until the buffer manager needs the buffer area
to read in more data. Data is written back to disk only if it’s modified. Data in the buffer cache
can be modified multiple times before being written back to disk. For more information, see
Read data pages in the Database Engine
and
Write pages in the Database Engine.
When SQL Server starts, it computes the size of virtual address space for the buffer cache
based on several parameters such as the amount of physical memory on the system, the
configured number of maximum server threads, and various startup parameters. SQL Server
reserves this computed amount of its process virtual address space (called the memory target)
for the buffer cache, but it acquires (commits) only the required amount of physical memory
for the current load. You can query the
and
columns in the
sys.dm_os_sys_info
catalog view to return the number of pages reserved as the memory target
and the number of pages currently committed in the buffer cache, respectively.
The interval between SQL Server startup and when the buffer cache obtains its memory target
is called ramp-up. During this time, read requests fill the buffers as needed. For example, a
single 8-KB page read request fills a single buffer page. This means the ramp-up depends on
the number and type of client requests. Ramp-up is expedited by transforming single page
read requests into aligned eight page requests (making up one extent). This allows the ramp-
up to finish much faster, especially on machines with a lot of memory. For more information
about pages and extents, see
Page and extent architecture guide.
Because the buffer manager uses most of the memory in the SQL Server process, it cooperates
with the memory manager to allow other components to use its buffers. The buffer manager
interacts primarily with the following components:
Resource Manager to control overall memory usage and, in 32-bit platforms, to control
address space usage.
Database Manager and the SQL Server Operating System (SQLOS) for low-level file I/O
operations.
Log Manager for write-ahead logging.
The buffer manager supports the following features:
trace
flag 834
committed_target_kb
committed_kb