Un In-Memory Column Index (IMCI) expone varios atributos extendidos que permiten ajustar el tamaño del grupo de filas, la compresión, el orden de clasificación, los índices de poda y el comportamiento de escritura. Establezca estos atributos en el comentario de la tabla cuando cree una tabla, con la sintaxis COLUMNAR=1 <optName>=<optValue>.
Atributos extendidos
pack_shift
Controla el tamaño del grupo de filas de los datos del IMCI, lo cual afecta directamente la cantidad de datos que residen en memoria al mismo tiempo. Ajústelo cuando trabaje con una gran cantidad de tablas o con tablas particionadas.
Valores válidos: número entero del 6 al 18
Default: el valor del parámetro
loose_imci_default_pack_shift
Para consultar o modificar loose_imci_default_pack_shift, consulte IMCI-related parameters. Para configurarlo en la consola de PolarDB, consulte Specify cluster and node parameters.
codec_opt
Establece el algoritmo de compresión para los datos del IMCI. Cada algoritmo se adapta a distintas características de los datos; por ejemplo, los datos de series temporales, las columnas de baja cardinalidad y las cargas de trabajo de propósito general aprovechan mejor opciones diferentes. Para consultar la lista completa de algoritmos compatibles y conocer cómo elegir uno según sus datos, consulte Set a compression algorithm.
order_key
Establece una clave de ordenamiento para el IMCI. Ordenar los datos por las columnas que se filtran con mayor frecuencia permite que el motor omita grupos de filas irrelevantes durante los escaneos, lo cual mejora significativamente el rendimiento de las consultas. Para más detalles sobre la configuración, consulte Configure sort keys for IMCIs.
pruner / pruner_minmax / pruner_bloom
Controla si se construyen índices secundarios en columnas de cadena para omitir datos durante los escaneos. Hay dos tipos de índice disponibles:
|
Tipo de índice |
Más indicado para |
|
|
Consultas de rango ( |
|
|
Consultas de igualdad y listas IN en columnas de cadena con muchos valores distintos |
Utilice ambos en conjunto sobre columnas de cadena para abarcar distintos patrones de consulta.
En PolarDB for MySQL 8.0.1.1.35 o versiones posteriores, los índices minmax y los filtros Bloom se crean de forma predeterminada en las columnas de cadena.
Para conocer todos los detalles de configuración, consulte IMCI optimization for statistic queries.
prefix_len
Establece la longitud del prefijo, en bytes, para los podadores minmax en columnas de cadena. Un prefijo más corto reduce el tamaño del índice, pero puede disminuir la eficacia de la poda en cadenas largas.
Valores válidos: número entero del 1 al 255
Valor predeterminado: 20
Para obtener información sobre cómo crear índices minmax al crear una tabla, consulte la sección Create minmax indexes when you create a table en Optimización de IMCI para consultas estadísticas.
write_policy
Controla cómo se escriben los datos del IMCI en los archivos de almacenamiento. Esta opción afecta tanto el uso de espacio en disco como el rendimiento de E/S de escritura.
|
Valor |
Nombre |
Eficiencia de espacio |
Cuándo usarlo |
|
|
ForCapacity |
Máxima: máximo 1 fragmento de 4 KB por escritura. Se prioriza el espacio de almacenamiento y los datos se dividen en varios archivos para minimizar la fragmentación. |
Cuando el almacenamiento es limitado y se debe minimizar la fragmentación. |
|
|
ForPerformance |
Mínima: máxima fragmentación y desperdicio de espacio. Cada escritura va a un archivo llamado ExtentSize para lograr el mejor rendimiento de E/S. |
Cuando el rendimiento de E/S es la prioridad principal y el espacio de almacenamiento no representa una limitante. |
|
|
Skip4K |
Alta: máximo 1 fragmento de 16 KB por escritura. Se basa en Page Free Space (PFS); cuando los datos escritos superan los 4 KB, se ignora el extent de 4 KB. |
Cargas de trabajo equilibradas donde la alineación de 16 KB cumple con los requisitos de rendimiento. |
|
|
Tradeoff |
Moderada: tiene mayor prioridad que Skip4K. Se comporta como ForPerformance en escrituras menores a 1 MB y divide los datos entre archivos a partir de 1 MB. |
Tamaños de escritura mixtos donde los lotes grandes deben ser eficientes en espacio. |
Default: el valor del parámetro
loose_imci_default_write_policy, que acepta los mismos valores (del 0 al 3)
Para consultar o modificar loose_imci_default_write_policy en la consola de PolarDB, consulte Specify cluster and node parameters.
Configurar atributos extendidos
Especifique los atributos extendidos en la cláusula COMMENT cuando cree una tabla. Use el formato COLUMNAR=1 <optName>=<optValue>, donde varios atributos se separan con espacios.
Sintaxis
CREATE TABLE lineitem COMMENT "COLUMNAR=1 <optName>=<optValue>";
|
Parámetro |
Descripción |
|
|
Nombre del atributo extendido. Por ejemplo, |
|
|
Valor del atributo extendido. |
Ejemplo
A continuación se muestra un ejemplo que crea la tabla lineitem como una tabla columnstore, con pack_shift establecido en 10:
CREATE TABLE lineitem (
l_orderkey INTEGER NOT NULL,
l_partkey INTEGER NOT NULL,
l_suppkey INTEGER NOT NULL,
l_linenumber INTEGER NOT NULL,
l_quantity DECIMAL(15,2) NOT NULL,
l_extendedprice DECIMAL(15,2) NOT NULL,
l_discount DECIMAL(15,2) NOT NULL,
l_tax DECIMAL(15,2) NOT NULL,
l_returnflag CHAR(1) NOT NULL,
l_linestatus CHAR(1) NOT NULL,
l_shipdate DATE NOT NULL,
l_commitdate DATE NOT NULL,
l_receiptdate DATE NOT NULL,
l_shipinstruct CHAR(25) NOT NULL,
l_shipmode CHAR(10) NOT NULL,
l_comment VARCHAR(44) NOT NULL
) COMMENT "COLUMNAR=1 pack_shift=10";
Para establecer varios atributos, agregue cada par <optName>=<optValue> separado por un espacio dentro de la misma cadena de comentario.