Techniques for more efficient usage of memory-to-CPU bandwidth
First Claim
1. A method comprising:
- maintaining, within volatile memory, a plurality of column vectors for a relational table of a relational database;
wherein the plurality of column vectors includes a particular column vector;
wherein the particular column vector contiguously stores values from a particular column of the relation table;
wherein the values within the particular column vector are stored in the volatile memory in a particular format;
wherein the particular format is one of (a) a compressed format, or (b) a variable-width format;
during execution of a database command, transferring, in the particular format, a contiguous portion of the particular column vector from the volatile memory to a CPU;
wherein the contiguous portion includes a first set of values that corresponds to a plurality of values of the particular column of the relational table; and
based on the first set of values, for each value of the plurality of values, the CPU generating results of performing at least one operation, required by the database command, on said each value;
wherein the step of generating results is performed after transferring the contiguous portion to the CPU, and before any further communication, between the volatile memory and the CPU, of data corresponding to the plurality of values.
1 Assignment
0 Petitions
Accused Products
Abstract
Techniques are provided for more efficiently using the bandwidth of the I/O path between a CPU and volatile memory during the performance of database operation. Relational data from a relational table is stored in volatile memory as column vectors, where each column vector contains values for a particular column of the table. A binary-comparable format may be used to represent each value within a column vector, regardless of the data type associated with the column. The column vectors may be compressed and/or encoded while in volatile memory, and decompressed/decoded on-the-fly within the CPU. Alternatively, the CPU may be designed to perform operations directly on the compressed and/or encoded column vector data. In addition, techniques are described that enable the CPU to perform vector processing operations on the column vector values.
-
Citations
30 Claims
-
1. A method comprising:
-
maintaining, within volatile memory, a plurality of column vectors for a relational table of a relational database; wherein the plurality of column vectors includes a particular column vector; wherein the particular column vector contiguously stores values from a particular column of the relation table; wherein the values within the particular column vector are stored in the volatile memory in a particular format; wherein the particular format is one of (a) a compressed format, or (b) a variable-width format; during execution of a database command, transferring, in the particular format, a contiguous portion of the particular column vector from the volatile memory to a CPU; wherein the contiguous portion includes a first set of values that corresponds to a plurality of values of the particular column of the relational table; and based on the first set of values, for each value of the plurality of values, the CPU generating results of performing at least one operation, required by the database command, on said each value; wherein the step of generating results is performed after transferring the contiguous portion to the CPU, and before any further communication, between the volatile memory and the CPU, of data corresponding to the plurality of values. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
-
-
21. A non-transitory computer-readable storage medium storing instructions which, when executed by one or more processors, causes performance of a method comprising:
-
maintaining, within volatile memory, a plurality of column vectors for a relational table of a relational database; wherein the plurality of column vectors includes a particular column vector; wherein the particular column vector contiguously stores values from a particular column of the relation table; wherein the values within the particular column vector are stored in the volatile memory in a particular format; wherein the particular format is one of (a) a compressed format, or (b) a variable-width format; during execution of a database command, transferring, in the particular format, a contiguous portion of the particular column vector from the volatile memory to a CPU; wherein the contiguous portion includes a first set of values that corresponds to a plurality of values of the particular column of the relational table; and based on the first set of values, for each value of the plurality of values, the CPU generating results of performing at least one operation, required by the database command, on said each value; wherein the step of generating results is performed after transferring the contiguous portion to the CPU, and before any further communication, between the volatile memory and the CPU, of data corresponding to the plurality of values. - View Dependent Claims (22, 23, 24, 25, 26, 27, 28, 29, 30)
-
Specification