Multi-version concurrency control on in-memory snapshot store of oracle in-memory database
US-2015088822-A1 · Mar 26, 2015 · US
US9483517B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-9483517-B2 |
| Application number | US-201514819016-A |
| Country | US |
| Kind code | B2 |
| Filing date | Aug 5, 2015 |
| Priority date | Sep 21, 2013 |
| Publication date | Nov 1, 2016 |
| Grant date | Nov 1, 2016 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
Techniques are provided for maintaining data persistently in one format, but making that data available to a database server in more than one format. For example, one of the formats in which the data is made available for query processing is based on the on-disk format, while another of the formats in which the data is made available for query processing is independent of the on-disk format. Data that is in the format that is independent of the disk format may be maintained exclusively in volatile memory to reduce the overhead associated with keeping the data in sync with the on-disk format copies of the data.
Opening claim text (preview).
What is claimed is: 1. A method comprising: maintaining, on persistent storage, a database that is accessible to a database server; wherein the database includes a first set of data; maintaining a second set of data in volatile memory that is accessible to the database server; wherein each data item in the second set of data is a copy of a corresponding data item in the first set of data; wherein both the first set of data and the second set of data have copies of a particular data item; maintaining a bitmap that indicates which data items, in the second set of data, are not currently valid; wherein the maintaining the bitmap includes responding to an update of the particular data item by: causing a copy of the particular data item, in the first set of data on the persistent storage, to be updated; without updating a copy of the particular data item in the second set of data, setting a particular bit, in the bitmap, that corresponds to the particular data item, to indicate that the copy of the particular data item in the second set of data in the volatile memory is not valid; after setting the particular bit in the bitmap, receiving, by the database server, a request to execute a database command that requires the particular data item; during execution of the database command: determining, based, at least in part, on the set particular bit that corresponds to the particular data item, whether the copy of the particular data item in the second set of data in the volatile memory is valid; when the copy of the particular data item in the second set of data in the volatile memory is valid, retrieving the copy of the particular data item from the second set of data in the volatile memory; and when the copy of the particular data item in the second set of data in the volatile memory is not valid, retrieving a value of the particular data item from a source other than the second set of data. 2. The method of claim 1 , wherein the source other than the second set of data is an entry, in an in-memory journal, that has an updated copy of the particular data item. 3. The method of claim 2 , further comprising responding to the update of the particular data item by: storing the entry in the in-memory journal; wherein the entry in the in-memory journal: indicates that the particular data item has been updated; and includes an updated value of the particular data item. 4. The method of claim 1 , wherein: the first set of data is in a persistent format; the second set of data is in a mirror format; the mirror format is different from the persistent format; and the second set of data is generated by converting the first set of data to the mirror format. 5. The method of claim 1 , further comprising responding to the update to the particular data item by generating a record that indicates the particular bit was changed at a particular time. 6. A method comprising: maintaining, on persistent storage, a database that is accessible to a database server; wherein the database includes a first set of data; maintaining a second set of data in volatile memory that is accessible to the database server; wherein each data item in the second set of data is a copy of a corresponding data item in the first set of data; wherein both the first set of data and the second set of data have copies of a particular data item; maintaining invalidity data that indicates which data items, in the second set of data, are not currently valid; wherein the maintaining the invalidity data includes responding to an update of the particular data item by: updating a cached copy of the particular data item obtained from the first set of data; without updating a copy of the particular data item in the second set of data, updating the invalidity data to indicate that the copy of the particular data item in the second set of data is not valid; wherein the update to the particular data item was made by a certain transaction that was committed at a particular time; and wherein the method further comprises: after the update of the particular data item, determining whether a particular query associated with a particular transaction is allowed to use the copy of the particular data item from the second set of data by: determining a snapshot time for the particular transaction; when the snapshot time is before the particular time, allowing the particular transaction to use the copy of the particular data item from the second set of data; and when the snapshot time is after the particular time: not allowing the particular transaction to use the copy of the particular data item from the second set of data, and obtaining a copy of the particular data item, for the particular query, from a source other than the second set of data. 7. The method of claim 6 , wherein the source other than the second set of data is the first set of data. 8. The method of claim 6 , wherein the source other than the second set of data is an entry, in an in-memory journal, that has an updated copy of the particular data item. 9. The method of claim 6 , further comprising: generating a delete vector for the particular query based on the invalidity data and a set of records that indicates when particular portions of the invalidity data were changed; wherein the delete vector generated for the particular query indicates which data items, in the second set of data, were invalid as of the snapshot time of the particular transaction; and using the delete vector to determine which data items the particular query is allowed to access in the second set of data. 10. The method of claim 9 , wherein: the invalidity data comprises a bitmap: the updating the invalidity data to indicate that the copy of the particular data item in the second set of data is not valid comprises: setting a particular bit, in the bitmap, that corresponds to the particular data item, to indicate that the copy of the particular data item in the second set of data is not valid: generating the delete vector comprises: making a copy of the bitmap; and resetting, within the copy of the bitmap, all bits that were set after the snapshot time of the particular transaction. 11. A method comprising: maintaining, on persistent storage, a database that is accessible to a database server; wherein the database includes a first set of data; maintaining a second set of data in volatile memory that is accessible to the database server; wherein each data item in the second set of data is a copy of a corresponding data item in the first set of data; wherein both the first set of data and the second set of data have copies of a particular data item; maintaining a first bitmap that indicates, at and after a second point in time, which data items in the second set of data were updated after a first point in time and before the second point in time; wherein the second set of data was current as of the first point in time; wherein the maintaining the first bitmap includes responding to an update of the particular data item by: updating a copy of the particular data item in the first set of data, and without updating a copy of the particular data item in the second set of data, setting a particular bit, in the first bitmap, that corresponds to the particular data item, to indicate that the copy of the particular data item in the second set of data is not valid; at the second point in time, producing an updated second set of data by merging into the second set of data those updates that were made to data items in the second set of data between the first point in time and the second point in time; and maintaining a second bitmap that indicates which data i
Physics · mapped topic
Physics · mapped topic
Physics · mapped topic
Physics · mapped topic
Physics · mapped topic
Related publications grouped by family.
Answers are generated from the same data shown on this page.