IP Library Granted Patent US 9,378,232
Granted Patent B2
US 9,378,232 · App. 14/337,164 · Granted Jun 28, 2016

Framework for numa affinitized parallel query on in-memory objects within the RDBMS

Inventors: Niloy Mukherjee (San Jose, CA); Amit Ganesh (San Jose, CA); Vineet Marwah (San Ramon, CA)
Assignee: Oracle International Corporation
G06F17/30315G06F3/0604G06F3/064G06F3/065G06F3/0689G06F12/1018G06F15/78G06F17/30312G06F17/30377G06F17/30477G06F17/30595G06F2003/0697G06F2212/2542
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,378,232
App. No.
14/337,164
Granted
Jun 28, 2016
Kind
B2
Abstract

Techniques are provided for performing parallel processing on in-memory objects within a database system. In one embodiment, a plurality of in-memory chunks are maintained on a plurality of non-uniform memory access (NUMA) nodes. In response to receiving a query, a set of clusters is determined for the plurality of in-memory chunks. Each respective cluster in the set of clusters corresponds to a particular NUMA node of the plurality of NUMA nodes and includes a set of one or more in-memory chunks from the plurality of in-memory chunks. For each respective cluster in the set of clusters, a query coordinator assigns, to the respective cluster, a set of one or more processes associated with the particular NUMA node that corresponds to the respective cluster.

Claims (52)

1. A method comprising:

for each non-uniform memory access (NUMA) node of a plurality of NUMA nodes, storing, in volatile memory associated with the NUMA node, one or more in-memory chunks of an in-memory object;

wherein the plurality of NUMA nodes includes a particular NUMA node;

in response to receiving a query, performing the steps of:

determining a particular set of NUMA nodes, of the plurality of NUMA nodes, that store in-memory chunks, of the in-memory object, that contain data required to process the query;

wherein the particular set of NUMA nodes includes the particular NUMA node;

for each respective NUMA node in the particular set of NUMA nodes, assigning a set of one or more processes associated with the respective NUMA node to operate on a distinct cluster of in-memory chunks, of the in-memory object, that are stored in the volatile memory of the respective NUMA node and contain data required to process the query; and

wherein the step of assigning includes assigning a particular set of one or more processes associated with the particular NUMA node to operate on a particular cluster of in-memory chunks, of the in-memory object, that: are stored in the volatile memory of the particular NUMA node and contain data required to process the query.

2. The method of claim 1 , further comprising:

maintaining mapping data that associates each in-memory chunk, of a plurality of in-memory chunks of the in-memory object, with a corresponding NUMA node from the plurality of NUMA nodes.

3. The method of claim 2 ,

wherein determining the particular set of NUMA nodes comprises determining, from the mapping data, which in-memory chunks from the plurality of in-memory chunks belong to the particular cluster of in-memory chunks.

4. The method of claim 2 ,

wherein the mapping data further associates each in-memory chunk of the plurality of in-memory chunks with an on-disk page range;

wherein in response to receiving the query, the method further comprises:

determining, from the mapping data for a particular on-disk page range, whether there is a corresponding in-memory chunk;

in response to determining that there is a corresponding in-memory chunk, determining, from the mapping data, a corresponding NUMA node location for the corresponding in-memory chunk.

5. The method of claim 1 , further comprising:

maintaining a set of stripes on each respective NUMA node of the plurality of NUMA nodes;

wherein each stripe in the set of stripes includes a plurality of in-memory extents;

allocating space for the in-memory chunks of the in-memory object from the set of stripes maintained on each respective NUMA node of the plurality of NUMA nodes.

6. The method of claim 1 , wherein in response to assigning the particular set of one or more processes associated with the particular NUMA node to operate on the particular cluster of in-memory chunks, the particular set of one or more processes operate on the particular cluster of in-memory chunks but do not operate on clusters of in-memory chunks that are stored on other NUMA nodes.

7. The method of claim 1 , wherein the particular cluster of in-memory chunks are maintained on a local memory within the particular NUMA node.

8. The method of claim 1 , wherein a NUMA node location is determined for each respective in-memory chunk of the one or more in-memory chunks based, at least in part, on applying a hash function to an on-disk range corresponding to the respective in-memory chunk.

9. The method of claim 1 , wherein the particular set of one or more processes are executed by a particular set of one or more processors that belong to the particular NUMA node.

10. The method of claim 1 , wherein each process in the particular set of one or more processes performs a particular query operation on at least one in-memory chunk in the particular cluster of in-memory chunks.

11. One or more non-transitory storage media storing instructions which, when executed by one or more processors, cause performance of:

for each non-uniform memory access (NUMA) node of a plurality of NUMA nodes, storing, in volatile memory associated with the NUMA node, one or more in-memory chunks of an in-memory object;

wherein the plurality of NUMA nodes includes a particular NUMA node;

in response to receiving a query, performing the steps of:

determining a particular set of NUMA nodes, of the plurality of NUMA nodes, that store in-memory chunks, of the in-memory object, that contain data required to process the query;

wherein the particular set of NUMA nodes includes the particular NUMA node;

for each respective NUMA node in the particular set of NUMA nodes, assigning a set of one or more processes associated with the respective NUMA node to operate on a distinct cluster of in-memory chunks, of the in-memory object, that are stored in the volatile memory of the respective NUMA node and contain data required to process the query; and

wherein the step of assigning includes assigning a particular set of one or more processes associated with the particular NUMA node to operate on a particular cluster of in-memory chunks, of the in-memory object, that: are stored in the volatile memory of the particular NUMA node and contain data required to process the query.

12. The one or more non-transitory storage media of claim 11 , further storing instructions that cause performance of:

maintaining mapping data that associates each in-memory chunk, of a plurality of in-memory chunks of the in-memory object, with a corresponding NUMA node from the plurality of NUMA nodes.

13. The one or more non-transitory storage media of claim 12 ,

wherein determining the particular set of NUMA nodes comprises determining, from the mapping data, which in-memory chunks from the plurality of in-memory chunks belong to the particular cluster of in-memory chunks.

14. The one or more non-transitory storage media of claim 12 ,

wherein the mapping data further associates each in-memory chunk of the plurality of in-memory chunks with an on-disk page range;

wherein in response to receiving the query, the instructions further cause performance of:

determining, from the mapping data for a particular on-disk page range, whether there is a corresponding in-memory chunk;

in response to determining that there is a corresponding in-memory chunk, determining, from the mapping data, a corresponding NUMA node location for the corresponding in-memory chunk.

15. The one or more non-transitory storage media of claim 11 , further storing instructions that cause performance of:

maintaining a set of stripes on each respective NUMA node of the plurality of NUMA nodes;

wherein each stripe in the set of stripes includes a plurality of in-memory extents;

allocating space for the in-memory chunks of the in-memory object from the set of stripes maintained on each respective NUMA node of the plurality of NUMA nodes.

16. The one or more non-transitory storage media of claim 11 , wherein in response to assigning the particular set of one or more processes associated with the particular NUMA node to operate on the particular cluster of in-memory chunks, the particular set of one or more processes operate on the particular cluster of in-memory chunks but do not operate on clusters of in-memory chunks that are stored on other NUMA nodes.

17. The one or more non-transitory storage media of claim 11 , wherein the particular cluster of in-memory chunks are maintained on a local memory within the particular NUMA node.

18. The one or more non-transitory storage media of claim 11 , wherein a NUMA node location is determined for each respective in-memory chunk of the one or more in-memory chunks based, at least in part, on applying a hash function to an on-disk range corresponding to the respective in-memory chunk.

19. The one or more non-transitory storage media of claim 11 , wherein the particular set of one or more processes are executed by a particular set of one or more processors that belong to the particular NUMA node.

20. The one or more non-transitory storage media of claim 11 , wherein each process in the particular set of one or more processes performs a particular query operation on at least one in-memory chunk in the particular cluster of in-memory chunks.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 16, 2014
From: MUKHERJEE, NILOY; GANESH, AMIT; MARWAH, VINEET
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 034514/0726 →
Continuity (2)
Provisional Application 61880852 · Sep 21, 2013
Related Publication 20150089125A1 · Mar 26, 2015