Database Buffer Pool Initialization for Faster Startup

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current database systems with large memory components require extensive initialization times, leading to prolonged startup periods, during which the system is unavailable for use, with no effective workaround to improve startup speed.

Innovation Solution

Allocate memory for buffer pools, fully initializing smaller pools and partially initializing larger pools in a deferred mode, allowing the database to operate while the memory manager initializes the remainder in the background, with recovery operations running parallel to the initialization process.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If the entire memory component is initialized before opening the database for use, then the system reliability is improved, but the startup time increases significantly

Engineering Contradiction:
Improvesystem reliabilityVSAvoidstartup time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent segments the buffer pool initialization process into two phases: a first phase that initializes a first portion of the buffer pool before database opening, and a second phase that initializes a second portion after database opening. This segmentation allows the database to become operational while initialization continues in the background, resolving the contradiction between ensuring system reliability through complete initialization and reducing startup time by avoiding full pre-initialization.

Inventive Principle:
Principle #1Segmentation

2Stability of the object's composition

If the entire buffer cache is initialized at startup, then the system stability is improved, but the time required for initialization increases to minutes

Engineering Contradiction:
Improvesystem stabilityVSAvoidinitialization time
Core Design Contradiction:
Stability of the object's compositionVSLoss of time

Solution Approach 1:

The patent applies preliminary action by initializing a first portion of the buffer pool before the database is opened for use, ensuring critical stability requirements are met. Meanwhile, the second portion of the buffer pool is initialized after database opening using background processes, thereby maintaining system stability while dramatically reducing the time the system remains unavailable during startup.

Inventive Principle:
Principle #10Preliminary action

3Quantity of substance

If larger buffer pools are used to increase memory capacity, then the system performance is improved, but the initialization time increases proportionally

Engineering Contradiction:
Improvememory capacityVSAvoidinitialization time
Core Design Contradiction:
Quantity of substanceVSLoss of time

Solution Approach 1:

The patent introduces dynamics into the initialization process by allowing it to continue in the background after database opening. The larger buffer pool is not static in its initialization state but transitions dynamically: the first portion is initialized before opening to ensure performance, while the second portion completes initialization after opening through background processes, preventing initialization time from scaling linearly with buffer pool size.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS7467279B2Method and system for faster instance startup for large resource configurations
Publication Date: 2008.12.16 ORACLE INT CORP
  • US7467279B2 patent drawing
  • US7467279B2 patent drawing
  • US7467279B2 patent drawing

AI summary

A method for starting up a database system, comprising allocating memory spaces for three buffers; initializing two of the buffers; partially initializing the third buffer where the third buffer is larger than the other two; instructing the memory manager to initialize the remainder of the third buffer in the background process; performing recovery operations; and opening the database system for use. The database is operated in an open phase while the remainder of the third buffer is initialized in the background and ran in parallel to the recovery operation that may extend beyond the completion of opening the database. Thus opening the database prior to completion of full initialization and initializing the third buffer in the background improves the startup time of the database which becomes significant when the size of the third buffer is very large (e.g., 500 GB+).