SelectEtoile : Base de connaissance SGBD

Posts Tagged '15'

Paramètre 'optimizer level'

 Version

 A partir de la version 15.0.3 ESD 2 pour bénéficier des changements de l'optimiseur, il fallait utiliser un set option. A partir de la version 15.0.3 ESD 3, il est possible d'utiliser le paramètre de configuration sp_configure 'optimizer level'

sp_configure 'optimizer level:

 Par défaut l'option à pour valeur "ase_default". C'est à dire que les modifications effectuées sur l'optimiseur à partir de l'ESD1 ne sont pas prises en compte. Il faut positionner l'option à "ase_current" pour que tous les changements soient effectifs.

 

1> sp_options show
2> go

Category: Query Tuning

 name                                                                                              currentsetting defaultsetting scope
 ------------------------------------------------------------------------------------------------- -------------- -------------- -----
 optlevel                                                                                          ase_current    ase_current        3
 optgoal                                                                                           allrows_dss                                                                       1              1                  7
 no_stats_distinctness: allow duplicate estimates without stats                                    0              0                  7
 conserve_tempdb_space: keep estimated tempdb below resource granularity                           1              1                  7
 search_engine_timeout_factor                                                                      1              1                  7
 cr559034: avoid preferring non-covering over covered index scans                                  1              1                  7
 allow_wide_top_sort: allow max row size to be exceeded for top sorts                              1              1                  7
 cr562947: OPTLEVEL EXCEPTION SEE CR - allow cursor table scans                                    1              1                  7
 data_page_prefetch_costing: clustered row bias added                                              1              1                  7
 mru_buffer_costing: wash size buffer limit for MRU                                                1              1                  7
 cr546125: implicitly updatable cursor non-unique index scan                                       1              1                  7
 cr545771: improves multi-table outer-join and semi-join costing                                   1              1                  7
 cr545653: avoid inner table buffer estimate starvation                                            1              1                  7
 cr545585: covered iscan CPU costing too expensive                                                 1              1                  7
 cr545379: disallow reformatting on user forced index scan                                         1              1                  7
 cr545180: avoid reformat with no sargs if useful index exists                                     1              1                  7
 cr545059: reduce usage of buffer manager optimization sorts                                       1              1                  7
 cr544485: mark subquery join predicates with distinct view as sargs                               1              1                  7
 cr556728: facilitates merge joins between small tables                                            1              1                  7
 cr534175: compute GROUP BY worktables in nested subqueries only once when possible                1              1                  7
 cr531199: increases the number of useful nested loop join plans considered                        1              1                  7
 cr500736: supports nocase sortorder columns in mergejoin and hashjoin keys                        1              1                  7
 cr487450: improves DISTINCT costing of multi-table outer joins and/or semi-joins                  1              1                  7
 cr467566: allow abstract plans and statement cache to work together                               1              1                  7
 avoid_bmo_sorts: avoid sorts used only for buffer manager optimization                            1              1                  7
 cr497066: infer the nullability of isnull() by looking at its parameters                          1              1                  7
 cr421607: support NULL=NULL merge and hash join keys                                              1              1                  7
 distinct_exists_transform: transform distinct to semi-join                                        1              1                  7
 cr552795: eliminate duplicate rows during reformatting when they're not needed                    1              1                  7
 outer_join_costing: outer join row counts and histogramming                                       1              1                  7
 join_duplicate_estimates: avoid overestimates of dups in joins                                    1              1                  7
 auto_temptable_stats: auto generation of statistics for #temptables                               1              1                  7
 use_mixed_dt_sarg_under_specialor: allow special OR in case of mixed datatype sargs in IN/OR list 1              1                  7
 full_index_filter: eliminate non-covered full index scan strategies                               0              0                  7
 timeout_cart_product: timeout queries involving cartesian product and more than 5 tables.         1              1                  7
 in_list_general_or: optimize in lists under general ors                                           1              1                  7
 multi_attribute_density_costing: Use legacy multi-attribute density costing technique             0              0                  7
 disable_nonbin_sortorder_interpolation: turn off non-binary sort order interpolation costing      0              0                  7
 cr611385: enable ScanValues costing                                                               1              1                  7
 cr574923: extend search space hidden by greedy algorithm                                          1              1                  7
 cr614461: enable in-order rid scan estimates                                                      1              1                  7
 cr611637: avoid duplicate NULL selectivity                                                        1              1                  7
 cr619965: dense frequency for 'Jan  1 1900 12:00:00:000AM'                                        1              1                  7
 cr439123: 0.0 range density for low cardinality tables                                            1              1                  7
 cr619756: DISTINCT, EXISTS, and GROUP BY row estimation                                           1              1                  7
 cr624835: correlated equi-join constant costing                                                   1              1                  7
 cr628311: subquery decorrelated store index costing                                               1              1                  7
 cr628845: ORDER BY consumes parallel bmo sorts                                                    1              1                  7

 Je vous laisse le soin de comparer les différences entre ase_current et ase_default...... Innocent

 Le paramètre 'optimizer level' permet d'activer les changements de l'optimiseur de façon plus personnelle et ceux pas divers moyens (login script, paramètre de session, server...).

 Les valeurs possibles pour 'optimizer level' sont:

     ase_current: Active à tous les changements de l'optimiseur à partir de l'ESD actuelle.
    ase_default: désactive toutes les modifications optimiseur depuis la version de base. C'est la valeur par défaut, et correspond actuellement à  ASE 15.0.3 ESD # 1.
    ase1503esd2: Active à tous les changements de l'optimiseur à partir d'ASE 15.0.3 ESD # 2.
    ase1503esd3: Active à tous les changements de l'optimiseur à partir d'ASE 15.0.3 ESD # 3.
    ase1503esd4: Active à tous les changements de l'optimiseur à partir d'ASE 15.0.3 ESD # 4.

L'option existe aussi à partir de ASE 15.5 ESD 2

Pour plus d'information, C'est ici 

 Faut-il l'activer?

 Oui, Il est recommandé d'utiliser le niveau d'optimiseur ase_current. Cependant pour des environnements existants, des tests de performance sont vivement conseillés... 

SYBASE IQ - Migration 12.7 vers 15.3

Il existe plusieurs façons de migrer une instance SYBASE IQ 12.7 (ou 12.6 d'ailleurs) vers une 15. La bonne et la mauvaise !!! HUMOUR  !!!!

On peut soit utiliser l'utilitaire iqunload, soit procéder sur une nouvelle instance en version cible (15.3 par exemple) et recréer puis alimenter les tables.

 

Migration avec l'utilitaire iqunload (option -au)

Post Migration

Nous avons donc une instance 12.7 que l'on nommera MONASIQ127 pour notre exemple et que l'on va migrer en 15.3.

Il nous faut une distrib 15.3 installée sur la même machine que la 12.7. (Distrib /sybase/product/IQ153)

Infos divers sur la 12.7 :

1> select @@servername
2> go
 @@servername
 --------------------------------------------------------------------------------------------------------------------------------
 MONASIQ127

(1 row affected)

1> select @@version
2> go
 @@version
 --------------------------------------------------------------------------------------------------------------------------------
 Sybase IQ/12.7.0/090824/P/ESD 7/Enterprise Linux64 - amd64,Opteron64,X86_64/2.4.21-27.0.1.ELsmp/64bit/2009-08-24 16:32:40

(1 row affected)

1> sp_iqdbspace
2> go
 Name
         Path                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
         SegmentType RWMode Usage  DBSSize Reserve StripeSize
         BlkTypes                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
         FirstBlk             LastBlk
 --------------------------------------------------------------------------------------------------------------------------------
         --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
         ----------- ------ ------ ------- ------- ----------
         --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
         -------------------- ------------------------
 IQ_SYSTEM_MAIN
         /sybase/MONASIQ127/device/mainspace1.iq                                                                                                                                                                                                                                                                                                                                                                                                                        
         MAIN        RW          1 500M    0B      8K
         1H,64F,32D,128M                                                                                                                                                                                                                                                                                                                                                                                                                                                              
                            1                    64000
 IQ_SYSTEM_TEMP
         /sybase/MONASIQ127/device/tempspace1.iqtemp                                                                                                                                                                                                                                                                                                                                                                                                                    
         TEMPORARY   RW          1 200M    0B      8K
         1H,64F,16A                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
                            1                    25600

(2 rows affected)
(return status = 0)
 

 

Avant de commencer la migration, il faut stopper l'instance 12.7.

Mise en place de l'environnement 15.3 pour lancer l'utilitaire iqunload :

export SYBASE=/sybase/product/IQ153
. $SYBASE/IQ-15_3/IQ-15_3.sh
     Sourcing SYBASE.sh

 

Lancement de la migration

se placer dans le répertoire contenant le .db de l'instance à migrer et lancer la commande suivante  :

  • iqunload  -au -c"log=iqunload.log;DBF=MONASIQ127.db;uid=sa;pwd=XXXXXX"

 

Sybase IQ Unload Utility Version 15.3.0.6056
Connecting and initializing


=============================================================
IQ server starting with:
      1 connections         (       -gm )
     26 cmd resources       ( -iqgovern )
    447 threads             (     -iqmt )
    512 Kb thread stack size   (   -iqtss  )
  228864 Kb thread memory size ( -iqmt * -iqtss )
      8 IQ number of cpus  ( -iqnumbercpus )
      0 MB maximum size of IQMSG file ( -iqmsgsz )
      0 copies of IQMSG file archives ( -iqmsgnum )
=============================================================



=============================================================
IQ server starting with:
      1 connections         (       -gm )
     26 cmd resources       ( -iqgovern )
    447 threads             (     -iqmt )
    512 Kb thread stack size   (   -iqtss  )
  228864 Kb thread memory size ( -iqmt * -iqtss )
      8 IQ number of cpus  ( -iqnumbercpus )
=============================================================

Wrapping iqmsg: Disabled.
Wrapping iqmsg: Disabled.


=============================================================
IQ server starting with:
      1 connections         (       -gm )
     26 cmd resources       ( -iqgovern )
    447 threads             (     -iqmt )
    512 Kb thread stack size   (   -iqtss  )
  228864 Kb thread memory size ( -iqmt * -iqtss )
      8 IQ number of cpus  ( -iqnumbercpus )
      0 MB maximum size of IQMSG file ( -iqmsgsz )
      0 copies of IQMSG file archives ( -iqmsgnum )
=============================================================

2011-10-06 10:26:57 Unloading user and group definitions
2011-10-06 10:26:57 Unloading table definitions
2011-10-06 10:26:58 Unloading index definitions
2011-10-06 10:26:58 Unloading functions
2011-10-06 10:26:58 Unloading view definitions
2011-10-06 10:26:58 Unloading procedures
2011-10-06 10:26:58 Unloading triggers
2011-10-06 10:26:58 Unloading SQL Remote definitions
2011-10-06 10:26:58 Unloading MobiLink definitions
2011-10-06 10:26:58 Creating new database
Warning: Using default value for -iqmc or -iqtc is insufficient for most applications
Warning: Using default value for -iqmc or -iqtc is insufficient for most applications
Using licenses from: /sybase/product/IQ153/SYSAM-2_0/licenses/*.lic:/sybase/MONASIQ127/device/*.lic
Checked out graced license for 8 IQ_CORE (2011.0506) will expire Sat Nov  5 00:00:00 2011.
Failed to obtain license(s) for IQ_CORE feature from License Server 27002@adbprdlm02.
Insufficient IQ_CORE CPU licenses. Sybase IQ requires 8 IQ_CORE ("DT") CPU licenses for use on this machine but only 2 could be obtained. Check whether additional licenses are available at the Sybase Product Download Center.
License feature name:  IQ_CORE
License search path:   /sybase/product/IQ153/SYSAM-2_0/licenses/*.lic:/sybase/MONASIQ127/device/*.lic:
FLEXnet Licensing error:-4,132
For further information, refer to the Sybase Software Asset Management website at http://www.sybase.com/sysam
WARNING: Sybase IQ functionality that requires the IQ_CORE license will be disabled on Sat Nov  5 00:00:00 2011, unless a suitable IQ_CORE license is obtained before that date.
2011-10-06 10:27:11 Reloading user and group definitions
2011-10-06 10:27:11 Reloading table definitions
2011-10-06 10:27:11 Reloading index definitions
2011-10-06 10:27:11 Reloading functions
2011-10-06 10:27:11 Reloading view definitions
2011-10-06 10:27:11 Reloading procedures
2011-10-06 10:27:11 Reloading triggers
2011-10-06 10:27:11 Reloading SQL Remote definitions
2011-10-06 10:27:11 Reloading MobiLink definitions
Successfully backed up file "/sybase/MONASIQ127/device/MONASIQ127.db" by renaming it to "/sybase/MONASIQ127/device/MONASIQ127.db.before_schema_reload".
Successfully backed up file "/sybase/MONASIQ127/log/MONASIQ127.iqmsg" by renaming it to "/sybase/MONASIQ127/log/MONASIQ127.iqmsg.before_schema_reload".
Successfully reloaded schema of database "/sybase/MONASIQ127/device/MONASIQ127.db".

Checked in graced license for IQ_CORE (2012.06110).
 

 

Validation de la migration

L'instance est maintenant migrée mas arrêtée. Nous allons repositionner les variables d'environnement pour pointer vers la 15 puis démarrer l'instance.

Mise en place de l'environnement 15.3 et lancement de la commande suivante :

  • start_iq @/sybase/MONASIQ127/cfg/MONASIQ127.cfg /sybase/MONASIQ127/device/MONASIQ127.db

Starting server MONASIQ127 on moineau at port 11021 (10/06 10:43:32)

Run Directory       : /sybase/MONASIQ127/device
Server Executable   : /sybase/MONASIQ127/product/IQ-15_3/bin64/iqsrv15
Server Output Log   : /sybase/MONASIQ127/log/MONASIQ127.0002.srvlog
Server Version      : 15.3.0.6056/GA
Open Client Version : N/A
User Parameters     : '@/sybase/MONASIQ127/cfg/MONASIQ127.cfg' '/sybase/MONASIQ127/device/MONASIQ127.db'
Default Parameters  :
 

 

=============================================================
IQ server starting with:
     50 connections         (       -gm )
     26 cmd resources       ( -iqgovern )
    496 threads             (     -iqmt )
    512 Kb thread stack size   (   -iqtss  )
  253952 Kb thread memory size ( -iqmt * -iqtss )
      8 IQ number of cpus  ( -iqnumbercpus )
      0 MB maximum size of IQMSG file ( -iqmsgsz )
      0 copies of IQMSG file archives ( -iqmsgnum )
=============================================================

I. 10/06 10:43:33.      Sybase IQ
I. 10/06 10:43:33.       Version 15.3
I. 10/06 10:43:33.        (64bit mode)
I. 10/06 10:43:33. Copyright 1992-2011 by Sybase, Inc. All rights reserved
I. 10/06 10:43:33.
I. 10/06 10:43:33. 8 logical processor(s) on 2 physical processor(s) detected.
I. 10/06 10:43:33. Maximum number of physical processors the server will use: 2
I. 10/06 10:43:33. Running Linux 2.6.18-194.11.4.el5 #1 SMP Fri Sep 17 04:57:05 EDT 2010 on X86_64
I. 10/06 10:43:33. Server built for X86_64 processor architecture
I. 10/06 10:43:33. 49152K of memory used for caching
I. 10/06 10:43:33. Minimum cache size: 49152K, maximum cache size: 262144K
I. 10/06 10:43:33. Using a maximum page size of 4096 bytes
I. 10/06 10:43:34. Starting database "MONASIQ127" (/sybase/MONASIQ127/device/MONASIQ127.db) at Thu Oct 06 2011 10:43
I. 10/06 10:43:35. Transaction log: MONASIQ127.log
I. 10/06 10:43:35. Starting checkpoint of "MONASIQ127" (MONASIQ127.db) at Thu Oct 06 2011 10:43
I. 10/06 10:43:35. Finished checkpoint of "MONASIQ127" (MONASIQ127.db) at Thu Oct 06 2011 10:43
I. 10/06 10:43:37. Database "MONASIQ127" (MONASIQ127.db) started at Thu Oct 06 2011 10:43
I. 10/06 10:43:37. IQ Server MONASIQ127.
I. 10/06 10:43:37. Database server started at Thu Oct 06 2011 10:43
I. 10/06 10:43:37. Trying to start SharedMemory link ...
I. 10/06 10:43:37.     SharedMemory link started successfully
I. 10/06 10:43:37. Trying to start TCPIP link ...
I. 10/06 10:43:37. Starting on port 11021
New process id is 7782
I. 10/06 10:43:42.     TCPIP link started successfully
I. 10/06 10:43:42. Now accepting requests

Server started successfully



Vérification de la version de l'instance MONASIQ127 et lancement d'un checkdb :

 iqisql -U sa -w500 -S MONASIQ127

Password:
1> select @@servername
2> go
 @@servername
 --------------------------------------------------------------------------------------------------------------------------------
 MONASIQ127


(1 row affected)
1> select @@version
2> go
 @@version
 --------------------------------------------------------------------------------------------------------------------------------
 Sybase IQ/15.3.0.6056/110506/P/GA/Enterprise Linux64 - x86_64 - 2.6.9-67.0.4.ELsmp/64bit/2011-05-06 13:27:43

1> checkpoint
2> go

1> sp_iqcheckdb 'verify database'
2> go
 

Vérifier qu'il n'y a pas d'erreur(s) dans le rapport du checkdb.

 

Post Migration

Durant la migration, l'utilitaire iqunload renomme le dbspace IQ_SYSTEM_MAIN en iq_main et crée un nouveau IQ_SYSTEM_MAIN.Il est d'ailleurs possible de préciser le nom du nouveau fichier pour le dbspace IQ_SYSTEM_MAIN (-ms_filename)

Toutes les données "applicatives" sont maintenant sur iq_main. SYBASE recommande depuis la SYBASE IQ 15 de séparer les données applicatives et systèmes.

Les données système reste sur IQ_SYSTEM_MAIN et les données applicatives sur iq_main. D'ailleurs, il est souhaitable de placer les options suivante sur SYBASE 15 pour une bonne gestion de ces dbspaces :

1> REVOKE CREATE ON IQ_SYSTEM_MAIN FROM PUBLIC;
2> go
1> GRANT CREATE ON iq_main to PUBLIC;
2> go
1> SET OPTION PUBLIC.DEFAULT_DBSPACE = 'iq_main';
2> go
1> SET option PUBLIC.MINIMIZE_STORAGE='On'
2> go

 

 

Migration vers un SYBASE IQ 15 différent (voire distant)

 

Introduction

Nous allons utiliser l'utilitaire iqunload (option -n) pour extraire du serveur SYBASE IQ 12.7 la structure des objets, les options, les logins vers un script SQL.

Nous lancerons ce script sur l'instance IQ 15.3 pour recréer les objets. Évidemment, au préalable, nous avons créer la database comme souhaitée. Comme évoqué au dessus, SYBASE recommande de créer un dbspace différent de IQ_SYSTEM_MAIN et définir par défaut celui-ci pour PUBLIC.

Il faudra enfin alimenter les tables en utilisant INSERT LOCATION.

Dans notre exemple, nous avons une instance MONASIQ127 que l'on va migrer vers une instance MONASIQ153 sur la même machine. Bien sur il est très simple de faire la même chose sur une instance SYBASE IQ 15 distante.

 

Post Migration

Nous avons donc :

  • une instance SYBASE IQ 12.7 nommée MONASIQ127 (SYBASE : /sybase/MONASIQ127/product)
  • une instance 15.3 nommée MONASIQ153 (SYBASE : /sybase/MONASIQ153/product)

Sourcer l'environnement SYBASE IQ 15

export SYBASE=/sybase/product/IQ153
. $SYBASE/IQ-15_3/IQ-15_3.sh
     Sourcing SYBASE.sh

Dans ce cas, il ne faut pas arrêter l'instance SYBASE IQ 12.7

Il faut déplacer les fichiers (opttemp.sql,optdeflt.sql,unload.sql,unloadold.sql) permettant l'extraction des objets de la 15 vers la 12.7.

De /sybase/MONASIQ153/product/IQ-15_3/unload vers /sybase/MONASIQ127/product/ASIQ-12_7/scripts

 

Extraction du script reload.sql

Lancer la commande suivante  :

  • iqunload -n -c "UID=DBA;PWD=SQL;DBF=/sybase/MONASIQ127/device/MONASIQ127.db;ENG=MONASIQ127;links=tcpip(host=machine;port=9999)" -r "/sybase/MONASIQ153/log/reload.sql"

Exemple de ce que contient le fichier reload.sql :

[...]

-------------------------------------------------
--   Create tables
-------------------------------------------------


message dateformat( now(), 'yyyy-mm-dd hh:nn:ss' ) || ' ' || lang_message( 18478 ) type info to client;

CREATE TABLE "sa"."ta" (
    "c1"                             varchar(3000) NOT NULL
   ,"c2"                             char(3000) NOT NULL
)
go

commit work
go


-------------------------------------------------
--   Create indexes
-------------------------------------------------


message dateformat( now(), 'yyyy-mm-dd hh:nn:ss' ) || ' ' || lang_message( 18480 ) type info to client;

commit work
go

[...]

 

Création de la structure des objets, des options et des logins sur le serveur SYBASE IQ 15.3

Vérifier que les variables d'environnement sont bien celles de SYBASE IQ 15 et donc que vous pointez bien vers MONASIQ153.

 dbisql -c "uid=DBA;pwd=SQL" "select @@servername"

 @@servername
---------------------------------------------------------
MONASIQ153

 

Lancer la commande dbisql suivante :

dbisql -c "uid=DBA;pwd=sql" reload.sql |tee -a reload.log

2011-10-07 11:50:55 Reloading user and group definitions
7 row(s) affected
2011-10-07 11:50:55 Reloading table definitions
2011-10-07 11:50:55 Reloading index definitions
2011-10-07 11:50:55 Reloading functions
2011-10-07 11:50:55 Reloading view definitions
2011-10-07 11:50:55 Reloading procedures
1 row(s) affected
2011-10-07 11:50:55 Reloading triggers
2011-10-07 11:50:56 Reloading SQL Remote definitions
2011-10-07 11:50:56 Reloading MobiLink definitions
Execution time: 1.564 seconds

 

Toute la structure de la base de données IQ 12.7 est maintenant créée sur l'instance IQ 15.3

 

 

Chargement des données via INSERT LOCATION

 

 

 

 

 

 

 

Pb de performances suite à migration en SYBASE 15

Cet article résume quelques problèmes que l'on a eu lors de la migration de serveurs SYBASE 12.0 / 12.5 en 15. Tous les problèmes rencontrés ont été corrigés ou un contournement a été trouvé et mis en place.

 

Problème de lenteur sur un batch utilisant massivement des requêtes dynamiques impliquant une table temporaires.

Suite à une migration 12.5 vers 15, nous avons constaté qu'un batch utilisant massivement des requêtes dynamiques était fortement ralenti. En effet, l'application fait des milliers voire des millions de requête / curseur avec une jointure sur une table temporaire (table en #).
Les requêtes étant quasiment les mêmes, nous avons identifié qu'elles recompilaient systématiquement leur plan d'exécution (5 millions sur un run)


L'optimiseur SYBASE recompile les plans des statements car il s'appuit sur les id des tables temporaires. Or, il change à chaque fois. Nous avons alors positionné le traceflag 299 qui permet de ne pas recompiler les statements à chaque exécution. A ce que j'ai compris, ce traceflag permet à l'optimiseur SYBASE d'aller chercher le plan d'un statement en cache par rapport au checksum de la requête et non plus des id des tables.

Pour info, ce traceflag comportait des bugs jusqu'en version 12.5.4. Pourquoi SYBASE ne l'a pas mis par défaut, ca, c'est une autre question !!!!

Nous avons eu un gain énorme en terme de CPU ainsi que les temps d'exécution du batch complet (Avant durée 2h et CPU 80%, Apres 1h et CPU 40%)

Cette analyse a pu se faire grâce à Asemonlogger nouvelle version. Dans l'onglet 'summary' / Tableau 'Summary Statistics' / Paragraphe 'Statement Cache Activity', nous avions autant de NumRecompilesSchemaChanges que de HitCount. 

 

 

Problème de contention sur la table syslogins

Nous avons constaté sur un batch qu'une contention très importante était apparue en version 15. Le batch lance des milliers voire des millions de connexions / déconnexions au serveur SYBASE. La contention se situait sur la ligne concernant le login qui lançait le batch.

Depuis la version 12.5.4, le serveur ASE écrit systématiquement les informations de comptabilité de CPU et IO dans la table syslogins de la base master. (Correction d'un problème : CR485461)

Pour désactiver l'écriture de ces compteurs, nous avons activer le traceflag 8101 (Annule la Correction citée ci-dessus).

En parallèle, nous avons désactiver la mémorisation de la dernière date de login via la commande suivante :

sp_passwordpolicy 'set', 'enable last login updates', 0 

 

Nous avons aussi augmenter les intervalles de temps que SYBASE utilise pour 'flusher' les compteurs CPU et IO lors des connexions.

sp_configure accounting
2> go
Msg 17411, Level 16, State 1:
Server 'DATASERVER', Procedure 'sp_configure', Line 322:
Configuration option is not unique.

 Parameter Name                 Default              Memory Used Config Value         Run Value            Unit                 Type
 ------------------------------ -------------------- ----------- -------------------- -------------------- -------------------- ----------
 cpu accounting flush interval          200                    0          200                  200         clock ticks          dynamic
 i/o accounting flush interval         1000                    0         1000                 1000         clock ticks          dynamic
 

 Nous les avons passer à 2147483647.

 

Problème de contention du le procedure cache

Il arrive que l'on détecte une forte charge CPU sur un serveur ASE 15 à mettre en corrélation avec une contention sur le procedure cache (Resource->rproccache_spin très élevé sur l'onglet spinlocks de Asemonlogger). Cela est du à la nouvelle gestion de l'allocation mémoire dans le procedure cache.

Un contournement proposé par SYBASE est de mettre le traceflag 753 qui permet de revenir au mode de gestion du procedure cache 12.5.

 

 

A suivre....