Trabalhar com os planos EXPLAIN do Aurora DSQL
O Aurora DSQL usa uma estrutura de plano EXPLAIN semelhante à do PostgreSQL, mas com adições importantes que refletem a respectiva arquitetura distribuída e modelo de execução.
Nesta documentação, forneceremos uma visão geral dos planos EXPLAIN do Aurora DSQL, destacando as semelhanças e diferenças em comparação ao PostgreSQL. Abordaremos os vários tipos de operações de verificação disponíveis no Aurora DSQL e ajudaremos você a entender o custo da realização de suas consultas.
Planos EXPLAIN do PostgreSQL versus Aurora DSQL
O Aurora SQL é desenvolvido com base no banco de dados PostgreSQL e compartilha a maioria das estruturas de planos com o PostgreSQL, mas tem diferenças arquitetônicas importantes que afetam a realização e a otimização de consultas:
| Recurso | PostgreSQL | Aurora DSQL |
|---|---|---|
|
Armazenamento de dados |
Armazenamento heap |
Sem heap, todas as linhas são indexadas por um identificador exclusivo. |
|
Chave primária |
O índice da chave primária é separado dos dados da tabela. |
O índice da chave primária é a tabela com todas as colunas extras como colunas INCLUDE. |
|
Índices secundários |
Índices secundários padrão. |
Funciona da mesma forma que o PostgreSQL, com a capacidade de incluir colunas que não sejam chave. |
|
Recursos de filtragem |
Condição de índice, filtro heap. |
Condição de índice, filtro de armazenamento, filtro do processador de consultas. |
|
Tipos de varredura |
Verificação sequencial, verificação de índice, Verificação somente de índice. |
Verificação sequencial, verificação de índice, Verificação somente de índice. |
|
Realização de consultas |
Local para o banco de dados. |
Distribuído (computação e armazenamento são separados). |
O Aurora DSQL armazena os dados da tabela diretamente na ordem da chave primária, em vez de em um heap separado. Cada linha é identificada por uma chave exclusiva, normalmente a chave primária, que permite que o banco de dados otimize as pesquisas com maior eficiência. A diferença arquitetônica explica por que o Aurora DSQL geralmente usa verificações somente de índice nos casos em que o PostgreSQL pode escolher a verificação sequencial.
Outra distinção importante é que o Aurora DSQL separa a computação do armazenamento, permitindo que os filtros sejam aplicados mais cedo no caminho de execução a fim de reduzir a movimentação de dados e melhorar a performance.
Para saber mais sobre o uso dos planos EXPLAIN com o PostgreSQL, consulte a documentação sobre o EXPLAIN do PostgreSQL
Elementos-chave nos planos EXPLAIN do Aurora DSQL
Os planos EXPLAIN do Aurora DSQL fornecem informações detalhadas sobre como as consultas são realizadas, incluindo onde a filtragem ocorre e quais colunas são recuperadas do armazenamento. A compreensão dessa saída ajuda a otimizar a performance da consulta.
- Condição de índice
Condições usadas para navegar no índice. A filtragem mais eficiente que reduz os dados verificados. No Aurora DSQL, as condições de índice podem ser aplicadas em várias camadas do plano de execução.
- Projeções
Colunas recuperadas do armazenamento. Um menor número de projeções significa melhor performance.
- Filtros de armazenamento
Condições aplicadas em nível de armazenamento. Mais eficiente do que os filtros do processador de consultas.
- Filtros do processador de consultas
-
Condições aplicadas em nível de processador de consultas. Requer a transferência de todos os dados antes da filtragem, o que causa maior movimentação de dados e sobrecarga de processamento.
Filtros no Aurora DSQL
O Aurora DSQL separa a computação do armazenamento, o que significa que o ponto em que os filtros são aplicados durante a realização da consulta tem um impacto significativo na performance. Os filtros aplicados antes da transferência de grandes volumes de dados reduzem a latência e melhoram a eficiência. Quanto mais cedo um filtro for aplicado, menos dados precisarão ser processados, movidos e verificados, gerando consultas mais rápidas.
O Aurora DSQL pode aplicar filtros em vários estágios no caminho da consulta. Compreender esses estágios é fundamental para interpretar os planos de consulta e otimizar a performance.
| Nível | Tipo de filtro | Descrição |
|---|---|---|
| 1 | Condição de índice |
Aplicado durante a verificação do índice. Limita o volume de dados lidos do armazenamento e reduz os dados enviados à camada de computação. |
| 2 | Filtros de armazenamento | Aplicado depois que os dados são lidos do armazenamento, mas antes de serem enviados à computação. Um exemplo aqui é um filtro em uma coluna de inclusão de um índice. Reduz a transferência de dados, mas não a quantidade lida. |
| 3 | Filtros do processador de consultas | Aplicado após os dados chegarem à camada computacional. Todos os dados devem ser transferidos primeiro, o que aumenta a latência e o custo. Atualmente, o Aurora DSQL não pode realizar todas as operações de filtragem e projeção no armazenamento, portanto, algumas consultas podem ser forçadas a recorrer a esse tipo de filtragem. |