Partilhar via


Referência da tabela do sistema de otimização preditiva

Importante

Esta tabela do sistema está em Public Preview.

Nota

Para ter acesso a esta tabela, a sua região deve suportar otimização preditiva. Consulte 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 o layout de dados para obter o máximo desempenho e eficiência de custos. A tabela do sistema rastreia o histórico de operações desse recurso. Para obter informações sobre otimização preditiva, consulte Otimização preditiva para tabelas geridas pelo Unity Catalog.

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

Considerações sobre a entrega

  • A tabela do sistema de otimização preditiva atualiza-se dentro de duas horas. No entanto, a informação de faturação pode demorar até 24 horas a ser refletida nos dados.
  • A otimização preditiva pode executar várias operações no mesmo cluster. Em caso afirmativo, a percentagem de DBU atribuída a cada uma das operações múltiplas é aproximada. É por isso que o usage_unit está configurado para ESTIMATED_DBU. Ainda assim, o número total de DBUs gastos no cluster será preciso.

Esquema de 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 (de caracteres) ID da conta. 11e22ba4-87b9-4cc2-9770-d10b894b7118
workspace_id cadeia (de caracteres) A ID do espaço de trabalho no qual a otimização preditiva executou a operação. 1234567890123456
start_time carimbo de data/hora A hora em que a operação começou. 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 O momento 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 (de caracteres) O nome do metastore ao qual a tabela otimizada pertence. metastore
metastore_id cadeia (de caracteres) A ID do metastore ao qual a tabela otimizada pertence. 5a31ba44-bbf4-4174-bf33-e1fa078e6765
catalog_name cadeia (de caracteres) O nome do catálogo ao qual a tabela otimizada pertence. catalog
schema_name cadeia (de caracteres) O nome do esquema ao qual a tabela otimizada pertence. schema
table_id cadeia (de caracteres) O ID da tabela otimizada. 138ebb4b-3757-41bb-9e18-52b38d3d2836
table_name cadeia (de caracteres) O nome da tabela otimizada. table1
operation_type cadeia (de caracteres) A operação de otimização foi realizada. Deve ser um dos seguintes valores: COMPACTION, VACUUM, ANALYZE, CLUSTERING, AUTO_CLUSTERING_COLUMN_SELECTION, DATA_SKIPPING_COLUMN_SELECTION, ou COMPATIBILITY_MODE_REFRESH. COMPACTION
operation_id cadeia (de caracteres) O ID da operação de otimização. 4dad1136-6a8f-418f-8234-6855cfaff18f
operation_status cadeia (de caracteres) 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 (de caracteres) A unidade de utilização em 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 esta operação. 2.12

Métricas de operação

As métricas registradas na coluna operation_metrics variam dependendo do 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 otimizando o tamanho dos arquivos. Consulte Otimizar o formato do arquivo de dados. number_of_compacted_files Número de ficheiros 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 ficheiros novos adicionados por esta operação.
amount_of_output_data_bytes Quantidade de bytes adicionados por esta operação.
VACUUM Reduz os custos de armazenamento excluindo arquivos de dados que não são mais referenciados pela tabela. Consulte Remover arquivos de dados não utilizados com vácuo. number_of_deleted_files Número de ficheiros recolhidos pela coleta de lixo por esta operação.
amount_of_data_deleted_bytes Quantidade de bytes coletados de memória residual por esta operação.
ANALYZE Aciona a atualização incremental de estatísticas para melhorar o desempenho da consulta. Consulte ANALYZE TABLE. amount_of_scanned_bytes Quantidade de bytes digitalizados por esta operação.
number_of_scanned_files Número de ficheiros digitalizados por esta operação.
staleness_percentage_reduced Redução da percentagem de estagnação após esta operação. Esta estatística pode variar entre 0 e 100, dependendo da frequência executada ANALYZE .
CLUSTERING Desencadeia a clusterização incremental para tabelas habilitadas. Veja Utilizar clustering líquido para tabelas. number_of_removed_files Número de ficheiros removidos por esta operação.
number_of_clustered_files Número de ficheiros novos 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 esta operação.
AUTO_CLUSTERING_COLUMN_SELECTION Avalia se desenvolver colunas de agrupamento. Consulte Agrupamento automático de líquidos. old_clustering_columns Disposição de dados anterior, que pode ser chaves de agrupamento antigas ou "Nenhuma" se não estiver particionada.
new_clustering_columns Novas colunas de agrupamento aplicadas por esta operação.
has_column_selection_changed Evoluiu esta operação as colunas de agrupamento?
additional_reason Razões para a alteração ou ausência de alteração no agrupamento das colunas.
DATA_SKIPPING_COLUMN_SELECTION Deteta colunas com dados em falta, ignorando as estatísticas da carga de trabalho, e preenche-as. Ver Salto de dados. amount_of_scanned_bytes Quantidade de bytes digitalizados por esta operação.
number_of_scanned_files Número de ficheiros digitalizados por esta operação.
added_data_skipping_columns Colunas de saltos de dados recentemente adicionadas aplicadas por esta operação.
removed_data_skipping_columns Colunas utilizadas para ignorar dados são removidas por esta operação.
old_data_skipping_columns Lista exaustiva anterior de colunas de eliminação de dados.
new_data_skipping_columns Lista atual exaustiva de colunas de omissão de dados.
COMPATIBILITY_MODE_REFRESH Deteta se o Modo de Compatibilidade está desatualizado e atualiza a tabela. Consulte 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 informações 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:

Quantos DBUs estimados a otimização preditiva usou 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 ETL específico, você pode primeiro encontrar as tabelas nesse pipeline e, em seguida, procurar 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 mais gastou 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á realizando mais 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 tiveram 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 geridas 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;