Bufferpool basati su blocchi per un miglioramento del precaricamento sequenziale
Il precaricamento delle pagine dal disco è costoso a causa del sovraccarico I/O. La velocità di trasmissione può essere notevolmente migliorata se l'elaborazione si sovrappone all'I/O.
La maggior parte delle piattaforme fornisce primitive ad alte prestazioni che leggono pagine contigue da disco in porzioni di memoria non contigue. Queste primitive sono generalmente denominate lettura diffusa o I/O vettoriale. Su alcune piattaforme, le prestazioni di queste primitive non possono competere con l'I/O in grandi dimensioni di blocchi.
Per impostazione predefinita, i pool di buffer sono basati su pagine, il che significa che le pagine contigue sul disco vengono precaricate in pagine non contigue in memoria. Il precaricamento sequenziale può essere migliorato se le pagine contigue possono essere lette dal disco in pagine contigue all'interno di un pool di buffer.
È possibile creare pool di buffer basati su blocchi per questo scopo. Un pool di buffer basato su blocchi è costituito sia da un'area di pagina che da un'area di blocchi. L'area della pagina è richiesta per i carichi di lavoro di precaricamento non sequenziali. L'area di blocco è composta da blocchi; ogni blocco contiene un numero specificato di pagine contigue, a cui si fa riferimento come dimensione blocco.
- La dimensione dell'estensione, che determina la dimensione della richiesta di precaricamento, è inferiore alla dimensione del blocco specificato per il pool di buffer
- Alcune pagine nella richiesta di precaricamento sono già presenti nell'area della pagina del pool di buffer
Il server I/O consente alcune pagine non utilizzate in ciascun blocco del pool di buffer, ma se vengono sprecate troppe pagine, il server I/O esegue il precaricamento non basato sul blocco nell'area della pagina del pool di buffer, determinando prestazioni non ottimali.
Per prestazioni ottimali, collegare i tablespace della stessa dimensione di estensione a un bufferpool la cui dimensione di blocco è uguale alla dimensione di estensione del tablespace. Una buona prestazione può essere ottenuta se la dimensione dell'estensione è maggiore della dimensione del blocco, ma non se la dimensione dell'estensione è minore della dimensione del blocco.
Per creare pool di buffer basati su blocchi, utilizzare l'istruzione CREATE BUFFERPOOL o ALTER BUFFERPOOL.