Insérer l'algorithme 2
L'algorithme INSERT 2 ( IAG2 ) peut augmenter le débit des instructions INSERT, réduire la journalisation et réduire le temps écoulé de classe 2 et le temps CPU de classe 2 dans certaines conditions.
Les types de charges de travail qui bénéficient le plus de l' IAG2, comprennent les charges de travail transactionnelles traditionnelles qui insèrent simultanément des millions de lignes dans une ou plusieurs tables d' Db2® , et les nouveaux types de charges de travail qui impliquent des millions de points de données (par exemple, les applications de l'Internet des objets ( IoT ) telles que les applications météorologiques qui collectent simultanément un volume énorme de données provenant de différents endroits). Les charges de travail composées de plusieurs tâches par lots qui insèrent simultanément des données dans le même ensemble de tables bénéficieront des plus grandes améliorations de performances.
- Permet d'insérer rapidement un volume considérable de données, ce qui rend ces données disponibles pour une utilisation immédiate par des requêtes ad hoc
- Élimine les conflits de page de données qui peuvent survenir lorsque le même emplacement pour insérer une ligne est attribué à plusieurs agents
- Élimine les conflits de mappage de l'espace qui peuvent généralement se produire lorsque plusieurs agents insèrent des données à la fin des tables ou des partitions
IAG2 réduit les conflits d'espace pour les charges de travail qui insèrent un volume élevé de données en pré-attribuant les pages de données. IAG2 accumule les numéros de page des pages de données qui ont suffisamment d'espace pour insérer de nouvelles lignes dans une zone appelée algorithme d'insertion 2 pipe de page en mémoire. Db2 ajoute de nouveaux numéros de page à la barre de page si nécessaire. Lorsqu'une ligne doit être insérée, l' Db2 e sélectionne un numéro de page dans le tube de page, ce qui garantit qu'un espace suffisant est disponible pour la nouvelle ligne.
Quand utilise-t-on l' IAG2?
IAG2 peut être activé pour un espace de table spécifique en spécifiant la clause INSERT ALGORITHM 2 de l'instruction CREATE TABLESPACE ou ALTER TABLESPACE. Le paramètre DEFAULT_INSERT_ALGORITHM du sous-système contrôle l'activation d' IAG2 s au niveau du sous-système.
IAG2 est utilisé uniquement avec les espaces de table universels qui utilisent l'option MEMBER CLUSTER. Les opérations d'insertion sur les espaces de tables non universels et les espaces de tables universels qui n'utilisent pas l'option MEMBER CLUSTER utilisent l'algorithme d'insertion 1 ( IAG1 ). IAG2 prend également en charge LOAD SHRLEVEL CHANGE pour les espaces de table universels qui utilisent MEMBER CLUSTER.
Dans certaines conditions, IAG2 n'est pas utilisé même s'il est explicitement défini et que toutes les conditions requises sont remplies. Par exemple, si une table ou un espace de table est verrouillé ou si un verrouillage par escalade se produit, IAG2 n'est pas utilisé et l'application revient à utiliser IAG1.
Dans les situations où l' IAG2 e est désactivé et qu'une opération d'insertion revient à utiliser l' IAG1, le message d'erreur suivant est émis : « DSNI055I ». Ce message et les codes de raison qui l'accompagnent fournissent des informations détaillées sur les conditions qui ont conduit l'instruction INSERT à revenir à l'utilisation de IAG1.
Cas d'utilisation qui offrent les meilleurs avantages en termes de performances
Bien que l' IAG2 e puisse améliorer les performances des insertions simultanées de gros volumes, certaines situations offrent de plus grands avantages que d'autres.
Par exemple, l'avantage le plus significatif en termes de performance peut être observé lorsqu'un grand nombre de tâches insèrent des données simultanément dans la même table ou le même ensemble de tables. Chaque fil étant pré-affecté à une page de données différente dans laquelle il doit insérer des données, les retards liés aux conflits entre les pages de données et la carte de l'espace sont éliminés.
Cependant, l' IAG2, n'offre pas d'avantage significatif en termes de performances lorsqu'un petit nombre de tâches par lots insèrent plusieurs lignes en série. Dans ce cas, les lignes sont insérées une par une, ce qui signifie que l'espace utilisable dans l'espace de la table n'est consommé qu'une ligne à la fois. Comme il n'y a pas de conflit d'espace, la pré-affectation des pages de données n'apporte que peu d'avantages.
- Pour déterminer si les performances de vos charges de travail peuvent être améliorées par l' IAG2, évaluez les suspensions de classe 3 des rapports comptables. Si vous constatez une longue attente dans les conflits de verrouillage de page ou les conflits globaux provenant de pages de données ou de pages de carte de l'espace, l' IAG2 pourrait réduire ces délais.
- Dans la plupart des cas, l'utilisation d' IAG2 s ne devrait pas augmenter de manière significative l'utilisation de l'espace. Cependant, lorsque vous utilisez IAG2 avec des tables qui ne connaissent pas un volume élevé d'activité INSERT, l'utilisation de l'espace peut augmenter en prévision d'une activité INSERT importante par Db2. IAG2 étant utilisé uniquement pour les espaces de tables qui ont été définis avec l'option MEMBER CLUSTER, évaluez la nécessité de cette option sur les tables qui ont une faible activité INSERT. La suppression de cette option forcera l'utilisation d' IAG1, évitant ainsi une utilisation accrue de l'espace. Sinon, si l'option MEMBER CLUSTER est requise, émettez une instruction ALTER TABLESPACE et remplacez l'option INSERT ALGORITHM par 1 pour éviter l'augmentation de l'espace.
Facteurs pouvant affecter les performances de l'insert
Bien que l' IAG2 élimine les conflits de page de données et de carte d'espace dans des conditions optimales, d'autres facteurs tels que les conflits d'index et l'attente d'écriture du journal peuvent également affecter négativement les performances des insertions simultanées. IAG2 n'a aucun effet atténuant sur ces problèmes.
De plus, les performances d'insertion peuvent être affectées par des problèmes de performances généraux tels que les goulots d'étranglement du réseau et les problèmes de pools de mémoire tampon, la fonction de couplage et le journal d' Db2 .

Que se passe-t-il si l' IAG2 e est désactivée?
Si IAG2 devient inaccessible, Db2 émet le message DSNI055I et un code de retour qui indique la raison de l'échec. Si la panne a été causée par une situation temporaire, telle qu'une escalade de verrouillage ou un problème de stockage de la file d'attente de pages, ou une condition d'espace insuffisant pouvant nécessiter une intervention manuelle, Db2 tente automatiquement de réactiver IAG2 à intervalles prédéfinis en attendant que la condition de panne soit résolue. La première tentative de réactivation d' IAG2 s se produit 75 secondes après la défaillance initiale. Les tentatives ultérieures se poursuivront à intervalles de plus en plus rapprochés, jusqu'à une fois par heure.
Si IAG2 est désactivé en raison d'une situation qui doit être corrigée manuellement, par exemple lorsque la quantité maximale d'espace est atteinte, il est possible qu' Db2 ne tente pas automatiquement de réactiver IAG2. Examiner les messages des services de niveau inférieur pour déterminer la cause de la panne. Dans ce type de situation, l' IAG2 s seront réactivées lors de la première insertion après l'ajout d'espace supplémentaire.
Lorsque l' IAG2, est réactivée automatiquement sans intervention manuelle, le message « DSNI087I » est émis. Pour les situations qui nécessitent que vous ajoutiez de l'espace, l' DSNI087I e n'est pas nécessairement délivrée.
