Condividi tramite


Memorizzazione nella cache dei set di risultati (anteprima)

Si applica a:✅ endpoint di analisi SQL e magazzino dati in Microsoft Fabric

La memorizzazione nella cache dei set di risultati (anteprima) è un'ottimizzazione predefinita delle prestazioni per gli endpoint di analisi SQL di Fabric Data Warehouse e Lakehouse che migliorano la latenza di lettura.

La memorizzazione nella cache dei set di risultati funziona salvando in modo permanente i set di risultati finali per le query T-SQL applicabili SELECT , in modo che le esecuzioni successive che "hit" cache elaboreranno solo il set di risultati finale. Ciò può ignorare la compilazione complessa e l'elaborazione dei dati della query originale e restituire le query successive più velocemente.

Gli scenari di data warehousing in genere comportano query analitiche che elaborano grandi quantità di dati per produrre un risultato relativamente piccolo. Ad esempio, una SELECT query che contiene più join ed esegue letture e riordini su milioni di righe di dati può comportare un'aggregazione che è lunga solo poche righe. Per carichi di lavoro come report o dashboard che tendono a attivare ripetutamente le stesse query analitiche, è possibile attivare più volte lo stesso calcolo pesante, anche se il risultato finale rimane invariato. La memorizzazione nella cache dei set di risultati migliora le prestazioni in questo e in scenari simili.

Importante

Questa funzionalità si trova in Anteprima.

Gestione automatica della cache

La cache dei set di risultati funziona in modo trasparente. Dopo l'abilitazione, la creazione e il riutilizzo della cache vengono applicati opportunisticamente per le query.

La memorizzazione nella cache dei set di risultati si applica alle query T-SQL nelle tabelle del magazzino dati, alle scorciatoie verso le origini OneLake e alle scorciatoie verso origini non Azure. La gestione della cache viene gestita automaticamente, rimuovendo regolarmente la cache in base alle esigenze.

Inoltre, man mano che i dati cambiano, la coerenza dei risultati viene garantita invalidando la cache creata in precedenza.

Configurare la memorizzazione nella cache dei set di risultati

La memorizzazione nella cache dei set di risultati è configurabile a livello di elemento.

Dopo l'abilitazione, può essere disabilitata a livello di elemento o per le singole query, se necessario.

Durante l'anteprima, la memorizzazione nella cache dei set di risultati è disattivata per impostazione predefinita per tutti gli elementi.

Configurazione a livello di elemento

Usare il comando T-SQL ALTER DATABASE SET per abilitare la memorizzazione nella cache dei set di risultati per un lakehouse o warehouse. Usare l'endpoint di analisi SQL di un Lakehouse per connettersi ed eseguire query T-SQL.

ALTER DATABASE <Fabric_item_name>
SET RESULT_SET_CACHING ON;

Il valore dell'impostazione può essere controllato in sys.databases, ad esempio per visualizzare il valore per il contesto corrente in Fabric Warehouse o all'endpoint di analisi SQL Lakehouse.

SELECT name, is_result_set_caching_on 
FROM sys.databases
WHERE database_id = db_id();

Per disabilitare la memorizzazione nella cache dei set di risultati:

ALTER DATABASE <Fabric_item_name>
SET RESULT_SET_CACHING OFF;

Configurazione a livello di query

Una volta abilitata la memorizzazione nella cache dei set di risultati in un elemento, può essere disabilitata per una singola query.

Può essere utile per il debug o il test A/B di una query. Disabilitare la memorizzazione nella cache dei set di risultati per una query collegando questo hint alla fine di SELECT:

OPTION ( USE HINT ('DISABLE_RESULT_SET_CACHE') );

Controllare l'utilizzo della cache dei set di risultati

L'utilizzo della cache dei set di risultati può essere controllato in due posizioni: Output dei messaggi e vista di sistema queryinsights.exec_requests_history.

Nell'output del messaggio di una query (visibile nell'editor di query di Fabric o in SQL Server Management Studio), l'istruzione "La cache del set di risultati è stata usata" verrà visualizzata dopo l'esecuzione della query se la query è stata in grado di usare una cache del set di risultati esistente.

Screenshot dei risultati di una query che mostra che è stata usata la memorizzazione nella cache del set di risultati.

In queryinsights.exec_requests_history la colonna result_cache_hit visualizza un valore che indica l'utilizzo della cache dei set di risultati per ogni esecuzione della query:

  • 2: la cache del set di risultati usata dalla query (riscontri nella cache)
  • 1: cache del set di risultati creata dalla query
  • 0: la query non è applicabile per la creazione o l'utilizzo della cache dei set di risultati

Per esempio:

SELECT result_cache_hit, command, *
FROM queryinsights.exec_requests_history
ORDER BY submit_time DESC;

Screenshot dell'editor di query di Fabric che mostra una query nella vista queryinsights.exec_requests_history.

Esistono diversi motivi per cui il sistema può determinare che una query non è idonea per la cache dei set di risultati. Alcuni dei motivi possono includere:

  • La cache non esiste più o è stata invalidata da una modifica dei dati, squalificandola per il riutilizzo.
  • La query non è deterministica e non è idonea per la creazione della cache.
  • La query non è un'istruzione SELECT .