Abstract:
To prioritize repopulation of in-memory compression units (IMCU), a database server compresses, into an IMCU, a plurality of data units from a database table. In response to changes to any of the plurality of data units within the database table, the database server performs the steps of: (a) invalidating corresponding data units in the IMCU; (b) incrementing an invalidity counter of the IMCU that reflects how many data units within the IMCU have been invalidated; (c) receiving a data request that targets one or more of the plurality of data units of the database table; (d) in response to receiving the data request, incrementing an access counter of the IMCU; and (e) determining a priority for repopulating the IMCU based, at least in part, on the invalidity counter and the access counter.
Abstract:
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.
Abstract:
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.
Abstract:
Techniques are provided for granular load and refresh of columnar data. In an embodiment, a particular data object that contains particular data formatted different from column-major format is maintained, the particular data including first data and second data. First and second data objects contain the first and second data, respectively, organized in the column-major format. In response to changes being committed to the first data in the particular data object, invalidating one or more rows of the first data object. In response to a number of invalidated rows of the first data object exceeding a threshold, automatically performing a refresh operation on the first data object independent of any refresh operation on the second data object.
Abstract:
Techniques for non-disruptive versioning of in-memory units in a database are provided. A database server generates and maintains a first IMU that reflects changes made to a mirrored-data-set up to a first snapshot time, and a second IMU that reflects changes made to the mirrored-data-set up to a second snapshot time. During a first period, the database server responds to updates to first data items in the mirrored data by storing first staleness metadata that indicates that the copies of the first data items in the first IMU are stale. During a second period, the database server responds to updates to second data items in the mirrored data by storing second staleness metadata that indicates that the copies of the second data items in the second IMU are stale. The database server responds to a request by accessing the first IMU or the second IMU.
Abstract:
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.
Abstract:
Techniques are described herein for distributing distinct portions of a database object across volatile memories of selected nodes of a plurality of nodes in a clustered database system. The techniques involve storing a unit-to-service mapping that associates a unit (a database object or portion thereof) to one or more database services. The one or more database services are mapped to one or more nodes. The nodes to which a service is mapped may include nodes in disjoint database systems, so long as those database systems have access to a replica of the unit. The database object is treated as in-memory enabled by nodes that are associated with the service, and are treated as not in-memory enabled by nodes that are not associated with the service.
Abstract:
Techniques are described herein for distributing distinct portions of a database object across the volatile memories of a plurality of nodes in a clustered database system. The techniques involve establishing a single database server instance located on a node in a multi-node cluster as a load-operation master for a particular data set. The load-operation master determines how the data set may be separated into chunks using a hash function. The load-operation master then broadcasts a small payload of consistency information to other database servers, so each database server may independently execute the hash function and independently load their respectively assigned chunks of data.
Abstract:
Techniques are described herein for maintaining a directory map that contains a data chunk-to-server mapping. Directory maps, maintained within the volatile memory of each server node in the set of multiple server nodes, include a node hierarchy represented as a tree structure in which each node represents a range of an on-disk address range. Each child node, within the node hierarchy, represents a sub-range of the on-disk address range represented by the parent node of the child node. Once a data chunk is loaded into volatile memory of a particular server, mapping information relating the particular on-disk starting address of the data chunk loaded into volatile memory and the pointer address to the location in volatile memory is loaded into one or more node in the directory map. Loading mapping information into the directory map includes first, locating a target child node, in the node hierarchy that has a range into which the particular on-disk starting address falls, where the target node is the Nth child node of a particular parent node. Then inserting a mapping entry into the target child node. Then determining a set of parent nodes, other than the particular parent node of the target child node, that has ranges that overlap with the particular on-disk address range. Then inserting into each Nth child node of each parent node in the set of parents nodes, an entry corresponding to mapping information that includes an indication of the on-disk starting address and the particular in-memory address.
Abstract:
Techniques are provided for granular load and refresh of columnar data. In an embodiment, a particular data object that contains particular data formatted different from column-major format is maintained, the particular data including first data and second data. First and second data objects contain the first and second data, respectively, organized in the column-major format. In response to changes being committed to the first data in the particular data object, invalidating one or more rows of the first data object. In response to a number of invalidated rows of the first data object exceeding a threshold, automatically performing a refresh operation on the first data object independent of any refresh operation on the second data object.