Reading on SQL Server Book online and my understanding SQL Server Buffer Pool or “Buffer Cache” consists of
a) “Data page Cache” — pages are always fetched into the data page cache from disk, for both read and write operation if they are not found inside the “cache”
b) “Plan cache” — procedure cache may not be appropriate term as execution plan is cached for adhoc sql as well as dynamic sql
c) Query work space — I believe this will be for joins or sort (order by) may be
Question: What else is kept in buffer pool? Does “Log Cache” is also part of buffer pool or “caching of log records” before hardning to transaction log on disk is kept in separate area of memory?
Check out this http://www.toadworld.com/platforms/sql-server/w/wiki/9729.memory-buffer-cache-and-procedure-cache.aspx
Extract from that blog post:
Other portions of buffer pool include:
System level data structures – holds SQL Server instance level data about databases and locks.
Log cache – reserved for reading and writing transaction log pages.
Connection context – each connection to the instance has a small area of memory to record the current state of the connection. This information includes stored procedure and user-defined function parameters, cursor positions and more.
Stack space – Windows allocates stack space for each thread started by SQL Server.
Hope this helps.