Conversión de una tabla de series temporales en una tabla HStore
Las tablas HStore de almacenamiento por columnas superan a las tablas de series temporales en términos de rendimiento de importación de datos, relación de compresión y rendimiento de consultas. Esta sección describe cómo convertir tablas de series temporales existentes en tablas HStore.
Para obtener más información sobre cómo usar las tablas HStore, consulte Uso de almacenes de datos híbridos y tablas HStore.
Una tabla de series temporales consta de tres columnas: TSTime, TSTag y TSField.
- TSTime representa la secuencia de tiempo, con particionamiento automático basado en esta secuencia.
- TSTag sirve como la columna de dimensión.
- TSField representa una columna de hechos donde coexisten los datos de dimensión y de hecho.
Por ejemplo, cree una tabla de series temporales CPU.
1 2 3 4 5 6 7 8 | CREATE TABLE CPU( scope_name text TSTag, server_ip text TSTag, group_path text TSTag, time timestamptz TSTime, idle numeric TSField, users numeric TSField) with (TTL='30 days', PERIOD = '1 hour', orientation=TIMESERIES); |
Para convertir una tabla de series temporales en una tabla HStore, cree la tabla HStore, establezca particiones de nivel 2 e implemente índices de mapa de bits para un rendimiento óptimo de la tabla HStore.
- Utilice la columna TSTime como clave de partición.
- Utilice la primera columna TSTag como columna de partición secundaria.
- Utilice todas las columnas TSTag como columnas de índice de mapa de bits.
Las sentencias de creación de tablas posteriores a la reconstrucción son las siguientes:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | CREATE TABLE CPU( scope_name text, server_ip text, group_path text, time timestamptz, idle numeric, users numeric) WITH(TTL='30 days', PERIOD = '1 hour', ORIENTATION=column, ENABLE_HSTORE_OPT=true, --Use the column-store hstore_opt type. SECONDARY_PART_COLUMN='scope_name', --Use the first TSTag column as the secondary partition column. BITMAP_COLUMNS='scope_name,server_ip,group_path' --Use all TSTag columns as bitmap index columns. ) PARTITION BY RANGE(time) --time is the TSTime column in TIMESERIES. ( PARTITION p1 VALUES LESS THAN('2023-02-13 12:00:00'), PARTITION p2 VALUES LESS THAN('2023-02-13 13:00:00') ... ); --Create one or more B-tree indexes on other TSTag columns based on query performance. |