Use Cases for Table Partitions and Storage Groups

Query Optimization

Table partitioning helps to improve SQL execution plans using the optimizer to process queries against table partitions, i.e. a technique called "partition pruning". For example, if a table is split horizontally into partitions pi by ranges on col1 such that data where col1 < 3 is stored in p1, data where col1 < 7 is stored in p2, and data where col1 < 10 is stored in p3. In this case, the query, "select * from t1 where col1 < 2" can be optimized to access only partition p1.

Aging and Archiving of Historical Data

Data aging is the process of logically grouping, and then physically moving, historical data within a database or between databases to improve the response time of queries to recent data or conserve disk space on lower-capacity, higher-performance storage media. Table partitioning and storage groups improve support for data aging within a NuoDB database by enabling logical grouping by partitioning key, and the storage of historical data in storage groups served by higher-capacity media.

I/O Multiplexing

Partitioning data into multiple storage groups enables the storage of partitions on different SMs. This can effectively increase the I/O bandwidth available when the database is I/O bound and database reads or writes are striped across multiple storage groups. For example, a write-intensive application (such as data ingest) that loads data into multiple partitions may benefit from storing those partitions in storage groups served by different SMs to take advantage of multiplexed I/O bandwidth while committing data load transactions.

Increased Storage Manager Resource Capacity

The aggregate storage manager storage and memory capacity can be effectively increased if storage managers serve disjoint parts of the database.