Panoramica dell'eliminazione temporanea

Come piattaforma dati, Azure Esplora dati supporta la possibilità di eliminare singoli record. L'eliminazione dei record viene comunemente ottenuta usando uno dei metodi seguenti:

  • Per eliminare i record con un sistema garantisce che gli artefatti di archiviazione contenenti questi record vengano eliminati anche, usare .purge
  • Per eliminare i record senza tale garanzia, 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 rispetto all'eliminazione.

Per informazioni su come usare il comando, vedere Sintassi

Casi d'uso

Questo metodo di eliminazione deve essere usato solo per l'eliminazione non pianificata di singoli record. Ad esempio, se si rileva che un dispositivo IoT segnala dati di telemetria danneggiati per qualche 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 usando la procedura seguente:

  1. Eseguire query 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 predicato.
  2. Sostituzione di 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 predicato non restituirà alcun record se viene eseguito di nuovo.

Limitazioni e considerazioni

  • Il processo di eliminazione è finale e irreversibile. Non è possibile annullare questo processo o ripristinare 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 controllando 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, in quanto ciò potrebbe causare errori di alcuni o tutti i comandi. Tuttavia, è possibile eseguire più operazioni di eliminazione temporanea parallele in tabelle diverse.

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

  • L'eliminazione temporanea viene eseguita con l'URI del cluster: https://[YourClusterName].[region].kusto.windows.net. Il comando richiede autorizzazioni di amministratore del database nel 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 ancora stati elaborati dal ciclo di materializzazione, questi record mancano nella visualizzazione, poiché non verranno mai elaborati. Analogamente, l'eliminazione non avrà un impatto sulla visualizzazione 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 devono essere eliminati i record.
    • Sono consentiti solo gli operatori seguenti: extend, order, takeprojecte where. All'interno di , l'operatore toscalar()summarize è anche consentito.

Prestazioni di eliminazione

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

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

A differenza .purgedi , il .delete comando non esegue il ripristino dei dati. Contrassegna solo i record restituiti dalla query 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, le prestazioni delle query non sono garantite per migliorare. Mentre il miglioramento delle prestazioni può verificarsi per alcuni tipi di query, potrebbe non verificarsi per alcuni altri. Per migliorare le prestazioni delle query, gli extent in cui la maggior parte dei record vengono eliminati periodicamente, sostituendoli con nuovi extent che contengono solo i record che non sono stati eliminati.

Impatto su COGS (costo delle merci vendute)

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

  • Non vi sarà alcuna diminuzione, perché non vengono effettivamente eliminati record. I record vengono contrassegnati solo come eliminati usando una colonna nascosta di tipo bool, la dimensione di cui è trascurabile.
  • Nella maggior parte dei casi, non ci sarà alcun aumento perché l'operazione non richiede il .delete 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. Ciò causa l'eliminazione degli artefatti di archiviazione precedenti che contengono un numero elevato di record eliminati. I nuovi extent sono più piccoli e quindi usano 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.