Esta página descreve os operadores usados nos planos de execução de consultas do Spanner. Para saber como recuperar um plano de execução de uma consulta específica usando o console Google Cloud , consulte Noções básicas sobre como o Spanner executa consultas.
Os planos de execução são compatíveis com bancos de dados do dialeto GoogleSQL e do dialeto PostgreSQL.
Mapeamento de construções SQL para operadores de execução de consultas
O mapeamento exato entre construções SQL e operadores de execução de consultas depende da otimização da consulta. A tabela a seguir mostra alguns mapeamentos comuns:
| SQL | Operador de execução de consulta |
|---|---|
| Referência da tabela | Verificação de tabela, verificação de índice |
WHERE |
Filter Scan, Filter |
GROUP BY |
Aggregate |
Função escalar (como ISNULL) |
Computação |
Função de agregação (como SUM) |
Aggregate |
JOIN |
Qualquer operador de junção. Consulte Junções. |
| Subconsulta | Subconsulta escalar ou de matriz |
LIMIT |
Limite, Limite de classificação |
ORDER BY |
Ordenar, Limite de classificação |
Operadores de execução de consulta
Esta seção lista todos os operadores de execução de consulta que podem compor um plano de execução de consulta no Spanner.
Operadores folha
Operadores que não têm filhos.
| Nome | Resumo |
|---|---|
| Array unnest | Nivela uma matriz de entrada em linhas de elementos. |
| Generate relation | Retorna zero ou mais linhas. |
| Unit relation | Retorna uma linha. |
| Empty relation | Não retorna nenhuma linha. |
| Scan | Verifica uma fonte de linhas e as retorna. |
| Filter scan | Funciona com a verificação para reduzir o número de linhas lidas no banco de dados. |
Operadores unary
Operadores que têm um único filho relacional.
| Nome | Resumo |
|---|---|
| Aggregate | Implementa instruções SQL GROUP BY e funções de agregação. |
| Apply mutations | Aplica as mutações de uma instrução da linguagem de manipulação de dados (DML) à tabela. |
| Create batch | Reúne as linhas de entrada em uma sequência. |
| Computação | Produz saída lendo as linhas de entrada e adicionando uma ou mais colunas extras que são computadas usando expressões escalares. |
| Compute struct | Cria uma variável para uma estrutura que contém campos para cada uma das colunas de entrada. |
| DataBlockToRowAdapter | Adapta um método de execução orientado a lote para um método de execução orientado a linha. |
| Filtrar | Lê todas as linhas da entrada, aplica um predicado escalar a cada linha e retorna apenas as linhas que satisfazem o predicado. |
| Limite | Restringe o número de linhas retornadas. |
| União de divisão local | Encontra divisões de tabela armazenadas no servidor local, executa uma subconsulta em cada divisão e cria uma união que combina todos os resultados. |
| Atribuição de ID aleatório | Produz saída lendo as linhas de entrada e adicionando um número aleatório a cada linha. |
| RowToDataBlockAdapter | Adapta um método de execução orientado a linhas para um método de execução orientado a lotes. |
| Serialize result | Serializa cada linha do resultado final da consulta para retorno ao cliente. |
| Ordenar | Lê as linhas de entrada, as ordena por colunas e retorna os resultados classificados. |
| Função com valor de tabela (TVF) | Produz saída lendo as linhas de entrada e aplicando a função especificada. |
| Union input | Retorna resultados para um operador "union all". |
Operadores binários
Operadores que têm dois filhos relacionais.
| Nome | Resumo |
|---|---|
| Aplicar junção | Aplica cada linha do lado "input" ao lado "map" usando um método de aplicação. |
| Hash join | Lê linhas da entrada marcadas como "build" e as insere em uma tabela de hash com base em uma condição de junção. |
| Mesclar participação | Consome os dois fluxos de entrada simultaneamente e gera linhas quando a condição de junção é atendida. |
| Recursive union | Realiza uma união de duas entradas, uma que representa um caso base e outra que representa um caso recursivo. |
Operadores N-ary
Operadores que têm mais de dois filhos relacionais.
| Nome | Resumo |
|---|---|
| Union all | Combina todos os conjuntos de linhas dos filhos sem remover duplicatas. |
Operadores distribuídos
Operadores que são executados em vários servidores.
| Nome | Resumo |
|---|---|
| Distributed union | Divide conceitualmente uma ou mais tabelas em várias divisões, avalia remotamente uma subconsulta de modo independente em cada divisão e, em seguida, une todos os resultados. |
| Distributed apply | Estende o operador de junção de aplicação executando em vários servidores. |
| União de mesclagem distribuída | Distribui uma consulta em vários servidores remotos e combina os resultados para produzir um resultado classificado. |
| Junção do hash de transmissão push | Implementa junções SQL usando uma junção hash distribuída. |
Subconsultas escalares
Subexpressões SQL que retornam um único valor escalar.
| Nome | Resumo |
|---|---|
| Subconsultas escalares | Subexpressões SQL que retornam um único valor escalar. |
Subconsultas de matriz
Subexpressões SQL que retornam uma matriz.
| Nome | Resumo |
|---|---|
| Subconsultas de matriz | Subexpressões SQL que retornam uma matriz. |
Construtor de estrutura
Um operador que cria uma estrutura (uma coleção de campos) para linhas resultantes de uma operação de computação.
| Nome | Resumo |
|---|---|
| Construtor de struct | Um operador que cria uma estrutura (uma coleção de campos) para linhas resultantes de uma operação de computação. |