Timescale Cloud: Performance, Scale, Enterprise

Self-hosted products

MST

Enable the columnstore for a hypertable.

After you have enabled the columnstore, either:

Since TimescaleDB v2.18.0

To enable the columnstore:

  • Configure a hypertable that ingests device data to use the columnstore:

    In this example, the metrics hypertable is often queried about a specific device or set of devices. Segment the hypertable by device_id to improve query performance.

    ALTER TABLE metrics SET(
    timescaledb.enable_columnstore,
    timescaledb.orderby = 'time DESC',
    timescaledb.segmentby = 'device_id');
  • Specify the chunk interval without changing other columnstore settings:

    • Set the time interval when chunks are added to the columnstore:

      ALTER TABLE metrics SET (timescaledb.compress_chunk_time_interval = '24 hours');
    • To disable the option you set previously, set the interval to 0:

      ALTER TABLE metrics SET (timescaledb.compress_chunk_time_interval = '0');

The syntax is:

ALTER TABLE <table_name> SET (timescaledb.enable_columnstore,
timescaledb.orderby = '<column_name> [ASC | DESC] [ NULLS { FIRST | LAST } ] [, ...]',
timescaledb.segmentby = '<column_name> [, ...]',
timescaledb.compress_chunk_time_interval='interval',
SET ACCESS METHOD { new_access_method | DEFAULT },
ALTER <column name> SET NOT NULL,
ADD CONSTRAINT <constraint_name> UNIQUE (<column name>, ... )
);
NameTypeDefaultRequiredDescription
table_nameTEXT-The hypertable to enable columstore for.
timescaledb.enable_columnstoreBOOLEANtrueEnable columnstore.
timescaledb.orderbyTEXTDescending order on the time column in table_name.The order in which items are used in the columnstore. Specified in the same way as an ORDER BY clause in a SELECT query.
timescaledb.segmentbyTEXTNo segementation by column.Set the list of columns used to segment data in the columnstore for table. An identifier representing the source of the data such as device_id or tags_id is usually a good candidate.
column_nameTEXT-The name of the column to orderby or segmentby.
timescaledb.compress_chunk_time_intervalTEXT-EXPERIMENTAL: reduce the total number of chunks in the columnstore for table. If you set compress_chunk_time_interval, chunks added to the columnstore are merged with the previous adjacent chunk within chunk_time_interval whenever possible. These chunks are irreversibly merged. If you call convert_to_rowstore, merged chunks are not split up. You can call compress_chunk_time_interval independently of other compression settings; timescaledb.enable_columnstore is not required.
intervalTEXT-Set to a multiple of the chunk_time_interval for table.
ALTERTEXTSet a specific column in the columnstore to be NOT NULL.
ADD CONSTRAINTTEXTAdd UNIQUE constraints to data in the columnstore.

Keywords

Found an issue on this page?Report an issue or Edit this page in GitHub.