Nouveautés SQL de la version 7.1

BoTTom |    Changer de couleur
 
La version 6 avait apporté à l'ordre SELECT l'option SKIP LOCKED DATA
 
 cela permettait lors d'une lecture avec verrouillage d'enregistrement,
  c.a.d COMMIT à CS(*CS) ou RS(*ALL), d'ignorer les lignes verrouillées
 
 Cette option a été étendue aux instructions UPDATE et DELETE
 
 EN V7, vous avez, en plus, le choix entre trois comportements :
 
 WAIT FOR OUTCOME 
   Attendre que les lignes soient libérées (COMMIT par exemple)
    cela n'a pas d'effet sur les niveaux de COMMIT inférieurs à CS
 
 USE CURRENTLY COMMITTED 
   Utiliser les valeurs déjà validées
    cela ne peut s'appliquer qu'aux COMMIT niveau CS (sans KEEP LOCKS)
 
 SKIP LOCKED DATA 
  les lignes verrouillées sont ignorées. Comme cette clause est maintenant
   valide avec UPDATE/DELETE, elle peut être utilisée avec tous les niveaux
   de COMMIT, sauf RR (repeatable read)


|    Changer de couleur
 
Vous pouvez en plus préciser cette option :
 
 1/ en fin des ordres, SELECT, UPDATE, DELETE, PREPARE
 
 2/ sur le nouveau paramètre CONACC des commandes de compilation
    (CRTSQLRPGI par ex.) et RUNSQLSTM (pas STRSQL)
 
 3/ sur l'ordre CREATE PROCEDURE|CREATE FUNCTION (ou ALTER)
 
 4/ avec SET OPTION CONACC=*CURCMT | *WAIT | *DFT dans la procédure SQL
 
 5/ dans QAQQINI avec l'option SQL_CONCURRENT_ACCESS_RESOLUTION
 
 
 
 
 la procédure  CANCEL_SQL de QSYS2 permet d'annuler une requête
 
        CALL QSYS2.CANCEL_SQL('123456/QUSER/QZDASOINIT');
 
 


|    Changer de couleur
 
Performances
------------
 
 Global Cache Statistic (GCS)
 
 
  le système stocke des statistiques par colonne de fichier depuis la V5.2
   et elles peuvent être visualisées par System i Navigator.
 
 
  il garde maintenant en mémoire des statistiques globales sur les dernières
   requêtes effectuées, particulièrement le nombre de lignes pour jointure.
 
  ces statistiques ne peuvent, pour l'instant, pas être visualisées.
 
 
 Elles sont utilisées particulièrement par Adaptive Query Processing (AQP)
 
   nouvelle technologie permettant au moteur (SQE uniquement) de changer de
   plan d'accès dynamiquement.
 


|    Changer de couleur
 
   si aucune ligne n'est retournée sous 2 secondes, alors AQP
    compare le nombre actuel de lignes(GCS) avec le nombre estimé et peux
    refaire le plan et relancer la requête avec le nouveau plan.
 
 
 en fonction des statistiques d'utilisation des fichiers (globales ->GCS)
  et deux nouvelles zones RANDOM_READS et SEQUENTIAL_READS dans les
  fichiers statistiques SYSPARTITIONSTAT et SYSINDEXSTAT de QSYS2,
 
  les fichiers les plus fréquement utilisés seront placés automatiquement
  sur disque SSD (si vous en possédez)
 
 ce paramètre peut être forcé lors de la création :
 
    les ordres CREATE TABLE, CREATE INDEX, DECLARE TEMPORARY TABLE
     possèdent une nouvel attribut  UNIT
 
 
           UNIT SSD, demandant à placer, de préférence, cet objet
                      sur un disque SSD
           UNIT ANY (le standard) n'indique pas de préférence


|    Changer de couleur
 
  pour connaitre la préférence -> SELECT MEDIA_PREFERENCE FROM
   TABLE(QSYS2.PARTITION_STATISTICS('BIBLIO', 'TABLE') ) AS temp
  retourne 0 (pas de préférence) ou 255 (préférence pour SSD)
 
  pour connaitre la localisation actuelle -> SELECT UNIT_TYPE FROM
   TABLE(QSYS2.PARTITION_DISKS('BIBLIO' , 'TABLE) AS temp
  retourne 0 (disque "normal") ou 1 (disque SSD)
 
 
 Un fichier pouvait déjà être chargé "manuellement" en mémoire par la
  commande SETOBJACC.
 
 vous pouvez maintenant le déclarer comme devant l'être automatiquement
  à l'aide du paramètre KEEPINMEM(*YES) des commandes CHGPF / CHGLF
 
 le pool mémoire dans lequel garder ce fichier est précisé par l'option de
  QAQQINI : MEMORY_POOL_PREFERENCE = N° ou nom (*SHRPOOLx) depuis TR10/TR2
 
- Les index avec sélection d'enregistrement(avec une clause WHERE)
   sont maintenant pleinement utilisés par SQE
 


|    Changer de couleur
 
- possibilité d'inclure des fonctions agrégées (SUM,AVG,COUNT,VAR,STDDEV)
   dans un index EVI.
 
    CREATE ENCODED VECTOR INDEX EVI01 ON COMMANDES
      (DATCMD, FAM)
            INCLUDE (SUM(QTE) , COUNT(*) )
 
    Avec le groupe PTF SF99701 level 18, les requêtes utilisant
      GROUPING SET, ROLLUP ou CUBE, bénéficient aussi de ce type d'index.
 
 
Nouvelles options de QAQQINI
----------------------------
 
 MEMORY_POOL_PREFERENCE            (voir ci dessus)
 
 ALLOW_ADAPTIVE_QUERY_PROCESSING   Autorise ou non l'activation de AQP
 
 SQL_CONCURRENT_ACCESS_RESOLUTION  (voir plus haut dans ce cour)
 
 


|    Changer de couleur
 
pour une liste complète des options de QAQQINI, voyez
 
http://publib.boulder.ibm.com/infocenter/iseries/v7r1m0/topic/rzajq/qryopt.htm
 
 
rappel: vous pouvez modifier une option en appellant la procédure cataloguée
 OVERRIDE_QAQQINI, depuis la V6R1.
 
 
   -- créé un fichier QAQQINI dans QTEMP
       Call  override_qaqqini('1' ,  ' ', ' ')
 
 
   --  modifie la valeur pour le job
       Call  override_qaqqini('2' , 'SQL_PSEUDO_CLOSE'  , '05')
 
 
   -- détruit le fichier de QTEMP,  retour à la normale
       Call  override_qaqqini('3' ,  ' ', ' ')
 
 


|    Changer de couleur
 
 Avec le niveau 34 de SF99701 ou le niveau 5 de SF99702
 
  Un même index peut être utilisé pour réalisé la sélection ET le tri 
 
   cette technique est nommée IMO (index Merge Ordering)
 
      la requête doit être prévue *FIRSTIO
      ALWCPYDTA ne doit pas être à *NO
      le curseur ne doit pas être flottant (SCROLL CURSOR)
      le nombre de ligne résultat doit être élevé
      la table doit être de grande taille (plus de 500 Millions de lignes)
      l'index doit exister (pas de création temporaire, pas MTI)
 
    L'index doit contenir
 
      1/ les critères de sélection autre que par égalité (<> par ex.)
      2/ puis les critères de sélection par égalité (=)
      3/ enfin les critères de tri.
 
    Une liste triée sera faite en mémoire à partir de l'index.
 





©AF400