What is the exact function of the database buffer?

Posted by Admin on 01-Oct-2009 07:38

Hi,

I was wondering what the exact function of the database buffer (indicated with the -B startup parameter) is.

This question originated from the following case:

I am accessing Progress 9.1D with SQL92 to dump a number of tables data. The question is; does increasing the -B parameter increase performance?

To get a good answer to this question I have to know if Progress utilizes this area only to store query results for repeated execution (of the same query) or is this area also relevant for queries that run once (every night)?

Kind regards,

Dave

All Replies

Posted by ChUIMonster on 01-Oct-2009 08:01

It is a cache of blocks that are accessed by the db.

It helps in many ways.  If the query is a one-time table scan it is still helpful, albeit less so than in other situations.

Because you are using version 9 you do not have type 2 storgae areas.  This means that data from multiple tables is mixed in each data block.  So a block read from Table A may also contain data for Table B.  A larger buffer pool increases the odds that the "extra" data will already be in memory when it is needed.  Among other possible scenarios -- depending on how the data weas created in the first place there is some potential for this effect to be more than trivial (if records from Table A and Table B tend to be created at the same time they might also tend to be in the same block).  How significant this is is something that you can only discover by testing.  Another scenario is one where the data is not in the order that you are extracting it.  You are probably going in primary index order -- but if the data is created in some other order that index will jump around a lot between blocks.  A larger buffer pool will help keep data in memory as you jump around.

If you are planning to do these dumps routinely you should upgrade to OE10 and use properly configured type 2 storage areas.

This thread is closed