Compartilhar via


Referência da tabela 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: Esta 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, o compartilhamento de DBUs atribuído a cada uma das várias operações é aproximado. É 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 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 A 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_SELECTIONou COMPATIBILITY_MODE_REFRESH. 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 ou FAILED: INTERNAL_ERROR. SUCCESSFUL
operation_metrics map[string, string] Detalhes adicionais sobre a otimização específica que foi executada. 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 que esta operação incorreu. Deve ser o seguinte valor: ESTIMATED_DBU. ESTIMATED_DBU
usage_quantity decimal A quantidade da unidade de uso que foi usada por essa operação. 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 Número de arquivos removidos por esta operação.
amount_of_data_compacted_bytes Quantidade de bytes removidos por esta operação.
number_of_output_files Número de novos arquivos adicionados por esta operação.
amount_of_output_data_bytes Quantidade de bytes adicionados por essa operação.
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 Número de arquivos coletados pelo coletor de lixo nesta operação.
amount_of_data_deleted_bytes Quantidade de bytes de lixo coletados por esta operação.
ANALYZE Dispara a atualização incremental de estatísticas para melhorar o desempenho da consulta. Consulte ANALYZE TABLE. amount_of_scanned_bytes Quantidade de bytes verificados por esta operação.
number_of_scanned_files Número de arquivos verificados por esta operação.
staleness_percentage_reduced Redução no percentual de desatualização após essa operação. Essa estatística pode variar entre 0 e 100 com base na frequência executada ANALYZE .
CLUSTERING Dispara o clustering incremental nas tabelas habilitadas. Consulte Usar clustering líquido para tabelas. number_of_removed_files Número de arquivos removidos por esta operação.
number_of_clustered_files Número de novos arquivos adicionados por esta operação.
amount_of_data_removed_bytes Quantidade de bytes removidos por esta operação.
amount_of_clustered_data_bytes Quantidade de bytes adicionados por essa operação.
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 Layout de dados prévio, que pode ser chaves de clustering antigas ou "Nenhum" caso não esteja particionado.
new_clustering_columns Novas colunas de agrupamento aplicadas por esta operação.
has_column_selection_changed Se essa operação evoluiu as colunas de clustering.
additional_reason Motivos para a alteração ou nenhuma alteração nas colunas de clustering.
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 Quantidade de bytes verificados por esta operação.
number_of_scanned_files Número de arquivos verificados por esta operação.
added_data_skipping_columns Colunas de salto de dados recém-adicionadas aplicadas por esta operação.
removed_data_skipping_columns Dados ignorando colunas removidas por essa operação.
old_data_skipping_columns Lista exaustiva anterior de colunas que ignoram dados.
new_data_skipping_columns Lista completa atual de colunas de exclusão de dados.
COMPATIBILITY_MODE_REFRESH Detecta se o Modo de Compatibilidade está desatualizado e atualiza a tabela. Consulte o Modo de Compatibilidade. N/A Operações de atualização do Modo de Compatibilidade.

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 aspirados?

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;