Referência da tabela do sistema de otimização preditiva
Visualização
Essa tabela do sistema está em Pré-visualização Pública.
Para ter acesso a esta tabela, sua região deve suportar otimização preditiva. Veja clouds e regiõesDatabricks.
Este artigo descreve o esquema da tabela de histórico de operações de otimização preditiva e fornece exemplos de consultas. A otimização preditiva otimiza a disposição de seus dados para obter desempenho máximo 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 Predictive optimization for Unity Catalog gerenciar tables.
Caminho da tabela : Essa tabela do sistema está localizada em system.storage.predictive_optimization_operations_history.
Disponibilidade de registros
Os registros estão geralmente disponíveis em até 12 horas. A entrega de dados para novos Workspace pode demorar mais do que isso.
Considerações
A otimização preditiva pode executar várias operações no mesmo cluster. Se sim, a parcela de DBUs atribuída a cada uma das várias operações é aproximada. É por isso que usage_unit está definido como ESTIMATED_DBU. Ainda assim, o número total de DBUs gastos no cluster é 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 |
|---|---|---|---|
| string | O ID da account. |
|
| string | O ID do site workspace no qual a otimização preditiva executa as operações. |
|
| carimbo de data/hora | O horário em que as operações começam. As informações de fuso horário são registradas no final do valor com |
|
| carimbo de data/hora | O horário em que as operações terminaram. As informações de fuso horário são registradas no final do valor com |
|
| string | O nome do metastore ao qual a tabela otimizada pertence. |
|
| string | O ID do metastore ao qual a tabela otimizada pertence. |
|
| string | O nome do catálogo ao qual a tabela otimizada pertence. |
|
| string | O nome do esquema ao qual a tabela otimizada pertence. |
|
| string | O ID da tabela otimizada. Para |
|
| string | O nome da tabela otimizada. Para |
|
| string | A operação de otimização realizada. Deve ser um dos seguintes valores: |
|
| string | O ID para as operações de otimização. |
|
| string | O status da operação de otimização. Consulte Valores de status da operação. |
|
| map[strings, strings] | Os detalhes adicionais sobre a otimização específica que foi realizada. Consulte Métricas de operação. |
|
| string | A unidade de uso incorrida. Deve ser o seguinte valor: |
|
| Decimal | A quantidade da unidade de uso utilizada. |
|
Valores de status de operação
A coluna operation_status tem um dos seguintes valores:
SUCCESSFUL: A operação foi concluída com sucesso.FAILED: INTERNAL_ERROR: A operação falhou por um motivo que não possui um status mais específico.FAILED: PRIVATE_LINK_SETUP_ERROR: O armazenamento em cloud da tabela negou o acesso ao compute serverless, geralmente por causa de configurações do Private Service Connect ou do firewall. Consulte Rede de plano de compute serverless.FAILED: AUTO_TTL_COLUMN_DOES_NOT_EXIST_ERROR: A coluna de tempo na política de tempo de vida automático não existe na tabela, por exemplo, porque foi descartada ou renomeada. Consulte Exclusão automática de linhas com tempo de vida automático.FAILED: TRANSACTION_CONFLICT_ERROR: A operação entrou em conflito com uma gravação concorrente na tabela. Consulte Exceções de conflito.FAILED: CANNOT_MODIFY_APPEND_ONLY_ERROR: o time-to-live automático não pode excluir linhas porque a propriedadeappendOnlyda tabela étrue. Consulte Propriedades da tabela.FAILED: DATATYPE_MISMATCH_ERROR: A coluna de tempo na política automática de vida útil tem um tipo de dado diferente deDATE,TIMESTAMPouTIMESTAMP_NTZ. Veja Exclusão automática de linhas com vida útil automática.
operações métricas
As métricas registradas na coluna operation_metrics variam de acordo com o tipo de operação:
nome de operações | descrição das operações | operationMetrics | Descrição |
|---|---|---|---|
| Melhora o desempenho das consultas otimizando o tamanho dos arquivos. Consulte Otimizar a disposição do arquivo de dados. |
| O número de arquivos removidos. |
| O número de bytes removidos. | ||
| O número de novos arquivos adicionados. | ||
| O número de bytes adicionados. | ||
| Reduz os custos de armazenamento ao excluir arquivos de dados que não são mais referenciados pela tabela. Consulte Remover arquivos de dados não utilizados com o comando vacuum. |
| O número de arquivos coletados pela coleta de lixo. |
| O número de bytes coletados pela coleta de lixo. | ||
| Aciona atualizações incrementais de estatísticas para melhorar o desempenho das consultas. Consulte ANALYZE TABLE … calcular ESTATÍSTICAS. |
| O número de bytes digitalizados. |
| O número de arquivos verificados. | ||
| A redução na porcentagem de obsolescência. Esta estatística pode variar de 0 a 100 com base na frequência com que | ||
| Aciona clustering incremental para tabelas habilitadas. Consulte Usar clustering líquido para tabelas. |
| O número de arquivos removidos. |
| O número de novos arquivos adicionados. | ||
| O número de bytes removidos. | ||
| O número de bytes adicionados. | ||
| Avalia se as colunas clustering devem ser evoluídas. Veja clusteringautomático de líquidos. |
| A disposição de dados anterior, que pode ser chaves de clustering antigas ou "None" se não estiver particionada. |
| As novas colunas de clustering. | ||
| O indicador de se as colunas de clustering foram alteradas. | ||
| Os motivos para a alteração ou não alteração nas colunas de clustering. | ||
| Detecta colunas com dados ausentes, ignorando as estatísticas da carga de trabalho, e as preenche retroativamente. Consulte Ignorando dados. |
| O número de bytes digitalizados. |
| O número de arquivos verificados. | ||
| As colunas de omissão de dados adicionadas. | ||
| As colunas de omissão de dados removidas. | ||
| A lista exaustiva anterior de colunas de omissão de dados. | ||
| A lista exaustiva atual de colunas de omissão de dados. | ||
| Detecta se Mode de Compatibilidade está desatualizado e atualiza a tabela. Consulte Modede Compatibilidade. | N/A | As operações de refresh do Mode de Compatibilidade. |
| Remove linhas que ultrapassaram o período de expiração do tempo de vida automático. Consulte Exclusão automática de linhas com tempo de vida automático. |
| O número de linhas removidas. Isso é |
| O número de bytes removidos. | ||
| Reescreve arquivos de dados para remover fisicamente as linhas já excluídas com vetores de exclusão. Executa antes de |
| O número de linhas excluídas. Isto é |
| Mantém os índices atualizados com sua tabela base. |
| O tipo de refresh cuja execução ocorreu, como |
| A percentagem das linhas da tabela base cujas entradas de índice este refresh atualizou. Esta estatística pode variar de 0 a 100. |
Exemplos de consultas
As seções a seguir incluem exemplos de consultas que o senhor pode usar para obter percepções sobre a tabela do sistema de otimização preditiva. Para que essas consultas funcionem, você precisa substituir os valores dos parâmetros pelos seus próprios valores.
Este artigo inclui os seguintes exemplos de consultas:
- Quantos DBus estimados foram usados na otimização preditiva nos últimos 30 dias?
- Em quais tabelas a otimização preditiva gastou mais nos últimos 30 dias (custo estimado)?
- Em quais tabelas a otimização preditiva está realizando a maioria das operações?
- Para um determinado catálogo, quantos bytes totais foram compactados?
- Quais tabelas tiveram o maior número de bytes vacuum?
- Qual a taxa de sucesso na execução de operações por otimização preditiva?
Quantos DBus estimados foram usados na otimização preditiva 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, o senhor 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 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á realizando 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 tiveram o maior número de bytes vacuum?
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 na execução de operações por 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;