# US 2014/0195750 A1 · Buffer pool extension for database server

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2014/0195750 A1
- Document ID: US20140195750A1
- Status: Published application
- Kind: A1
- Application number: 14/208,268
- Filed: 2014-03-13
- Published: 2014-07-10
- Earliest claimed: 2010-03-04
- Assignees: Microsoft Corporation
- Applicants: Microsoft Corporation
- Inventors: Chengliang Zhang; Sadashivan Krishnamurthy; Georgiy I. Reynya; Alexandre Verbitski; Pedro Celis; Dexter Paul Bradshaw
- Web page: https://patentgrep.com/patent/US20140195750A1

## CPC

- G06F 3/0656: {Data buffering arrangements}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0653: {Monitoring storage devices or systems}
- G06F 3/0688: {Non-volatile semiconductor memory arrays}
- G06F 12/121: using replacement algorithms
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Aspects of the subject matter described herein relate to a buffer pool for a database system. In aspects, secondary memory such as solid state storage is used to extend the buffer pool of a database system. Thresholds such as hot, warm, and cold for classifying pages based on access history of the pages may be determined via a sampling algorithm. When a database system needs to free space in a buffer pool in main memory, a page may be evicted to the buffer pool in secondary memory or other storage based on how the page is classified and conditions of the secondary memory or other storage.

## Claims

### Claim 1

A method, implemented at a computer system that includes one or more processors, a first memory, a second memory that is slower than the first memory, and a third memory that is slower than the second memory, for associating pages of a buffer pool with different memories, the method comprising:
determining a first page access frequency threshold and a second page access frequency threshold for classifying a plurality of pages of a buffer pool; and
associating the plurality of pages with the first, second, and third memories, including:
associating one or more first pages having corresponding page access frequencies greater than the first page access threshold with the first memory;
associating one or more second pages having corresponding page access frequencies less than the first page access threshold, but greater than the second page access threshold, with the second memory; and
associating one or more third pages having corresponding access frequencies less than the second page access threshold with the third memory.

### Claim 2 (depends on 1)

The method of claim 1, wherein the first memory comprises volatile memory, and the second memory comprises solid-state storage.

### Claim 3 (depends on 2)

The method of claim 2, wherein the first memory and the second memory form the buffer pool.

### Claim 4 (depends on 1)

The method of claim 1, wherein when an input/output (I/O) threshold of the second memory is reached, a new I/O request is redirected to the third memory.

### Claim 5 (depends on 4)

The method of claim 4, wherein the I/O threshold of the second memory is determined to have been reached when accesses to the second memory approach a read/write bandwidth of the second memory, or when accesses to the second memory approach a pre-defined threshold.

### Claim 6 (depends on 4)

The method of claim 4, wherein the I/O threshold of the second memory is determined to have been reached based on one or more of an I/O response time, a number of I/Os, a pattern of accesses, or a frequency of accesses.

### Claim 7 (depends on 1)

The method of claim 1, wherein a throughput of the third memory is less than a throughput of one or more of the first memory and the second memory.

### Claim 8 (depends on 1)

The method of claim 1, wherein a throughput of the third memory is at least as large as a throughput of one or more of the first memory and the second memory.

### Claim 9 (depends on 8)

The method of claim 8, wherein a response time of the third memory slower than a response time of one or more of the first memory and the second memory.

### Claim 10 (depends on 1)

The method of claim 1, metadata for each of the plurality of pages specifies one or more of (i) a timestamp that indicates a most recent time that data on the page was accessed, (ii) a first flag that indicates whether the page has been modified, (iii) a second flag that indicates whether a copy of the page is stored in the second memory, (iv) a counter that indicates a number of times the page has been accessed, or (v) a weighted value that indicates a frequency of access to the page with more weighting for more recent access.

### Claim 11

A computer system, comprising:
one or more hardware processors;
a first memory, a second memory that is slower than the first memory, and a third memory that is slower than the second memory; and
one or more computer-readable media having stored thereon computer-executable instruction that, when executed by the one or more hardware processors, cause the computer system to associate pages of a buffer pool with different memories, including the following:
determining a first page access frequency threshold and a second page access frequency threshold for classifying a plurality of pages of a buffer pool; and
associating the plurality of pages with the first, second, and third memories, including:
associating one or more first pages having corresponding page access frequencies greater than the first page access threshold with the first memory;
associating one or more second pages having corresponding page access frequencies less than the first page access threshold, but greater than the second page access threshold, with the second memory; and
associating one or more third pages having corresponding access frequencies less than the second page access threshold with the third memory

### Claim 12 (depends on 11)

The system of claim 11, wherein the first memory comprises volatile memory, and the second memory comprises solid-state storage.

### Claim 13 (depends on 12)

The system of claim 12, wherein the first memory and the second memory form the buffer pool.

### Claim 14 (depends on 11)

The system of claim 11, wherein when an input/output (I/O) threshold of the second memory is reached, a new I/O request is redirected to the third memory.

### Claim 15 (depends on 14)

The system of claim 14, wherein the I/O threshold of the second memory is determined to have been reached when accesses to the second memory approach a read/write bandwidth of the second memory, or when accesses to the second memory approach a pre-defined threshold.

### Claim 16 (depends on 14)

The system of claim 14, wherein the I/O threshold of the second memory is determined to have been reached based on one or more of an I/O response time, a number of I/Os, a pattern of accesses, or a frequency of accesses.

### Claim 17 (depends on 11)

The system of claim 11, wherein a throughput of the third memory is less than a throughput of one or more of the first memory and the second memory.

### Claim 18 (depends on 11)

The system of claim 11, wherein a throughput of the third memory is at least as large as a throughput of one or more of the first memory and the second memory.

### Claim 19 (depends on 18)

The system of claim 18, wherein a response time of the third memory slower than a response time of one or more of the first memory and the second memory.

### Claim 20

A computer program product comprising one or more hardware storage devices having stored thereon computer-executable instruction that, when executed by one or more processors of a computer system, cause the computer system to associate pages of a buffer pool with different memories, the method comprising:
determining a first page access frequency threshold and a second page access frequency threshold for classifying a plurality of pages of a buffer pool; and
associating the plurality of pages with a first memory, a second memory that is slower than the first memory, and a third memory that is slower than the second memory, including:
associating one or more first pages having corresponding page access frequencies greater than the first page access threshold with the first memory;
associating one or more second pages having corresponding page access frequencies less than the first page access threshold, but greater than the second page access threshold, with the second memory; and
associating one or more third pages having corresponding access frequencies less than the second page access threshold with the third memory.
