Browse Prior Art Database

Buffer Pool Management

IP.com Disclosure Number: IPCOM000075277D
Original Publication Date: 1971-Aug-01
Included in the Prior Art Database: 2005-Feb-24
Document File: 4 page(s) / 118K

Publishing Venue

IBM

Related People

Levy, RJ: AUTHOR [+4]

Abstract

The use of a shared buffer pool for I/O operations involving a number of data sets must utilize knowledge of the contents of the buffers to reduce the requirements for actually transferring data. This is done by checking for the presence of the required data in one of the buffers before initiating a read from external storage and by maintaining the more often used data in the buffers. The use of some initial save value, depending on the use, keeps the most Important data in main storage as long as it is being used. Decrementing the save value whenever a buffer is needed and the data is not found in the buffer allows the buffer's value to degrade with time, so that important data which is rarely used will eventually stop tieing up space.

This text was extracted from a PDF file.
At least one non-text object (such as an image or picture) has been suppressed.
This is the abbreviated version, containing approximately 46% of the total text.

Page 1 of 4

Buffer Pool Management

The use of a shared buffer pool for I/O operations involving a number of data sets must utilize knowledge of the contents of the buffers to reduce the requirements for actually transferring data. This is done by checking for the presence of the required data in one of the buffers before initiating a read from external storage and by maintaining the more often used data in the buffers. The use of some initial save value, depending on the use, keeps the most Important data in main storage as long as it is being used. Decrementing the save value whenever a buffer is needed and the data is not found in the buffer allows the buffer's value to degrade with time, so that important data which is rarely used will eventually stop tieing up space. In any event, when all buffers are filled, the buffer whose contents are least likely to keep a read from having to be performed will be chosen when additional data is required.

Buffers which I/O operations are using cannot be assigned to other use until the I/O has completed. The save value can be adjusted during I/O, because the actual or proposed contents of the buffers are known before I/O is started.

The weighting of the save value is dependent upon a number of factors. First, it should be enough larger than the decrementing value times the number of buffers so that when initially selecting buffers all of the buffers get used because they have 0 as a value, while the first buffer still has a positive value after having been decremented n-1 times (where n is the number of buffers in the pool).

Second, there should be some additional increment on a data set basis, which may be controlled by the user, so that buffers with data from one data set are less likely to be used for another I/O operation, than those with data from a less important data set.

Third, the method of access to a data set may make the same block of data more or less important. An additional increment is added to those supplied by the first two factors to account for the use being made of the data.

As examples of this type of weighting, assume the construction of a data set which consists of data records. A second data set has pointers to the data records. To simplify the search through these pointers, higher level pointers fragment the lower level so that it is unnecessary to search through all of the lower level. This process is repeated until only one block of data need be transferred to obtain all of the pointers at one level. This index structure would then consist of a number of levels of pointers with a smaller number of blocks at each level. Such a pointer set, based on the order the data are in, is called a primary index. Similarly, another pointer set whose order is based on some field in the data, which is not related to the order of the data, is called a secondary index. During creation, the highest level block would be needed in main storage only when an entry to the data set required that add...