Assumir o controlo do Gestor de Cache

Tradução automática de Deepl

4D v16 introduziu um novo gestor de cache totalmente optimizado para a linha de produtos de 64 bits. 4D v16 R2 está a dar poder aos nossos programadores 4D avançados para assumirem o controlo por si próprios!

O algoritmo interno do gestor da cache é baseado num conceito de prioridade associado a cada tipo de objecto a armazenar na memória cache. Por defeito, o algoritmo do gestor de cache atribui um valor de prioridade mais elevado para um índice do que para os registos. E os objectos recentemente utilizados (registos ou índices) têm uma prioridade mais elevada para permanecer na cache do que os objectos que não foram utilizados nos últimos dois dias, etc…

A partir de 4D v16 R2, o programador 4D pode assumir o controlo. No arranque, pode afinar as prioridades na cache para as suas tabelas, índices e “objectos grandes “, dependendo das necessidades da sua aplicação. Para além disso, pode até definir excepções para um único processo. Quando existem algumas operações específicas a executar, como por exemplo uma grande importação, o programador 4D é o melhor para decidir que tabela ou índice deve ter a prioridade mais elevada na cache durante um determinado período de tempo.

Novos comandos para controlar a prioridade

Um conjunto de novos comandos permite ajustes muito finos: para cada índice, cada tabela, mesmo com diferenças para o registo principal e as ‘partes grandes’ (blobs / texto / imagens / objectos).

Definir no arranque a prioridade para todos os processos

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

Aumentar ou diminuir a prioridade definida no arranque para o processo actual

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

Ler valor de prioridade interna (apenas para efeitos de depuração)

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

beware Estes comandos devem ser utilizados com cuidado, uma vez que podem afectar o desempenho da base de dados.

Exemplos

No On Startup método de base de dados, pretende estabelecer uma alta prioridade para o [Customer]LastName índices de campo:
SET INDEX CACHE PRIORITY([Cliente]LastName;prioridade Cache muito alta)

Deseja alterar temporariamente a prioridade da cache para os campos de texto [Docs] table armazenados no ficheiro de dados ao executar uma pesquisa sequencial:
ADJUST BLOBS CACHE PRIORITY([Docs];Prioridade de cache muito alta)
QUERY ([Docs];[Docs]Autor#"A@") // pesquisa sequencial num campo não indexado
// executar várias outras consultas ou ordens na mesma tabela
// quando terminar, voltar à prioridade de cache normal
ADJUST BLOBS CACHE PRIORITY ([Docs];Prioridade de cache normal)

Para mais detalhes, convidamo-lo a dar uma vista de olhos ao artigo seguinte na documentação 4D v16 R2.