Um In-Memory Column Index (IMCI) oferece vários atributos estendidos que permitem ajustar o tamanho do grupo de linhas, a compactação, a ordem de classificação, os índices de poda e o comportamento de escrita. Defina esses atributos no comentário da tabela durante a criação, usando a sintaxe COLUMNAR=1 <optName>=<optValue>.
Atributos estendidos
pack_shift
Controla o tamanho do grupo de linhas dos dados do IMCI e afeta diretamente a quantidade de dados residente na memória. Ajuste esse parâmetro ao trabalhar com muitas tabelas ou tabelas particionadas.
Valores válidos: Inteiro de 6 a 18
Default: Valor do parâmetro
loose_imci_default_pack_shift
Para visualizar ou alterar o parâmetro loose_imci_default_pack_shift, consulte Parâmetros relacionados ao IMCI. Para configurá-lo no console do PolarDB, consulte Especificar parâmetros de cluster e nó.
codec_opt
Define o algoritmo de compactação dos dados do IMCI. Cada algoritmo adequa-se a características específicas: dados de séries temporais, colunas de baixa cardinalidade e cargas de trabalho de uso geral beneficiam-se de escolhas diferentes. Para obter a lista completa de algoritmos compatíveis e orientações sobre como selecionar o mais adequado aos seus dados, consulte Definir um algoritmo de compactação.
order_key
Define uma chave de ordenação para o IMCI. Ordenar dados por colunas frequentemente filtradas permite que o mecanismo ignore grupos de linhas irrelevantes durante varreduras, o que melhora significativamente o desempenho das consultas. Para detalhes de configuração, consulte Configurar chaves de ordenação para IMCIs.
pruner / pruner_minmax / pruner_bloom
Controla a criação de índices secundários em colunas de string para ignorar dados durante varreduras. Há dois tipos de índice disponíveis:
|
Tipo de índice |
Mais indicado para |
|
|
Consultas de intervalo ( |
|
|
Consultas de igualdade e listas IN em colunas de string com muitos valores distintos |
Use ambos em conjunto nas colunas de string para abranger diferentes padrões de consulta.
No PolarDB for MySQL 8.0.1.1.35 ou posterior, índices minmax e filtros Bloom são criados por padrão em colunas de string.
Para obter detalhes completos de configuração, consulte Otimização de IMCI para consultas estatísticas.
prefix_len
Define o comprimento do prefixo, em bytes, para pruners minmax em colunas de string. Um prefixo menor reduz o tamanho do índice, mas pode diminuir a eficácia da poda em strings longas.
Valores válidos: Inteiro de 1 a 255
Padrão: 20
Para obter detalhes sobre a criação de índices minmax durante a criação de uma tabela, consulte a seção Criar índices minmax ao criar uma tabela em Otimização de IMCI para consultas estatísticas.
write_policy
Controla como os dados do IMCI são gravados nos arquivos de armazenamento. Essa configuração afeta tanto o uso de espaço em disco quanto o desempenho de E/S de escrita.
|
Valor |
Nome |
Eficiência de espaço |
Quando usar |
|
|
ForCapacity |
Mais alta — máx. de 1 fragmento de 4 KB por escrita; prioriza o espaço de armazenamento e divide os dados em vários arquivos para minimizar a fragmentação |
Armazenamento limitado e necessidade de minimizar fragmentação |
|
|
ForPerformance |
Mais baixa — máxima fragmentação e desperdício de espaço; cada escrita vai para um arquivo chamado ExtentSize para obter o melhor desempenho de E/S |
Throughput de E/S é a principal prioridade e o espaço de armazenamento não é limitado |
|
|
Skip4K |
Alta — máx. de 1 fragmento de 16 KB por escrita; baseado em Page Free Space (PFS); quando os dados gravados excedem 4 KB, a extensão de 4 KB é ignorada |
Cargas de trabalho equilibradas em que o alinhamento de 16 KB atende aos requisitos de desempenho |
|
|
Tradeoff |
Moderada — tem prioridade maior que Skip4K; comporta-se como ForPerformance para escritas abaixo de 1 MB; divide entre arquivos em 1 MB ou mais |
Tamanhos de escrita mistos em que lotes grandes devem ser eficientes em espaço |
Default: Valor do parâmetro
loose_imci_default_write_policy, que aceita os mesmos valores (0–3)
Para visualizar ou alterar o parâmetro loose_imci_default_write_policy no console do PolarDB, consulte Especificar parâmetros de cluster e nó.
Definir atributos estendidos
Especifique os atributos estendidos na cláusula COMMENT ao criar uma tabela. Use o formato COLUMNAR=1 <optName>=<optValue>, separando múltiplos atributos por espaços.
Sintaxe
CREATE TABLE lineitem COMMENT "COLUMNAR=1 <optName>=<optValue>";
|
Parâmetro |
Descrição |
|
|
Nome do atributo estendido. Por exemplo, |
|
|
Valor do atributo estendido. |
Exemplo
O exemplo a seguir cria a tabela lineitem como uma tabela columnstore com pack_shift definido como 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 definir múltiplos atributos, anexe cada par <optName>=<optValue> separado por espaço dentro da mesma string de comentário.