Foundationপ্রথম নীতি থেকে
LEVEL 8 · Database Systems

Buffer Pool

বাফার পুল

Memory-তে disk page-এর cache — পড়া-লেখা আগে এখানে, eviction policy ঠিক করে কোন page ডিস্কে ফিরবে।

also: page-cache-db, buffer-cache

OS page cache থেকে আলাদা কেন? Database জানে কোন page কখন দরকার — query context আছে, O_DIRECT-এ double caching এড়ানো যায়:

SELECT c.relname, count(*) FROM pg_buffercache b
JOIN pg_class c ON b.relfilenode = pg_relation_filenode(c.oid) GROUP BY 1;
  • Pin/unpin: চলমান access-এ page ধরে রাখা — evicted হতে পারে না
  • Dirty page: বদলানো হয়েছে, ডিস্কে যেতে হবে — কিন্তু WAL flush-এর আগে নয়
  • Eviction clock/LRU variant — full LRU-র sequential flood bug এড়াতে

Hit ratio ৯৯% দেখে খুশি হওয়ার আগে working set vs pool size ভাবুন।