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
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.