Nesta página, descrevemos como gerenciar o conteúdo do repositório de colunas do mecanismo colunar adicionando e removendo colunas manualmente.
Com base na sua carga de trabalho, é possível adicionar manualmente colunas ao columnstore ou remover algumas ou todas as colunas de uma tabela ou visualização materializada do columnstore. A avaliação de consulta usa automaticamente os dados em colunas armazenados para responder às consultas.
Ao escolher quais tabelas, visualizações materializadas e colunas adicionar ao columnstore, considere o tamanho dele e o formato da carga de trabalho. Boas candidatas para seleção incluem tabelas ou visualizações grandes que são varridas com frequência. Nessas tabelas ou visualizações, identifique grandes índices não exclusivos usados pela carga de trabalho OLAP. É possível adicionar as colunas desses índices ao columnstore e potencialmente descartar os índices, eliminando o custo de desempenho associado à manutenção deles na instância principal.
Use um dos seguintes métodos para gerenciar o conteúdo do repositório de colunas do mecanismo colunar:
- Gerenciar o conteúdo do columnstore atualizando as flags do banco de dados
- Gerenciar conteúdo do column store usando funções SQL
Consulte Quais dados podem ser adicionados ao repositório de colunas para saber quais tipos e fontes de dados podem ser usados ao adicionar tabelas, colunas e visualizações materializadas ao repositório de colunas.
Antes de começar
- Você precisa ter um destes papéis do IAM no projeto Google Cloud que está usando:
roles/alloydb.admin
(o papel predefinido do IAM de administrador do AlloyDB)roles/owner
(o papel básico Proprietário do IAM)roles/editor
(o papel básico de editor do IAM)
Se você não tiver nenhum desses papéis, entre em contato com o administrador da organização para solicitar acesso.
Gerenciar o conteúdo do columnstore atualizando flags de banco de dados
É possível gerenciar o conteúdo do columnstore manualmente atualizando a flag do banco de dados google_columnar_engine.relations
. A flag tem um único valor que especifica todas as fontes de dados do armazenamento de colunas. Durante a reinicialização, as colunas especificadas nessa flag são preenchidas automaticamente no columnstore.
É possível usar essa flag com a colunação automática. Se o mecanismo colunar tiver memória disponível depois de preencher as colunas especificadas pela flag google_columnar_engine.relations
, a columnarização automática adicionará mais colunas ao repositório de colunas, conforme necessário.
Para mais informações sobre como definir flags de banco de dados de uma instância usando a Google Cloud CLI ou o console Google Cloud , consulte Configurar flags de banco de dados de uma instância.
Adicionar colunas usando flags
Para adicionar colunas ao columnstore, defina a flag google_columnar_engine.relations
de uma instância. Defina o valor como uma lista separada por vírgulas de itens, em que cada item especifica uma lista de colunas a serem incluídas de uma tabela específica, neste formato:
DATABASE_NAME.SCHEMA_NAME.TABLE_NAME(COLUMN_LIST)
Substitua:
DATABASE_NAME: o banco de dados que contém as colunas a serem adicionadas ao repositório de colunas.
SCHEMA_NAME: o esquema que identifica as tabelas ou as visualizações materializadas a serem adicionadas ao columnstore. Por exemplo,
public
.TABLE_NAME: a tabela ou a visualização materializada que contém as colunas a serem adicionadas ao repositório de colunas.
COLUMN_LIST: uma lista separada por vírgulas das colunas a serem adicionadas ao repositório de colunas.
Para adicionar todas as colunas de uma tabela ou visualização materializada, omita a lista de colunas:
DATABASE_NAME.SCHEMA_NAME.TABLE_NAME
Para mais informações sobre como definir flags de banco de dados em uma instância, consulte Configurar flags de banco de dados de uma instância.
Uma observação sobre a sintaxe da linha de comando
Se você usar a Google Cloud CLI para definir a flag google_columnar_engine.relations
, use a sintaxe de delimitador alternativo para separar as flags do banco de dados definidas. Isso acontece porque a lista de colunas é separada por vírgulas, exigindo que você use um caractere diferente de vírgula ao especificar flags no mesmo argumento de linha de comando.
O exemplo a seguir demonstra o uso da CLI gcloud para adicionar duas colunas no esquema public
ao repositório de colunas. O exemplo define uma flag separada para ativar o mecanismo colunar, porque usar o comando gcloud alloydb instance update
para definir qualquer flag de banco de dados também precisa definir todas as outras flags que você quer ter valores diferentes dos padrões, 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
Descartar colunas usando flags
Para remover colunas do repositório de colunas, defina um novo valor para a flag google_columnar_engine.relations
descrita na seção anterior, deixando de fora as colunas que você quer remover.
Para descartar todas as colunas do columnstore, desmarque a flag
google_columnar_engine.relations
da sua instância.
Para mais informações sobre como definir flags de banco de dados em uma instância, consulte Configurar flags de banco de dados de uma instância.
Gerenciar conteúdo do column store usando funções SQL
É possível gerenciar o conteúdo do columnstore manualmente usando funções SQL.
Adicionar colunas usando funções SQL
Execute a função SQL google_columnar_engine_add
para adicionar colunas ao columnstore.
Esse método adiciona as colunas especificadas ao repositório de colunas e gerencia as colunas apenas no nó conectado. As novas colunas não são mantidas na loja entre as reinicializações de instâncias.
Esse método não muda a flag do banco de dados google_columnar_engine.relations
. A colunação automática não considera as colunas adicionadas por essa função SQL.
Cliente psql
SELECT google_columnar_engine_add( relation => 'TABLE_NAME', columns => 'COLUMN_LIST' );
-
Substitua:
- 'TABLE_NAME': uma string que contém o nome da tabela ou da
visualização materializada. Se a tabela ou a visualização estiver em um esquema diferente de
public
, especifique o nome do esquema, um ponto e o nome da tabela ou da visualização. Por exemplo,'myschema.mytable'
. - 'COLUMN_LIST': uma string que contém uma lista separada por vírgulas e sensível a maiúsculas e minúsculas dos nomes das colunas que você quer adicionar. Se você quiser adicionar todas as colunas da tabela ou da visualização materializada ao columnstore, omita esse parâmetro.
Remover colunas usando funções SQL
Execute a função SQL google_columnar_engine_drop
da seguinte maneira:
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
visualização materializada. Se a tabela ou a visualização estiver em um esquema diferente de
public
, especifique o nome do esquema, um ponto e o nome da tabela ou da visualização. Por exemplo,'myschema.mytable'
. - 'COLUMN_LIST': uma string que contém uma lista separada por vírgulas e sensível a maiúsculas e minúsculas dos nomes das colunas que você quer adicionar. Se você quiser adicionar todas as colunas da tabela ou da visualização materializada ao columnstore, omita esse parâmetro.
É possível usar a função google_columnar_engine_drop
para remover colunas adicionadas
editando a flag do banco de dados google_columnar_engine.relations
. No entanto, quando você faz isso, essas colunas são adicionadas novamente ao armazenamento colunar quando a instância é reiniciada.