A data buffer pool (data cache) is an area of transient storage that contains the blocks transmitted from persistent storage
A data buffer pool is used to reduce a number of transmissions from persistent storage to transient storage and reverse
Persistent storage versus transient storage
Whenever a data block is read by a database application and such block is not in a buffer pool then it is transmitted from persistent storage
Whenever a data block is written by a database application then write operation is performed on block in transient storage and such block is not immediately written to persistent storage
Multiple reads and writes on the same data block are performed on the block located in transient storage
Hit ratio = (number of read/write operations on data buffer pool)/
(total number of read/write operations)
In a well tuned system hit ratio ≥ 0.9
It means that out of 100 read/write operations at least 90 must be performed on data buffer pool
Multiplicity of operating system block size, e.g. 2K, 4K, 8K,16K, 32K
Extent
An extent consists of specific number of contiguous data blocks (default 5 blocks, minimum 2 blocks).
Segment
A segment consists extents allocated for a specific type of data structure and stored in the same tablespace
Each relational table is stored in its own data segment, each index is stored in its own index segment, etc
Storage structures
Tablespace
A logical storage component of a database. At a physical level a tablespace consists of files. At a logical level a tablespace consist of segments (relational tables, indexes, materialized views, etc)
Distribution of data objects (relational tables, indexes, ..., etc) has a very important impact on performance
Data objects that are used together should be located on different devices to allow for simultaneous transmission of data from persistent storage to main memory
For example, two relational tables that are frequently joined should be located on the different persistent storage devices
Data objects that are the most frequently used should be located on the fastest persistent storage devices
It is important to consider a balance between a size and frequency of use, for example a small and frequently used relational table should be located on a device that is faster than very large and very rarely used relational table