Types of tables
Db2® databases store data in tables. In addition to tables used to store persistent data, there are also tables that are used for presenting results, summary tables and temporary tables; multidimensional clustering tables offer specific advantages in a warehouse environment.
- Base tables
- These types of tables hold persistent data. There are different
kinds of base tables, including
- Regular tables
- Regular tables with indexes are the "general purpose" table choice.
- Multidimensional clustering (MDC) tables
- These types of tables are implemented as tables that are physically clustered on more than one key, or dimension, at the same time. MDC tables are used in data warehousing and large database environments. Clustering indexes on regular tables support single-dimensional clustering of data. MDC tables provide the benefits of data clustering across more than one dimension. MDC tables provide guaranteed clustering within the composite dimensions. By contrast, although you can have a clustered index with regular tables, clustering in this case is attempted by the database manager, but not guaranteed and it typically degrades over time. MDC tables can coexist with partitioned tables and can themselves be partitioned tables.
- Insert time clustering (ITC) tables
- These types of tables are conceptually, and physically similar to MDC tables, but rather than being clustered by one or more user specified dimensions, rows are clustered by the time they are inserted into the table. ITC tables can be partitioned tables.
- Range-clustered tables (RCT)
- These types of tables are implemented as sequential clusters of data that provide fast, direct access. Each record in the table has a predetermined record ID (RID) which is an internal identifier used to locate a record in a table. RCT tables are used where the data is tightly clustered across one or more columns in the table. The largest and smallest values in the columns define the range of possible values. You use these columns to access records in the table; this is the most optimal method of using the predetermined record identifier (RID) aspect of RCT tables.
- Partitioned tables
- These types of tables use a data organization scheme in which table data is divided across multiple storage objects, called data partitions or ranges, according to values in one or more table partitioning key columns of the table. Data partitions can be added to, attached to, and detached from a partitioned table, and you can store multiple data partition ranges from a table in one table space. Partitioned tables can contain large amounts of data and simplify the rolling in and rolling out of table data.
- Temporal tables
- These types of tables are used to associate time-based state information to your data. Data in tables that do not use temporal support represents the present, while data in temporal tables is valid for a period defined by the database system, customer applications, or both. For example, a database can store the history of a table (deleted rows or the original values of rows that have been updated) so you can query the past state of your data. You can also assign a date range to a row of data to indicate when it is deemed to be valid by your application or business rules.
- Temporary tables
- These types of tables are used as temporary work tables for various
database operations. Declared temporary tables (DGTTs)
do not appear in the system catalog, which makes them not persistent
for use by, and not able to be shared with other applications. When
the application using this table terminates or disconnects from the
database, any data in the table is deleted and the table is dropped.
By contrast, created temporary tables (CGTTs) do appear
in the system catalog and are not required to be defined in every
session where they are used. As a result, they are persistent and
able to be shared with other applications across different connections. Neither type of temporary table supports
- User-defined reference or user-defined structured type columns
- LONG VARCHAR columns
- Materialized query tables (MQTs)
- MQTs are defined by a query that also determines the data for
the MQT. Use materialized query tables to improve the performance
of queries. Based on database configuration settings for query optimization,
the database manager determines that a portion of a query can be resolved
using an MQT. MQTs are classified by how their data is maintained.
- Shadow tables
- A shadow table is a column-organized MQT copy of a row-organized table. It can contain all columns or a subset of columns of the source row-organized table. Shadow tables are maintained by replication.
You can create all of the preceding types of tables using the CREATE TABLE statement.
Depending on what your data is going to look like, you might find one table type offers specific capabilities that can optimize storage and query performance. For example, if you have data records that are loosely clustered (not monotonically increasing), consider using a regular table and indexes. If you have data records that have duplicate (but not unique) values in the key, do not use a range-clustered table. Also, if you cannot afford to preallocate a fixed amount of storage on disk for the range-clustered tables you might want, do not use this type of table. If you have data that has the potential for being clustered along multiple dimensions, such as a table tracking retail sales by geographic region, division and supplier, a multidimensional clustering table might suit your purposes.
In addition to the various table types described previously, you also have options for such characteristics as partitioning, which can improve performance for tasks such as rolling in table data. Partitioned tables can also hold much more information than a regular, nonpartitioned table. You can also use capabilities such as compression, which can help you significantly reduce your data storage costs.