In response to "Sorin N. Ciolofan" <ciolofan@xxxxxxxxxxxx>: > > I don't know the algorithm on which Postgre uses the shared buffers but I'd > like to find the principles behind it. Let's assume the following scenario: > I've set shared_buffers=3000 > At the starting of Postgres there are 115 buffers used by database A > After the execution of some processing caused by a java methodA1() > invocation, 2850 buffers are used by A. > What happens next if these 2850 buffers remains used even if the methodA1() > finished its execution? They'll be reused the next time a query needs the same data, or discarded when the buffer space is needed for something else. > Suppose that now a methodA2() invocation occurs and this method works with > database A, too. Will be the 2850 buffers reused yes > or will postgre throw an > "out of shared memory" exception? no > What happens if a methodB() invocation occurs, assuming that this method > tries to work with database B? Buffers will be allocated/reallocate/reused as best fits the usage pattern of the server. > How Postgres decides the allocation of shared_buffers? They're "buffers". They follow the design of just about any other type of buffer: http://foldoc.org/index.cgi?query=buffer&action=Search "Buffers are used to decouple processes so that the reader and writer may operate at different speeds or on different sized blocks of data." > -----Original Message----- > From: pgsql-general-owner@xxxxxxxxxxxxxx > [mailto:pgsql-general-owner@xxxxxxxxxxxxxx] On Behalf Of Bill Moran > Sent: Thursday, April 26, 2007 3:32 PM > To: Sorin N. Ciolofan > Cc: pgsql-general@xxxxxxxxxxxxxx; pgsql-admin@xxxxxxxxxxxxxx > Subject: Re: [ADMIN] [GENERAL] pg_buffercache view > > In response to "Sorin N. Ciolofan" <ciolofan@xxxxxxxxxxxx>: > > > > > Hello! > > > > Do you know which could be the reasons that could conduce an application > to > > not release the shared buffers, even after the application was shut down? > > I noticed that only if a pg_ctl restart command is issued some of the > > buffers are set free. > > The reason would be "by design." > > If the server flushes its cache every time the application restarts, the > cache isn't going to be very effective. > > If PostgreSQL is using more shared buffers than you're comfortable with, > reduce the shared_buffers setting in the config. That will allow the OS > to decide how to use the memory instead. > > -- > Bill Moran > http://www.potentialtech.com > > ---------------------------(end of broadcast)--------------------------- > TIP 4: Have you searched our list archives? > > http://archives.postgresql.org/ > > -- Bill Moran http://www.potentialtech.com