Patent ID: 9547659
Date: 2017-01-17
CPC Classifications: G06F

Claim:
1. A computer-implemented method for updating a database, the method comprising: receiving, by a computing device, a first request to update a first set of values, the first set of values stored at a first location within a first data page of a database, wherein the first location is read-only; in response to at least the receiving of the first request, inserting, by the computing device, a first set of records into a second data page, wherein the first set of records include the update of the first set of values, and wherein the second data page is an append-only data page, and wherein the first data page includes a first start time column and the second data page includes a second start time column, the first start time column specifying a commit time of a first transaction that originally wrote the first set of values to the first data page, the second start time column including a transaction id indicating when a second transaction associated with the first request began, and wherein the first data page includes a first tuplestate column and the second data page includes a second tuplestate column, the first tuplestate column and the second tuplestate column storing information about which column values have been updated; in response to the inserting, storing, by the computing device, a forward pointer in the first data page that points to the first set of records on the second data page; identifying, by the computing device, one or more committed values on the second data page, wherein the one or more committed values are values that are part of one or more transactions that are complete; in response to the identifying, merging, by the computing device, the one or more committed values from the second data page to a third data page; receiving, by the computing device, a second request to update a second set of values at the first location within the first data page at substantially a same time as the merging; in response to the receiving of the second request, inserting, by the computing device, a second set of records into the second data page, wherein the merging is not blocking the second request; and compressing, in response to the merging, the second data page by consolidating data values within a plurality of records of the second data page into a single record.