Esta página descreve como gerir manualmente o conteúdo do motor de colunas para acelerar o desempenho das consultas. Explica como adicionar e remover tabelas, vistas materializadas e índices ScaNN.
Faça a gestão de tabelas, vistas materializadas e índices ScaNN
Com base na sua carga de trabalho, pode adicionar manualmente colunas ao arquivo de colunas ou eliminar algumas ou todas as colunas de uma tabela ou uma vista materializada do arquivo de colunas. A avaliação de consultas usa automaticamente os dados organizados em colunas armazenados para responder a consultas.
Da mesma forma, pode adicionar manualmente um índice ScaNN ao motor de colunas para acelerar a pesquisa vetorial. Isto permite pesquisas eficientes de vizinhos mais próximos em grandes conjuntos de dados de incorporações vetoriais.
Ao escolher as tabelas, as vistas materializadas e as colunas a adicionar ao arquivo de colunas, considere o tamanho do arquivo de colunas e o formato da carga de trabalho. Os bons candidatos para seleção incluem tabelas grandes ou vistas que são frequentemente analisadas. Dentro destas tabelas ou vistas, identifique quaisquer índices não únicos grandes usados pela carga de trabalho OLAP. Pode adicionar as colunas destes índices ao arquivo de colunas e, potencialmente, eliminar os índices, eliminando assim o custo de desempenho associado à respetiva manutenção na instância principal.
Use um dos seguintes métodos para gerir o conteúdo do motor de colunas:
- Faça a gestão do conteúdo da base de dados de colunas atualizando as flags da base de dados
- Faça a gestão do conteúdo do armazenamento de colunas através de funções SQL
Consulte Que dados pode adicionar ao armazenamento de colunas para obter informações sobre os tipos de dados e as origens de dados que pode usar quando adiciona tabelas, colunas e vistas materializadas ao armazenamento de colunas.
Antes de começar
- Tem de ter uma destas funções de IAM no Google Cloud projeto que está a usar:
roles/alloydb.admin
(a função IAM predefinida de administrador do AlloyDB)roles/owner
(a função de IAM básica de proprietário)roles/editor
(a função de IAM básica de editor)
Se não tiver nenhuma destas funções, contacte o administrador organizacional para pedir acesso.
Faça a gestão do conteúdo do arquivo de colunas atualizando as flags da base de dados
Pode gerir manualmente o conteúdo do arquivo de colunas atualizando a flag da base de dados google_columnar_engine.relations
. O indicador tem um único valor que especifica todas as origens de dados do seu armazenamento de colunas. Durante o reinício, as colunas especificadas nesta flag são preenchidas automaticamente na base de dados de colunas.
Pode usar esta flag juntamente com a auto-columnarization. Se o motor de colunas tiver memória disponível após o preenchimento das colunas que especificar através da flag google_columnar_engine.relations
, a organização em colunas automática adiciona mais colunas ao armazenamento de colunas, conforme necessário.
Para mais informações sobre como definir as flags da base de dados de uma instância através da CLI Google Cloud ou da Google Cloud consola, consulte o artigo Configure as flags da base de dados de uma instância.
Adicione colunas com sinalizadores
Para adicionar colunas ao arquivo de colunas, defina a flag google_columnar_engine.relations
de uma instância. Defina o valor como uma lista de itens separados por vírgulas, em que cada item especifica uma lista de colunas a incluir de uma tabela específica, neste formato:
DATABASE_NAME.SCHEMA_NAME.TABLE_NAME(COLUMN_LIST)
Substitua o seguinte:
DATABASE_NAME: a base de dados que contém as colunas a adicionar ao arquivo de colunas.
SCHEMA_NAME: o esquema que identifica as tabelas ou as vistas materializadas a adicionar ao arquivo de colunas, por exemplo,
public
.TABLE_NAME: a tabela ou a vista materializada que contém as colunas a adicionar ao arquivo de colunas.
COLUMN_LIST: uma lista separada por vírgulas das colunas a adicionar ao arquivo de colunas.
Para adicionar todas as colunas de uma tabela ou de uma vista materializada, omita a lista de colunas:
DATABASE_NAME.SCHEMA_NAME.TABLE_NAME
Para mais informações sobre como definir as flags da base de dados numa instância, consulte o artigo Configure as flags da base de dados de uma instância.
Sintaxe da CLI do Google Cloud quando usa google_columnar_engine.relations
Se usar a Google Cloud CLI para definir o sinalizador google_columnar_engine.relations
, tem de usar a sintaxe de delimitador alternativo para separar os sinalizadores da base de dados que definir. Isto deve-se ao facto de a lista de colunas estar separada por vírgulas, o que requer que use um caráter que não seja uma vírgula quando especificar flags no mesmo argumento da linha de comandos.
O exemplo seguinte demonstra a utilização da CLI gcloud para adicionar duas colunas no esquema public
ao arquivo de colunas. O exemplo define uma flag separada para ativar o motor colunar, porque a utilização do comando gcloud alloydb instance update
para definir qualquer flag da base de dados também tem de definir todas as outras flags da base de dados que quer ter valores não predefinidos, mesmo que já estejam definidas.
gcloud alloydb instances update INSTANCE_NAME \
--database-flags=^:^\
google_columnar_engine.relations='DATABASE_NAME.public.TABLE_NAME(COLUMN_1,COLUMN_2)'\
:google_columnar_engine.enabled=on\
[:FLAG_3=VALUE_3 ...] \
--region=REGION_ID \
--cluster=CLUSTER_ID
Elimine colunas com a utilização de flags
Para remover colunas do arquivo de colunas, defina um novo valor para a flag google_columnar_engine.relations
descrita na secção anterior, excluindo as colunas que quer remover.
Para eliminar todas as colunas do arquivo de colunas, desmarque a flag google_columnar_engine.relations
na sua instância.
Para mais informações sobre como definir flags de base de dados numa instância, consulte o artigo Configure as flags de base de dados de uma instância.
Faça a gestão do conteúdo da loja de colunas através de funções SQL
Pode gerir manualmente o conteúdo do armazenamento de colunas através de funções SQL.
Adicione colunas com funções SQL
Execute a função SQL google_columnar_engine_add
para adicionar colunas à base de dados de colunas.
Este método adiciona as colunas especificadas ao arquivo de colunas e gere as colunas apenas no nó associado. As novas colunas não persistem na loja nos reinícios da instância.
Este método não altera a flag da base de dados.google_columnar_engine.relations
A auto
colunarização
não considera as colunas adicionadas por esta função SQL.
Cliente psql
SELECT google_columnar_engine_add( relation => 'TABLE_NAME', columns => 'COLUMN_LIST' );
-
Substitua o seguinte:
- "TABLE_NAME": uma string que contém o nome da tabela ou da vista materializada. Se a tabela ou a vista estiver num esquema diferente de
public
, especifique o nome do esquema, um ponto e o nome da tabela ou da vista; por exemplo,'myschema.mytable'
. - 'COLUMN_LIST': uma string que contém uma lista separada por vírgulas, com distinção entre maiúsculas e minúsculas, dos nomes das colunas que quer adicionar. Se quiser adicionar todas as colunas da tabela ou da vista materializada ao arquivo de colunas, omita este parâmetro.
Elimine colunas com funções SQL
Execute a função SQL google_columnar_engine_drop
da seguinte forma:
Cliente psql
SELECT google_columnar_engine_drop( relation => 'TABLE_NAME', columns => 'COLUMN_LIST' );
- "TABLE_NAME": uma string que contém o nome da tabela ou da vista materializada. Se a tabela ou a vista estiver num esquema diferente de
public
, especifique o nome do esquema, um ponto e o nome da tabela ou da vista; por exemplo,'myschema.mytable'
. - 'COLUMN_LIST': uma string que contém uma lista separada por vírgulas, com distinção entre maiúsculas e minúsculas, dos nomes das colunas que quer adicionar. Se quiser adicionar todas as colunas da tabela ou da vista materializada ao arquivo de colunas, omita este parâmetro.
Pode usar a função google_columnar_engine_drop
para remover colunas adicionadas
editando a sinalização da base de dados google_columnar_engine.relations
. No entanto, quando o faz, essas colunas são adicionadas novamente ao arquivo de colunas quando a instância é reiniciada.
Faça a gestão dos índices ScaNN no motor de colunas
Para acelerar a pesquisa vetorial, pode carregar os índices do ScaNN para a cache de índice do motor colunar.
Adicione, remova e valide índices ScaNN através de funções SQL
Pode adicionar, remover e validar manualmente os índices ScaNN a partir da cache de índice através de funções SQL. Adicionar um índice à cache pode acelerar as consultas de pesquisa vetorial.
Adicione um índice ScaNN
Para adicionar um índice específico à cache de índice do motor colunar, use a seguinte função SQL:
SELECT google_columnar_engine_add_index(index => 'SCANN_INDEX_NAME');
Substitua SCANN_INDEX_NAME
pelo nome do índice ScaNN que quer adicionar à cache de índice do motor colunar.
Remova um índice ScaNN
Para eliminar um índice ScaNN específico do motor de colunas, use a seguinte função SQL:
SELECT google_columnar_engine_drop_index(index => 'SCANN_INDEX_NAME');
Substitua SCANN_INDEX_NAME
pelo nome do índice ScaNN que quer remover.
Valide a utilização do motor de colunas
Para verificar se as suas análises de índice vetorial usam o motor de colunas, execute o comando EXPLAIN ANALYZE
com a opção COLUMNAR_ENGINE
:
EXPLAIN (ANALYZE TRUE, SCANN TRUE, COSTS FALSE, TIMING FALSE, SUMMARY FALSE, VERBOSE FALSE, COLUMNAR_ENGINE TRUE)
SELECT * FROM t ORDER BY val <=> '[0.5,0.5,0.5,0.5]' LIMIT 100;
O comando devolve um plano de consulta semelhante ao seguinte:
Index Scan using t_ix3 on t t_1 (actual rows=100 loops=1)
Order By: (val <=> '[0.5,0.5,0.5,0.5]'::vector)
Limit: 100
ScaNN Info: (... columnar engine nodes hit=6...)
Columnar Engine ScaNN Info: (index found=true)
A presença de columnar engine nodes hit
e Columnar Engine ScaNN Info: (index found=true)
na saída confirma que o motor de colunas é usado para a consulta.