Criteri di visualizzazioni materializzate

Questo articolo include informazioni sui criteri che possono essere impostati sulle visualizzazioni materializzate.

Criteri di conservazione e memorizzazione nella cache

Una visualizzazione materializzata include criteri di conservazione e criteri di memorizzazione nella cache. La vista materializzata deriva i criteri di conservazione e memorizzazione nella cache del database per impostazione predefinita. Questi criteri possono essere modificati usando i comandi di gestione dei criteri di conservazione o la memorizzazione nella cache dei comandi di gestione dei criteri.

Entrambi i criteri vengono applicati nella parte materializzata della visualizzazione materializzata solo. Per una spiegazione delle differenze tra la parte materializzata e la parte delta, vedere come funzionano le visualizzazioni materializzate. Ad esempio, se i criteri di memorizzazione nella cache di una visualizzazione materializzata sono impostati su 7d, ma i criteri di memorizzazione nella cache della tabella di origine sono impostati su 0d, potrebbero essere presenti ancora errori di disco durante la query sulla visualizzazione materializzata. Questo comportamento si verifica perché la tabella di origine (parte delta) partecipa anche alla query.

I criteri di conservazione della visualizzazione materializzata non sono correlati ai criteri di conservazione della tabella di origine. I criteri di conservazione della tabella di origine possono essere più brevi rispetto ai criteri di conservazione della vista materializzata, se i record di origine sono necessari per un periodo più breve. È consigliabile impostare un criterio di conservazione minimo di almeno pochi giorni e la ripristinabilità impostata su true nella tabella di origine. Questa impostazione consente il ripristino rapido per gli errori e per scopi di diagnostica.

Nota

I criteri di conservazione zero nella tabella di origine non sono supportati.

I criteri di conservazione e memorizzazione nella cache dipendono dal tempo di creazione di extent. L'ultimo aggiornamento per un record determina il tempo di creazione dell'estensione per una visualizzazione materializzata.

Nota

Il processo di materializzazione tenta di ridurre al minimo la quantità di aggiornamenti alla parte materializzata della visualizzazione. Nei casi in cui un record non deve essere aggiornato nella visualizzazione, non verrà aggiornato. Ad esempio, quando la visualizzazione materializzata è un'aggregazione take_any(*) , i nuovi record delle stesse chiavi group-by non verranno inseriti nuovamente nella visualizzazione e pertanto i criteri di conservazione verranno inseriti per primo record.

Criterio partitioning

Un criterio di partizionamento può essere applicato a una visualizzazione materializzata. È consigliabile configurare un criterio di partizionamento in una visualizzazione materializzata solo quando la maggior parte o tutte le query di visualizzazione filtrano in base a una delle chiavi raggruppate della visualizzazione materializzata. Questa situazione è comune nelle soluzioni multi-tenant, in cui una delle chiavi di gruppo della visualizzazione materializzata è l'identificatore del tenant , ad esempio , tenantIdcustomerId. Per altre informazioni, vedere il primo caso d'uso descritto nella pagina Dei criteri di partizionamento supportati .

Per i comandi per modificare i criteri di partizionamento di una visualizzazione materializzata, vedere Comandi dei criteri di partizionamento.

L'aggiunta di un criterio di partizionamento in una visualizzazione materializzata aumenta il numero di extent nella visualizzazione materializzata e crea più "lavoro" per il processo di materializzazione. Per altre informazioni sul motivo di questo comportamento, vedere il processo di ricompilazione di extent menzionato in come funzionano le visualizzazioni materializzate.

Criterio rowlevelsecurity

È possibile applicare una sicurezza a livello di riga in una visualizzazione materializzata, con diverse limitazioni:

  • I criteri possono essere applicati solo alle viste materializzate con funzioni di aggregazione arg_max()arg_min()/take_any()/ o quando la query di sicurezza a livello di riga fa riferimento al gruppo in base alle chiavi dell'aggregazione della visualizzazione materializzata.
  • Il criterio viene applicato alla parte materializzata solo della visualizzazione.
    • Se lo stesso criterio di sicurezza a livello di riga non è definito nella tabella di origine della visualizzazione materializzata, la visualizzazione materializzata potrebbe restituire i record che devono essere nascosti dai criteri. Ciò avviene perché la query sulla visualizzazione materializzata esegue anche la tabella di origine.
    • È consigliabile definire gli stessi criteri di sicurezza a livello di riga sia nella tabella di origine che nella visualizzazione materializzata se la vista è un arg_max() o arg_min()/take_any().
  • Quando si definisce un criterio di sicurezza a livello di riga nella tabella di origine di una arg_max() o di una visualizzazione materializzata()take_any()/ o arg_min(), il comando ha esito negativo se non sono presenti criteri di sicurezza a livello di riga definiti nella visualizzazione materializzata stessa. Lo scopo dell'errore consiste nell'avvisare l'utente di una potenziale perdita di dati, poiché la visualizzazione materializzata può esporre informazioni. Per attenuare questo errore, eseguire una delle azioni seguenti:
    • Definire i criteri di sicurezza a livello di riga sulla visualizzazione materializzata.
    • Scegliere di ignorare l'errore aggiungendo allowMaterializedViewsWithoutRowLevelSecurity la proprietà al comando alter policy. Ad esempio:
    .alter table SourceTable policy row_level_security enable with (allowMaterializedViewsWithoutRowLevelSecurity=true) "RLS_function"

Per i comandi per la configurazione di criteri di sicurezza a livello di riga in una visualizzazione materializzata, vedere row_level_security comandi dei criteri.