Condividi tramite


Panoramica dell'eliminazione temporanea

Si applica a: ✅Azure Esplora dati

La possibilità di eliminare singoli record è supportata. L'eliminazione dei record viene in genere ottenuta usando uno dei metodi seguenti:

  • Per eliminare record con un sistema garantisce che anche gli artefatti di archiviazione contenenti questi record vengano eliminati, usare .purge
  • Per eliminare record senza una garanzia di questo tipo, usare .delete come descritto in questo articolo: questo comando contrassegna i record come eliminati, ma non elimina necessariamente i dati dagli artefatti di archiviazione. Questo metodo di eliminazione è più veloce dell'eliminazione.

Per informazioni su come usare il comando, vedere Sintassi

Casi d'uso

Questo metodo di eliminazione deve essere utilizzato solo per l'eliminazione non pianificata di singoli record. Ad esempio, se si scopre che un dispositivo IoT segnala dati di telemetria danneggiati per un certo periodo di tempo, è consigliabile usare questo metodo per eliminare i dati danneggiati.

Se è necessario eliminare frequentemente i record per la deduplicazione o gli aggiornamenti, è consigliabile usare viste materializzate. Vedere Scegliere tra viste materializzate ed eliminazione temporanea per la deduplicazione dei dati.

Processo di eliminazione

Il processo di eliminazione temporanea viene eseguito seguendo questa procedura:

  1. Eseguire la query del predicato: la tabella viene analizzata per identificare gli extent di dati che contengono record da eliminare. Gli extent identificati sono quelli con uno o più record restituiti dalla query del predicato.
  2. Sostituzione degli extent: gli extent identificati vengono sostituiti con nuovi extent che puntano ai BLOB di dati originali e hanno anche una nuova colonna nascosta di tipo bool che indica se è stata eliminata o meno. Al termine, se non vengono inseriti nuovi dati, la query del predicato non restituirà alcun record se eseguito di nuovo.

Limitazioni e considerazioni

  • Il processo di eliminazione è finale e irreversibile. Non è possibile annullare questo processo o recuperare i dati eliminati, anche se gli artefatti di archiviazione non vengono necessariamente eliminati dopo l'operazione.

  • L'eliminazione temporanea è supportata per le tabelle native e le viste materializzate. Non è supportato per le tabelle esterne.

  • Prima di eseguire l'eliminazione temporanea, verificare il predicato eseguendo una query e verificando che i risultati corrispondano al risultato previsto. È anche possibile eseguire il comando in whatif modalità , che restituisce il numero di record che devono essere eliminati.

  • Non eseguire più operazioni di eliminazione temporanea parallele nella stessa tabella, perché ciò può causare errori di alcuni o di tutti i comandi. Tuttavia, è possibile eseguire più operazioni di eliminazione temporanea parallele in tabelle diverse.

  • Non eseguire comandi di eliminazione temporanea e ripulitura nella stessa tabella in parallelo. Attendere prima di tutto il completamento di un comando e quindi eseguire solo l'altro comando.

  • L'eliminazione temporanea viene eseguita sull'URI del cluster: https://[YourClusterName].[region].kusto.windows.net. Il comando richiede autorizzazioni di amministratore del database per il database pertinente.

  • L'eliminazione di record da una tabella di origine di una vista materializzata può avere un impatto sulla vista materializzata. Se i record eliminati non sono stati ancora elaborati dal ciclo di materializzazione, questi record non saranno presenti nella visualizzazione, poiché non verranno mai elaborati. Analogamente, l'eliminazione non avrà un impatto sulla vista materializzata se i record sono già stati elaborati.

  • Limitazioni sul predicato:

    • Deve contenere almeno un where operatore.
    • Può fare riferimento solo alla tabella da cui eliminare i record.
    • Sono consentiti solo gli operatori seguenti: extend, order, take projecte where. All'interno toscalar()di è consentito anche l'operatore summarize .

Prestazioni di eliminazione

Le considerazioni principali che possono influire sulle prestazioni del processo di eliminazione sono:

  • Eseguire la query del predicato: le prestazioni di questo passaggio sono molto simili alle prestazioni del predicato stesso. Potrebbe essere leggermente più veloce o più lento a seconda del predicato, ma la differenza dovrebbe essere insignificante.
  • Sostituzione degli extent: le prestazioni di questo passaggio dipendono dagli elementi seguenti:
    • Distribuzione dei record tra gli extent di dati nel cluster
    • Numero di nodi nel cluster

A differenza di .purge, il .delete comando non esegue il ripristino dei dati. Contrassegna solo i record restituiti dalla query del predicato come eliminati ed è quindi molto più veloce.

Prestazioni delle query dopo l'eliminazione

Le prestazioni delle query non dovrebbero cambiare notevolmente dopo l'eliminazione dei record.

La riduzione delle prestazioni non è prevista perché il filtro aggiunto automaticamente in tutte le query che filtrano i record eliminati è efficiente.

Tuttavia, anche le prestazioni delle query non sono garantite per migliorare. Anche se il miglioramento delle prestazioni può verificarsi per alcuni tipi di query, potrebbe non verificarsi per altri. Per migliorare le prestazioni delle query, gli extent in cui la maggior parte dei record vengono eliminati periodicamente, vengono compattati sostituendoli con nuovi extent che contengono solo i record che non sono stati eliminati.

Impatto su COGS (costo di beni venduti)

Nella maggior parte dei casi, l'eliminazione dei record non comporterà una modifica di COGS.

  • Non ci sarà alcuna diminuzione, perché in realtà non vengono eliminati record. I record vengono contrassegnati come eliminati solo usando una colonna nascosta di tipo bool, la cui dimensione è trascurabile.
  • Nella maggior parte dei casi, non ci sarà alcun aumento perché l'operazione .delete non richiede il provisioning di risorse aggiuntive.
  • In alcuni casi, gli extent in cui la maggior parte dei record vengono eliminati periodicamente vengono compattati sostituendoli con nuovi extent che contengono solo i record che non sono stati eliminati. In questo modo, l'eliminazione dei vecchi artefatti di archiviazione che contengono un numero elevato di record eliminati. I nuovi extent sono più piccoli e quindi consumano meno spazio sia nell'account di archiviazione che nella cache ad accesso frequente. Tuttavia, nella maggior parte dei casi, l'effetto di questo su COGS è trascurabile.