Controllare il gestore della cache

Tradotto automaticamente da Deepl

4D v16 ha introdotto un nuovo gestore di cache completamente ottimizzato per la linea di prodotti a 64 bit. 4D v16 R2 sta dando la possibilità ai nostri sviluppatori 4D avanzati di prendere il controllo da soli!

L’algoritmo interno del cache manager si basa su un concetto di priorità associato a ciascun tipo di oggetto da memorizzare nella memoria cache. Per impostazione predefinita, l’algoritmo del cache manager assegna un valore di priorità più alto a un indice rispetto a un record. Inoltre, gli oggetti utilizzati di recente (record o indici) hanno una priorità più alta per rimanere nella cache rispetto agli oggetti che non sono stati utilizzati negli ultimi due giorni e così via.

Da 4D v16 R2, lo sviluppatore 4D può prendere il controllo. All’avvio, è possibile regolare con precisione le priorità nella cache per le tabelle, gli indici e i “grandi oggetti”, in base alle esigenze dell’applicazione. Inoltre, è possibile definire eccezioni per un singolo processo. Quando ci sono operazioni specifiche da eseguire, come ad esempio un’importazione di grandi dimensioni, lo sviluppatore 4D è il migliore per decidere quale tabella o indice deve avere la priorità più alta nella cache per un determinato periodo di tempo.

Nuovi comandi per controllare la priorità

Una serie di nuovi comandi consente regolazioni molto fini: per ogni indice, per ogni tabella, anche con differenze per il record principale e le “parti grandi” (blob / testo / immagini / oggetti).

Definire all’avvio la priorità di tutti i processi

SET TABLE CACHE PRIORITY
SET INDEX CACHE PRIORITY
SET BLOBS CACHE PRIORITY

Aumentare o diminuire la priorità definita all’avvio per il processo corrente.

ADJUST TABLE CACHE PRIORITY
ADJUST INDEX CACHE PRIORITY
ADJUST BLOBS CACHE PRIORITY

Leggere il valore della priorità interna (solo a scopo di debug).

Get adjusted table cache priority
Get adjusted index cache priority
Get adjusted blobs cache priority

beware Questi comandi devono essere usati con cautela perché possono influire sulle prestazioni del database.

Esempi

Nel metodo On Startup database, si vuole impostare una priorità alta per gli indici di campo [Customer]LastName indici dei campi:
SET INDEX CACHE PRIORITY([Cliente]Cognome;priorità di cache molto alta).

Si desidera modificare temporaneamente la priorità della cache per i campi di testo [Docs] table memorizzati nel file di dati quando si esegue una ricerca sequenziale:
ADJUST BLOBS CACHE PRIORITY([Docs];Cache priority very high)
QUERY ([Docs];[Docs]Author#"A@") // ricerca sequenziale su un campo non indicizzato
// eseguire diverse altre query o ordini sulla stessa tabella
// al termine, ripristinare la priorità di cache normale
ADJUST BLOBS CACHE PRIORITY ([Docs];Cache priority normal)

Per maggiori dettagli, vi invitiamo a consultare il seguente articolo nella documentazione di 4D v16 R2.