Tabela de referência do sistema de otimização preditiva

Importante

Esta tabela do sistema está em Visualização Pública.

Observação

Para ter acesso a esta tabela, sua região deve dar suporte à otimização preditiva. Confira Regiões do Azure Databricks.

Este artigo descreve o esquema da tabela de histórico de operações de otimização preditiva e fornece consultas de exemplo. A otimização preditiva otimiza seu layout de dados para desempenho de pico e eficiência de custo. A tabela do sistema acompanha o histórico de operações desse recurso. Para obter informações sobre otimização preditiva, consulte Otimização preditiva para tabelas gerenciadas do Catálogo do Unity.

Caminho da tabela: A tabela do sistema está localizada em system.storage.predictive_optimization_operations_history.

Considerações sobre entrega

  • A tabela do sistema de otimização preditiva é atualizada dentro de duas horas. No entanto, as informações de cobrança podem levar até 24 horas para preencher os dados.
  • A otimização preditiva pode executar várias operações no mesmo cluster. Nesse caso, a proporção dos DBUs atribuída a cada uma das múltiplas operações é aproximada. É por isso que o usage_unit está definido como ESTIMATED_DBU. Ainda assim, o número total de DBUs gastos no cluster será preciso.

Esquema da tabela de otimização preditiva

A tabela do sistema de histórico de operações de otimização preditiva usa o seguinte esquema:

Nome da coluna Tipo de dados Descrição Exemplo
account_id cadeia O ID da conta. 11e22ba4-87b9-4cc2-9770-d10b894b7118
workspace_id cadeia A ID do workspace no qual a otimização preditiva executou a operação. 1234567890123456
start_time carimbo de data/hora A hora em que a operação foi iniciada. As informações de fuso horário são registradas no final do valor, com +00:00 representando UTC. 2023-01-09 10:00:00.000+00:00
end_time carimbo de data/hora A hora em que a operação terminou. As informações de fuso horário são registradas no final do valor, com +00:00 representando UTC. 2023-01-09 11:00:00.000+00:00
metastore_name cadeia O nome do metastore ao qual a tabela otimizada pertence. metastore
metastore_id cadeia A ID do metastore ao qual a tabela otimizada pertence. 5a31ba44-bbf4-4174-bf33-e1fa078e6765
catalog_name cadeia O nome do catálogo ao qual a tabela otimizada pertence. catalog
schema_name cadeia O nome do esquema ao qual a tabela otimizada pertence. schema
table_id cadeia O ID da tabela otimizada. 138ebb4b-3757-41bb-9e18-52b38d3d2836
table_name cadeia O nome da tabela otimizada. table1
operation_type cadeia A operação de otimização executada. Deve ser um dos seguintes valores: COMPACTION, VACUUM, ANALYZE, CLUSTERING, AUTO_CLUSTERING_COLUMN_SELECTION, DATA_SKIPPING_COLUMN_SELECTION, COMPATIBILITY_MODE_REFRESH, DELETE, , ou PURGE. COMPACTION
operation_id cadeia A ID da operação de otimização. 4dad1136-6a8f-418f-8234-6855cfaff18f
operation_status cadeia O status da operação de otimização. Deve ser um dos seguintes valores: SUCCESSFUL, , FAILED: INTERNAL_ERRORou FAILED: AUTO_TTL_COLUMN_DOES_NOT_EXIST_ERRORFAILED: PRIVATE_LINK_SETUP_ERROR. SUCCESSFUL
operation_metrics map[string, string] Os detalhes adicionais sobre a otimização específica que foi realizada. Consulte Métricas de operação. {"number_of_output_files":"100","number_of_compacted_files":"1000","amount_of_output_data_bytes":"4000","amount_of_data_compacted_bytes":"10000"}
usage_unit cadeia A unidade de uso incorrida. Deve ser o seguinte valor: ESTIMATED_DBU. ESTIMATED_DBU
usage_quantity decimal A quantidade da unidade de uso utilizada. 2.12

Métricas de operação

As métricas registradas na operation_metrics coluna variam de acordo com o tipo de operação:

Nome da operação Descrição da operação Métricas de operação Descrição
COMPACTION Melhora o desempenho da consulta ao otimizar os tamanhos dos arquivos. Confira Otimizar o layout do arquivo de dados. number_of_compacted_files O número de arquivos removidos.
amount_of_data_compacted_bytes O número de bytes removidos.
number_of_output_files O número de arquivos novos adicionados.
amount_of_output_data_bytes O número de bytes adicionados.
VACUUM Reduz os custos de armazenamento ao excluir arquivos de dados que não são mais referenciados pela tabela. Confira Remover arquivos de dados não utilizados com o vacuum. number_of_deleted_files O número de arquivos coletados no lixo.
amount_of_data_deleted_bytes O número de bytes coletados como lixo.
ANALYZE Dispara a atualização incremental de estatísticas para melhorar o desempenho da consulta. Veja ANALYZE TABLE ... ESTATÍSTICAS DE COMPUTAÇÃO. amount_of_scanned_bytes O número de bytes escaneados.
number_of_scanned_files O número de arquivos escaneados.
staleness_percentage_reduced A redução na porcentagem de estagnação. Essa estatística pode variar de 0 a 100 dependendo da frequência executada ANALYZE .
CLUSTERING Dispara o clustering incremental nas tabelas habilitadas. Consulte Usar clustering líquido para tabelas. number_of_removed_files O número de arquivos removidos.
number_of_clustered_files O número de arquivos novos adicionados.
amount_of_data_removed_bytes O número de bytes removidos.
amount_of_clustered_data_bytes O número de bytes adicionados.
AUTO_CLUSTERING_COLUMN_SELECTION Avalia se as colunas de clustering devem ser evoluídas. Consulte clusterização automática de líquidos. old_clustering_columns O layout anterior dos dados, que pode ser chaves antigas de clustering ou "Nenhuma" se não particionado.
new_clustering_columns As novas colunas agrupadas.
has_column_selection_changed O indicador de se as colunas de agrupamento mudaram.
additional_reason As razões para a mudança ou ausência de mudança no agrupamento das colunas.
DATA_SKIPPING_COLUMN_SELECTION Detecta colunas com dados ausentes, ignorando as estatísticas da carga de trabalho e preenche as lacunas. Consulte Ignorando dados. amount_of_scanned_bytes O número de bytes escaneados.
number_of_scanned_files O número de arquivos escaneados.
added_data_skipping_columns As colunas de pular dados adicionadas.
removed_data_skipping_columns As colunas de pular dados removidas.
old_data_skipping_columns A lista exaustiva anterior de dados pulando colunas.
new_data_skipping_columns A lista exaustiva atual de dados pulando colunas.
COMPATIBILITY_MODE_REFRESH Detecta se o Modo de Compatibilidade está desatualizado e atualiza a tabela. Consulte o Modo de Compatibilidade. N/A As operações de atualização do Modo de Compatibilidade.
DELETE Remove linhas que já passaram do período de expiração do tempo de vida automático. Confira a exclusão automática de linha com tempo de vida útil automático. number_of_deleted_rows O número de linhas removidas. Isso aconteceu 0 quando nenhuma linha era elegível para exclusão.
amount_of_data_deleted_bytes O número de bytes removidos.
PURGE Reescreve arquivos de dados para remover fisicamente linhas já deletadas com vetores de exclusão. Executa antes VACUUM em tabelas com vetores de exclusão ativados. Confira a exclusão automática de linha com tempo de vida útil automático. number_of_purged_rows O número de linhas eliminadas. Isso aconteceu 0 quando nenhuma linha era elegível para ser purgada. Confira a exclusão automática de linha com tempo de vida útil automático.

Consultas de exemplo

As seções a seguir incluem consultas de exemplo que você pode usar para obter insights sobre a tabela do sistema de otimização preditiva. Para que essas consultas funcionem, você precisa substituir os valores de parâmetro por seus próprios valores.

Este artigo inclui as seguintes consultas de exemplo:

Quantas DBUs estimadas têm otimização preditiva usada nos últimos 30 dias?

SELECT SUM(usage_quantity)
  FROM system.storage.predictive_optimization_operations_history
  WHERE
    usage_unit = "ESTIMATED_DBU"
    AND timestampdiff(day, start_time, Now()) < 30;

Para encontrar o mesmo valor para um pipeline específico do ETL, primeiro você pode encontrar as tabelas nesse pipeline e, em seguida, pesquisar as DBUs:

-- Find all full table names for the pipeline:
WITH pipeline_mapping AS (
  SELECT DISTINCT target_table_full_name AS target_table_name
  FROM system.access.table_lineage
  WHERE entity_type = 'PIPELINE' AND entity_id = :pipeline_id
)
-- Select all operations for any table in that pipeline:
SELECT SUM(usage_quantity)
  FROM system.storage.predictive_optimization_operations_history
  WHERE
    CONCAT_WS('.', catalog_name, schema_name, table_name)
      IN ( SELECT target_table_name FROM pipeline_mapping)
    AND usage_unit = "ESTIMATED_DBU"
    AND timestampdiff(day, start_time, Now()) < 30;

Em quais tabelas a otimização preditiva gastou mais nos últimos 30 dias (custo estimado)?

SELECT
  metastore_name,
  catalog_name,
  schema_name,
  table_name,
  SUM(usage_quantity) as totalDbus
FROM system.storage.predictive_optimization_operations_history
WHERE
  usage_unit = "ESTIMATED_DBU"
  AND timestampdiff(day, start_time, Now()) < 30
GROUP BY ALL
ORDER BY totalDbus DESC;

Em quais tabelas a otimização preditiva está executando a maioria das operações?

SELECT
  metastore_name,
  catalog_name,
  schema_name,
  table_name,
  operation_type,
  COUNT(DISTINCT operation_id) as operations
FROM system.storage.predictive_optimization_operations_history
GROUP BY ALL
ORDER BY operations DESC;

Para um determinado catálogo, quantos bytes totais foram compactados?

SELECT
  schema_name,
  table_name,
  SUM(operation_metrics["amount_of_data_compacted_bytes"]) as bytesCompacted
FROM system.storage.predictive_optimization_operations_history
WHERE
  metastore_name = :metastore_name
  AND catalog_name = :catalog_name
  AND operation_type = "COMPACTION"
GROUP BY ALL
ORDER BY bytesCompacted DESC;

Quais tabelas tinham mais bytes removidos?

SELECT
  metastore_name,
  catalog_name,
  schema_name,
  table_name,
  SUM(operation_metrics["amount_of_data_deleted_bytes"]) as bytesVacuumed
FROM system.storage.predictive_optimization_operations_history
WHERE operation_type = "VACUUM"
GROUP BY ALL
ORDER BY bytesVacuumed DESC;

Qual é a taxa de sucesso das operações executadas pela otimização preditiva?

WITH operation_counts AS (
  SELECT
    COUNT(DISTINCT (CASE WHEN operation_status = "SUCCESSFUL" THEN operation_id END)) as successes,
    COUNT(DISTINCT operation_id) as total_operations
  FROM system.storage.predictive_optimization_operations_history
 )
SELECT successes / total_operations as success_rate
FROM operation_counts;