Verificar o uso do mecanismo colunar usando EXPLAIN
Para observar os novos operadores colunares que aparecem no plano de consulta gerado, verifique o uso do mecanismo colunar usando a instrução EXPLAIN.
EXPLAIN (ANALYZE,COSTS OFF,BUFFERS,TIMING OFF,SUMMARY OFF)
SELECT l_returnflag, l_linestatus, l_quantity, l_extendedprice,
l_discount, l_tax
FROM lineitem
WHERE l_shipdate <= date '1992-08-06'
;
QUERY PLAN
-----------------------------------------------------------------------------
Append (actual rows=3941797 loops=1)
Buffers: shared hit=9
-> Custom Scan (columnar scan) on lineitem (actual rows=3941797 loops=1)
Filter: (l_shipdate <= '1992-08-06'::date)
Rows Removed by Columnar Filter: 56054083
Columnar cache search mode: columnar filter only
Buffers: shared hit=9
-> Seq Scan on lineitem (never executed)
Filter: (l_shipdate <= '1992-08-06'::date)
Custom Scan (columnar scan)indica que a verificação do mecanismo colunar está incluída no plano de consulta.Rows Removed by Columnar Filterlista o número de linhas filtradas pela execução vetorizada colunar.Columnar cache search modepode sercolumnar filter only,nativeourow store scan. O planejador escolhe o modo de pesquisa automaticamente com base na capacidade de avaliação de custos e pushdown.
Quando o planejador escolhe o modo native, ele envia alguns dos
operadores colunares para a verificação:
Rows Aggregated by Columnar Scanlista o número de linhas agregadas.Rows Sorted by Columnar Scanlista o número de linhas que são classificadas.Rows Limited by Columnar Scanlista o número limitado de linhas que foram verificadas.
Com as mesclagens, os operadores de verificação colunar também podem usar o modo Late Materialization.
EXPLAIN (ANALYZE,COSTS OFF,BUFFERS,TIMING OFF,SUMMARY OFF)
SELECT l_shipmode, o_orderpriority
FROM orders, lineitem
WHERE o_orderkey = l_orderkey
AND l_shipmode in ('AIR', 'FOB')
AND l_receiptdate >= date '1995-01-01'
;
QUERY PLAN
-----------------------------------------------------------------------------
Hash Join (actual rows=9865288 loops=1)
Hash Cond: (lineitem.l_orderkey = orders.o_orderkey)
Buffers: temp read=127738 written=127738
-> Append (actual rows=9865288 loops=1)
-> Custom Scan (columnar scan) on lineitem (actual rows=9865288 loops=1)
Filter: ((l_shipmode = ANY ('{AIR,FOB}'::bpchar[])) AND
(l_receiptdate >= '1995-01-01'::date))
Rows Removed by Columnar Filter: 50130592
Columnar cache search mode: native
-> Index Scan using idx_lineitem_orderkey_fkidx on lineitem
(never executed)
Filter: ((l_shipmode = ANY ('{AIR,FOB}'::bpchar[])) AND
(l_receiptdate >= '1995-01-01'::date))
-> Hash (actual rows=15000000 loops=1)
Buckets: 1048576 Batches: 32 Memory Usage: 37006kB
Buffers: temp written=83357
-> Append (actual rows=15000000 loops=1)
-> Custom Scan (columnar scan) on orders (actual rows=15000000
loops=1)
Rows Removed by Columnar Filter: 0
Columnar projection mode: late materialization
Columnar cache search mode: native
-> Seq Scan on orders (never executed)
Columnar projection mode pode ser late materialization.
Os operadores colunares escolhem esse modo automaticamente quando o planejador otimiza
a projeção adiando a materialização de alguns valores de coluna.
Ver o uso da junção vetorizada do mecanismo colunar
Para verificar o novo operador de junção vetorizada, use a instrução EXPLAIN para
observar o novo operador Vectorized Hash Join que aparece no plano de consulta
gerado de uma consulta.
EXPLAIN (ANALYZE,COSTS OFF,BUFFERS,TIMING OFF,SUMMARY OFF)
SELECT l_quantity, l_extendedprice, l_discount, l_tax
FROM lineitem, orders
WHERE l_shipdate <= date '2022-08-06'
AND l_orderkey = o_orderkey
AND o_orderdate <= date '2025-03-07';
QUERY PLAN
---------------------------------------------------------------------------------------
Vectorized Hash Join (actual rows=3934686 loops=1)
Vectorized partitioning, Partitions: 16 (Disk usage: 208MB)
(Peak Memory Usage: 27MB, Threads: 1)
Hash Cond: (lineitem.l_orderkey = orders.o_orderkey)
Rows Removed by Bloom Filter: 0
Buffers: temp read=26728 written=26728
-> Append (actual rows=3934686 loops=1)
-> Custom Scan (columnar scan) on lineitem (actual rows=3934686 loops=1)
Filter: (l_shipdate <= '2022-08-06'::date)
Rows Removed by Columnar Filter: 56051366
Columnar cache search mode: native
-> Seq Scan on lineitem (never executed)
Filter: (l_shipdate <= '2022-08-06'::date)
-> Vectorized Hash (actual rows=7245824 loops=1)
Build bloom filter, Memory Usage: 1024kB
-> Append (actual rows=7245824 loops=1)
-> Custom Scan (columnar scan) on orders (actual rows=7245824 loops=1)
Filter: (o_orderdate <= '2025-03-07'::date)
Rows Removed by Columnar Filter: 7754176
Columnar cache search mode: native
-> Seq Scan on orders (never executed)
Filter: (o_orderdate <= '2025-03-07'::date)
Vectorized Hash Joinindica que a mesclagem entre as duas relações usou a mesclagem de hash vetorizada.Vectorized partitioning, Partitions:lista o número de partições em que os dados foram divididos.
Ver informações sobre tabelas com colunas no armazenamento de colunas
É possível consultar a visualização g_columnar_relations para ver informações sobre as tabelas ou as visualizações materializadas com colunas
no armazenamento de colunas.
SELECT * FROM g_columnar_relations; ┌─[ RECORD 1 ]────────┬───────────────────┐ │ relation_name │ tbl_parallel_test │ │ schema_name │ public │ │ database_name │ advisor │ │ status │ Usable │ │ size │ 581431259 │ │ columnar_unit_count │ 3 │ │ invalid_block_count │ 0 │ │ total_block_count │ 8337 │ ├─[ RECORD 2 ]────────┼───────────────────┤ │ relation_name │ lineitem │ │ schema_name │ public │ │ database_name │ advisor │ │ status │ Usable │ │ size │ 423224944 │ │ columnar_unit_count │ 29 │ │ invalid_block_count │ 0 │ │ total_block_count │ 115662 │ ├─[ RECORD 3 ]────────┼───────────────────┤
Ver informações sobre as colunas no armazenamento de colunas
É possível consultar a visualização g_columnar_columns para ver informações sobre as colunas no armazenamento de colunas, incluindo o tamanho delas e o horário do último acesso.
SELECT database_name, schema_name, relation_name, column_name, size_in_bytes, last_accessed_time FROM g_columnar_columns;
Ver o armazenamento de colunas na UI da Web
Também é possível conferir o inventário do repositório de colunas na interface do usuário da Web do AlloyDB Omni:
- Conecte-se à interface da Web e selecione o cluster.
- No menu de navegação, clique em Mecanismo colunar.
- Na tabela Dados do armazenamento colunar, revise as colunas preenchidas no armazenamento colunar:
- Nome do banco de dados: o banco de dados que contém a relação.
- Nome do esquema: o esquema da relação.
- Nome da relação: o nome da tabela ou visualização materializada.
- Nome da coluna: o nome da coluna em formato de coluna.
- Tipo de coluna: o tipo de dados SQL da coluna.
- Status: o status de prontidão da coluna no armazenamento de colunas (por exemplo,
Usable). - Tamanho: o consumo de memória da coluna no repositório de colunas.
- Acessos: o número de vezes que a coluna foi acessada por verificações colunares.
- Último acesso: o carimbo de data/hora do acesso mais recente à verificação colunar.
Ver estatísticas de execução do mecanismo colunar para consultas recentes
É possível conferir as estatísticas de execução do mecanismo colunar para consultas recentes usando a
visualização g_columnar_stat_statements. Essa visualização adiciona estatísticas do mecanismo colunar à
visualização pg_stat_statements fornecida pela extensão pg_stat_statements. Para
usar essa visualização, primeiro ative a extensão pg_stat_statements.
- Ative a extensão
pg_stat_statements:CREATE EXTENSION pg_stat_statements;
- Execute as consultas com as estatísticas que você quer ver.
É possível fazer isso manualmente ou deixar passar tempo suficiente para
que os aplicativos executem essas consultas com o
pg_stat_statementsativado. - Consulte as visualizações
g_columnar_stat_statementsepg_stat_statements. A consulta a seguir recupera todas as estatísticas de execução colunares, incluindo aquelas que foram coletadas antes da criação da extensãopg_stat_statements. O valor10deuseridindica que as estatísticas foram coletadas antes da criação da extensãopg_stat_statements.SELECT * FROM pg_stat_statements(TRUE) AS pg_stats FULL JOIN g_columnar_stat_statements AS g_stats ON pg_stats.userid = g_stats.user_id AND pg_stats.dbid = g_stats.db_id AND pg_stats.queryid = g_stats.query_id WHERE columnar_unit_read > 0; ┌─[ RECORD 1 ]────────┬─────────────────────────────── │ userid │ 10 │ │ dbid │ 33004 │ │ queryid │ 6779068104316758833 │ │ query │ SELECT l_returnflag, ↵│ │ │ l_linestatus, ↵│ │ │ l_quantity, ↵│ │ │ l_extendedprice, ↵│ │ │ l_discount, ↵│ │ │ l_tax ↵│ │ │FROM lineitem ↵│ │ │WHERE l_shipdate <= date $1│ │ calls │ 1 │ │ total_time │ 299.969983 │ │ min_time │ 299.969983 │ │ max_time │ 299.969983 │ │ mean_time │ 299.969983 │ │ stddev_time │ 0 │ │ rows │ 392164 │ │ shared_blks_hit │ 0 │ │ shared_blks_read │ 0 │ │ shared_blks_dirtied │ 0 │ │ shared_blks_written │ 0 │ │ local_blks_hit │ 0 │ │ local_blks_read │ 0 │ │ local_blks_dirtied │ 0 │ │ local_blks_written │ 0 │ │ temp_blks_read │ 0 │ │ temp_blks_written │ 0 │ │ blk_read_time │ 0 │ │ blk_write_time │ 0 │ │ user_id │ 10 │ │ db_id │ 33004 │ │ query_id │ 6779068104316758833 │ │ columnar_unit_read │ 29 │ │ page_read │ 115662 │ │ rows_filtered │ 0 │ │ columnar_scan_time │ 0 │ └─────────────────────┴───────────────────────────────┘
Ver estatísticas de consulta colunar na UI da Web
Depois de ativar a extensão pg_stat_statements, também é possível inspecionar as estatísticas de execução de consultas colunares na interface do usuário da Web do AlloyDB Omni:
- Conecte-se à interface da Web e selecione o cluster.
- No menu de navegação, clique em Mecanismo colunar.
- Na tabela Consultas colunares, analise as estatísticas de execução das consultas analíticas que usaram o armazenamento de colunas:
- ID da consulta: o identificador da consulta limpa.
- Consulta: o texto da instrução SQL limpo, com valores constantes substituídos por marcadores de posição.
- Horários chamados: o número de vezes que a consulta foi executada.
- Média de linhas buscadas: o número médio de linhas retornadas por execução.
- Latência média: a latência média de execução da consulta.
- Latência máxima: a latência máxima de execução registrada para a consulta.
- Unidade colunar lida: o número de unidades colunares lidas do armazenamento de colunas.
- Páginas lidas: o número de páginas lidas durante a execução.
Ver o uso da memória do repositório de colunas
Para ver a quantidade de RAM não utilizada disponível para o mecanismo colunar, consulte a função google_columnar_engine_memory_available. O
número inteiro de saída mostra a memória disponível em megabytes (MB).
SELECT google_columnar_engine_memory_available();
Ver o tamanho e as configurações da memória do repositório de colunas na UI da Web
Também é possível verificar o consumo de memória do armazenamento de colunas e as definições de configuração na interface do usuário da Web do AlloyDB Omni:
- Conecte-se à interface da Web e selecione o cluster.
- No menu de navegação, clique em Mecanismo colunar.
- Revise a seção Configurações do armazenamento em colunas, que mostra os seguintes indicadores de status e memória:
- Mecanismo colunar: indica se o mecanismo colunar está ativo (por exemplo,
Enabled). - Tamanho da memória: mostra a quantidade de memória do armazenamento de colunas em uso em relação ao total de memória colunar alocada (por exemplo,
2.0 MB used of 1024.0 MB). - Colunização automática: indica se a colunização automática está ativada (por exemplo,
Enabled). - Frequência de execução: mostra o intervalo de programação para execuções de colunização automática (por exemplo,
Every 5 minutes). - Verificação colunar: indica se a execução da verificação colunar está ativada (por exemplo,
Enabled).
- Mecanismo colunar: indica se o mecanismo colunar está ativo (por exemplo,
Ver o cache de armazenamento do mecanismo colunar
Para visualizar e monitorar dados sobre o cache de armazenamento do mecanismo colunar, use os seguintes comandos:
| Comando | Descrição |
|---|---|
SELECT google_columnar_engine_storage_cache_used(); |
Retorna o tamanho do cache de armazenamento do mecanismo colunar usado. |
SELECT google_columnar_engine_storage_cache_available(); |
Retorna o tamanho do cache de armazenamento do mecanismo colunar não utilizado. |
SHOW google_columnar_engine.storage_cache_size; |
Retorna o valor total do tamanho configurado do cache de armazenamento para o mecanismo colunar. |