Techniques for maintaining column vectors of relational data within volatile memory
First Claim
1. A method comprising:
- maintaining, within volatile memory of a computing device that is executing a database server, a plurality of column vectors for a relational table of a relational database;
wherein each column vector, of the plurality of column vectors, corresponds to a distinct column of the relational table;
wherein each column vector, of the plurality of column vectors, has a contiguous array of values;
wherein the plurality of column vectors includes a particular column vector that has a contiguous array of whole uncompressed variable-length values of a particular column of the relational table;
in response to a database command received by the database server, the database server reading multiple values into a central processing unit (CPU) during a single clock cycle from the contiguous array of whole uncompressed variable-length values of the particular column to determine a result set for the database command.
0 Assignments
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
20 Claims
-
1. A method comprising:
-
maintaining, within volatile memory of a computing device that is executing a database server, a plurality of column vectors for a relational table of a relational database; wherein each column vector, of the plurality of column vectors, corresponds to a distinct column of the relational table; wherein each column vector, of the plurality of column vectors, has a contiguous array of values; wherein the plurality of column vectors includes a particular column vector that has a contiguous array of whole uncompressed variable-length values of a particular column of the relational table; in response to a database command received by the database server, the database server reading multiple values into a central processing unit (CPU) during a single clock cycle from the contiguous array of whole uncompressed variable-length values of the particular column to determine a result set for the database command. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. One or more non-transitory computer-readable media comprising stored instructions wherein:
-
said stored instructions comprise first instructions that, when executed by one or more processors, cause maintaining, within volatile memory of a computing device that is executing a database server, a plurality of column vectors for a relational table of a relational database; the plurality of column vectors includes a particular column vector that has a contiguous array of whole uncompressed variable-length values of a particular column of the relational table; said stored instructions comprise second instructions that, when executed by the one or more processors, cause during execution of a database command, transferring data from the particular column vector to a central processing unit (CPU) of said computing device without converting values from the particular column vector to a fixed length format; each column vector, of the plurality of column vectors, corresponds to a distinct column of the relational table; each column vector, of the plurality of column vectors, has a contiguous array of values; said stored instructions comprise third instructions that, when executed by the one or more processors, cause in response to a database command received by the database server, the database server reading multiple values into a central processing unit (CPU) during a single clock cycle from the contiguous array of whole uncompressed variable-length values of the particular column to determine a result set for the database command. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20)
-
Specification