The PostgreSQL memory at first sight looks simple. If compared with the
complex structures implemented in the other DBMS to a careless reader
could seem rudimentary. However, the memory and in particular the shared
buffers implementation is complex and sophisticated. This chapter will
dig down deep into the PostgreSQL’s memory.
3.1 The shared buffer
The shared buffer is a segment allocated at cluster’s startup. Its size
is determined by the GUC parameter shared_buffers and the size can be
changed only restarting the cluster. The shared buffer is used to manage
the data pages as seen in 2.6, which are called buffers when loaded in
rhw memory. Having a RAM segment is not uncommon in the database
universe. Is a rapid exchange area where the buffers are kept across the
sessions and keeps the data near the CPU. Like his competitors
PostgreSQL strives to keep in memory what is important things and not
everything. In the era of the in memory
databases this could seems an obsolete concept. Unfortunately the
truth is that the resources, and so the money, are not infinite. Before
digging into the technical details we’ll have a look to the history of
the memory manager. The way PostgreSQL sticks an elephant into a small
car without Timelord technology.