Efficient Block-Level Space Allocation for Multi-Version Concurrency Control Data

US2016147448A1 · US · A1

Patent metadata
FieldValue
Publication numberUS-2016147448-A1
Application numberUS-201414553680-A
CountryUS
Kind codeA1
Filing dateNov 25, 2014
Priority dateNov 25, 2014
Publication dateMay 26, 2016
Grant date

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

Lockless allocation of a block from a page is initiated by computing a needed block size from an original block header value. Thereafter, a currently used block size and a capacity of the page are determined. A new block size is then computed based on the currently used block size and the needed block size and a remaining capacity of the page. A new block header value is subsequently generated that includes the determined new block size and the determined remaining capacity of the page The original block header value is then replaced with the new block header value. Related apparatus, systems, techniques and articles are also described.

First claim

Opening claim text (preview).

What is claimed is: 1 . A method comprising: initiating lockless allocation of a block from a page by computing a needed block size from an original value in a page header; determining a currently used block size and a capacity of the page; computing a new block size based on the currently used block size and the needed block size and a remaining capacity of the page; generating a new value comprising the determined new block size and the determined remaining capacity of the page; and replacing the original value with the new value in the page header. 2 . The method of claim 1 , wherein the replacing uses a compare and swap operation. 3 . The method of claim 2 , wherein the determining, computing, and generating are iteratively implemented until the original value is replaced with the new value in the page header. 4 . The method of claim 1 further comprising: returning a pointer to the block after replacing the original value in the page header with a new value in the page header. 5 . The method of claim 4 , wherein the pointer points to a location in the page that is computed from the block size from the page header plus the currently used block size. 6 . The method of claim 4 , wherein the location is part of a block handle. 7 . The method of claim 1 , wherein the initiating, determining, computing, generating, and replacing are implemented by at least one hardware data processor. 8 . The method of claim 7 , wherein the at least one hardware data processor forms part of an in-memory database. 9 . A method comprising: initiating allocation of a block from a new page in a multi-version concurrency control (MVCC) page chain by obtaining a first current last page number in the MVCC page chain; acquiring a mutex lock that prevents allocation of pages in the page chain; obtaining a second current last page number in the MVCC page chain; attempting to allocate a block from a last page in the MVCC page chain if the first current last page number and the second page number differs; allocating a new MVCC page in the MVCC page chain if the attempt to allocate the block fails or if there is no change in the last page; allocating a new block with a specified block size from a newly allocated page using lockless block allocation logic that returns a pointer to the block; appending the allocated new page to the MVCC page chain; and releasing the mutex lock and returning a block handle holding the allocated new block. 10 . The method of claim 9 , wherein each of the operations are implemented by at least one hardware data processor. 11 . The method of claim 10 , wherein the at least one hardware data processor forms part of an in-memory database. 12 . A method comprising: initiating allocation of a block from a last page in a multi-version concurrency control (MVCC) page chain by attempting to return a block from a lockless free list, or, if no block is available, then allocating a block from the last page; loading a last page of the MVCC page chain; attempting to allocate the block using lockless block allocation from the last page in the MVCC page chain if the last page is valid; allocating the block from a new page if the attempt to allocate fails or there are no changes in the pages; and returning a block handle associated with allocated new block. 13 . The method of claim 1 , wherein the lockless free list is a free reserved stub list, a free stub list, or free MVCC block list. 14 . The method of claim 13 , wherein each of the operations are implemented by at least one hardware data processor. 15 . The method of claim 14 , wherein the at least one hardware data processor forms part of an in-memory database. 16 . The method of claim 13 , wherein the free list comprises destroyed MVCC blocks and is managed as a lock-less queue. 17 . The method of claim 13 further comprising: returning the block from an MVCC free block list for blocks with header and data sections. 18 . The method of claim 13 further comprising: returning the block from a free reserved stub list or free stub list for stub timestamp blocks; wherein the block comprises only a header section. 19 . The method of claim 13 further comprising: returning the block from a free stub block list or allocating the block from the pages using a lock-less block allocation algorithm; wherein the block comprises only a header section. 20 . The method of claim 13 further comprising: attempting to allocate a block from the MVCC pages of the MVCC page chain either from a last page or from a newly allocated page.

Assignees

Inventors

Classifications

  • Migration mechanisms · CPC title

  • Single storage device · CPC title

  • G06F3/0604Primary

    Improving or facilitating administration, e.g. storage management · CPC title

  • by allocating resources to storage systems · CPC title

  • using versioning · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US2016147448A1 cover?
Lockless allocation of a block from a page is initiated by computing a needed block size from an original block header value. Thereafter, a currently used block size and a capacity of the page are determined. A new block size is then computed based on the currently used block size and the needed block size and a remaining capacity of the page. A new block header value is subsequently generated …
Who is the assignee on this patent?
Schreter Ivan, Eluri Amarnadh Sai
What technology area does this patent fall under?
Primary CPC classification G06F3/0604. Mapped technology areas include Physics.
When was this patent published?
Publication date Thu May 26 2016 00:00:00 GMT+0000 (Coordinated Universal Time) (A1). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 1 related publication on this page (citations in our corpus or others sharing the same primary CPC).