Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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_unitestá configurado paraESTIMATED_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) | O 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, CLUSTERINGAUTO_CLUSTERING_COLUMN_SELECTION, DATA_SKIPPING_COLUMN_SELECTION, COMPATIBILITY_MODE_REFRESH, , DELETE, , ou PURGE. |
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, FAILED: INTERNAL_ERROR, FAILED: AUTO_TTL_COLUMN_DOES_NOT_EXIST_ERROR, ou FAILED: 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 (de caracteres) | A unidade de utilização incorrida. Deve ser o seguinte valor: ESTIMATED_DBU. |
ESTIMATED_DBU |
usage_quantity |
decimal | A quantidade da unidade de utilização utilizada. | 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 |
O número de ficheiros removidos. |
amount_of_data_compacted_bytes |
O número de bytes removidos. | ||
number_of_output_files |
O número de ficheiros novos adicionados. | ||
amount_of_output_data_bytes |
O número de bytes adicionados. | ||
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 |
O número de ficheiros recolhidos como lixo. |
amount_of_data_deleted_bytes |
O número de bytes recolhidos como lixo. | ||
ANALYZE |
Aciona a atualização incremental de estatísticas para melhorar o desempenho da consulta. Consulte ANALYZE TABLE … CALCULAR ESTATÍSTICAS. | amount_of_scanned_bytes |
O número de bytes digitalizados. |
number_of_scanned_files |
O número de ficheiros digitalizados. | ||
staleness_percentage_reduced |
A redução da percentagem de estagnação. Esta estatística pode variar de 0 a 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 |
O número de ficheiros removidos. |
number_of_clustered_files |
O número de ficheiros 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 desenvolver colunas de agrupamento. Consulte Agrupamento automático de líquidos. | old_clustering_columns |
O layout anterior dos dados, que pode ser chaves antigas de clustering ou "Nenhuma" se não for 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 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 |
O número de bytes digitalizados. |
number_of_scanned_files |
O número de ficheiros digitalizados. | ||
added_data_skipping_columns |
As colunas de saltos de dados adicionadas. | ||
removed_data_skipping_columns |
As colunas de salto de dados removidas. | ||
old_data_skipping_columns |
A lista exaustiva anterior de dados a saltar colunas. | ||
new_data_skipping_columns |
A lista exaustiva atual de dados que saltam colunas. | ||
COMPATIBILITY_MODE_REFRESH |
Deteta se o Modo de Compatibilidade está desatualizado e atualiza a tabela. Consulte Modo de compatibilidade. | N/A | As operações de atualização do Modo de Compatibilidade. |
DELETE |
Remove as linhas que já passaram o período de expiração do tempo de vida automática. Consulte Eliminação automática de linhas com TTL automático. | number_of_deleted_rows |
O número de linhas removidas. Isto aconteceu 0 quando nenhuma linha era elegível para eliminação. |
amount_of_data_deleted_bytes |
O número de bytes removidos. | ||
PURGE |
Reescreve ficheiros de dados para remover fisicamente linhas já eliminadas com vetores de eliminação. Executa antes VACUUM em tabelas com vetores de eliminação ativados. Consulte Eliminação automática de linhas com TTL automático. |
number_of_purged_rows |
O número de linhas purgadas. Isto aconteceu 0 quando nenhuma fila era elegível para ser purgada. Consulte Eliminação automática de linhas com TTL automático. |
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?
- Em quais tabelas a otimização preditiva mais gastou nos últimos 30 dias (custo estimado)?
- Em quais tabelas a otimização preditiva está realizando mais operações?
- Para um determinado catálogo, quantos bytes totais foram compactados?
- Quais tabelas tiveram mais bytes aspirados?
- Qual é a taxa de sucesso das operações geridas pela otimização preditiva?
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;