Prendre le contrôle du gestionnaire de cache

Traduit automatiquement de Deepl

4D v16 a introduit un nouveau gestionnaire de cache entièrement optimisé pour la gamme de produits 64 bits. 4D v16 R2 donne le pouvoir à nos développeurs 4D avancés de prendre le contrôle par eux-mêmes !

L’algorithme interne du gestionnaire de cache est basé sur un concept de priorité associé à chaque type d’objet à stocker dans la mémoire cache. Par défaut, l’algorithme du gestionnaire de cache attribue une valeur de priorité plus élevée pour un index que pour des enregistrements. Et les objets récemment utilisés (enregistrements ou index) ont une priorité plus élevée pour rester dans le cache que les objets qui n’ont pas été utilisés au cours des deux derniers jours, etc…

Depuis 4D v16 R2, le développeur 4D peut prendre le contrôle. Au démarrage, vous pouvez régler avec précision les priorités dans le cache pour vos tables, index et « gros objets » en fonction des besoins de votre application. En plus de cela, vous pouvez même définir des exceptions pour un seul processus. Lorsque des opérations spécifiques doivent être exécutées, comme par exemple une importation importante, le développeur 4D est le mieux placé pour décider quelle table ou quel index doit avoir la priorité dans le cache pour une période donnée.

Nouvelles commandes pour contrôler la priorité

Un ensemble de nouvelles commandes permet des ajustements très fins : pour chaque index, chaque table, même avec des différences pour l’enregistrement principal et les « grosses parties » (blobs / texte / images / objets).

Définir au démarrage la priorité pour tous les processus

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

Augmenter ou diminuer la priorité définie au démarrage pour le processus en cours

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

Lire la valeur de la priorité interne (à des fins de débogage uniquement)

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

beware Ces commandes doivent être utilisées avec précaution car elles peuvent affecter les performances de la base de données.

Exemples

Dans la méthode de la base de données On Startup méthode de base de données, vous voulez définir une priorité élevée pour les [Customer]LastName index de champ :
SET INDEX CACHE PRIORITY([Client]LastName ;Priorité de cache très élevée)

Vous souhaitez modifier temporairement la priorité du cache pour les champs texte [Docs] table stockés dans le fichier de données lors de l’exécution d’une recherche séquentielle :
ADJUST BLOBS CACHE PRIORITY([Docs] ;Priorité de cache très élevée)
QUERY ([Docs] ;[Docs]Auteur#"A@") // recherche séquentielle sur un champ non indexé
// exécuter plusieurs autres requêtes ou commandes sur la même table
// une fois terminé, revenir à la priorité de cache normale
ADJUST BLOBS CACHE PRIORITY ([Docs] ;Priorité de cache normale)

Pour plus de détails, nous vous invitons à consulter l’article suivant dans la documentation de 4D v16 R2.