Dans le cadre d'opérations de chargement de données dans un serveur IQ via la commande LOAD TABLE, ce document expose l'impact de quelques éléments de configurations de l'instance. Les paramètres de configuration étudiés sont :
La version étudiée de Sybase IQ est la version 12.7 ESD#5 64 bit sur une machine Solaris X86 AMD Opteron.
start_asiq -v2
start_asiq -v2 9.0.2.2056 Sybase IQ/12.7.0/080707/P/ESD 5/Sun_Opteron/OS 5.10/64bit/2008-07-07
La table à charger est très diversifiée dans les typages des colonnes : elle contient des colonnes de type date, int, float, varchar, datetime.
(sa)> sp_iqhelp QUOTE
CREATE TABLE IDW.QUOTE
(
RETRIEVAL_DTE date NOT NULL,
INSTRUMENT_ID int NOT NULL IQ UNIQUE(500000),
SOURCE_ID varchar(12) NOT NULL IQ UNIQUE(500),
QUOTE float NULL,
QUOTE_DATE date NULL,
UNIT_PRICE float NULL,
ACCRUED_INTEREST float NULL,
ACCRUED_INTEREST_DATE date NULL,
CREATED_BY varchar(20) NOT NULL,
CREATED_ON datetime NOT NULL,
UPDATED_BY varchar(20) NULL,
UPDATED_ON datetime NULL,
PRIMARY KEY(INSTRUMENT_ID, RETRIEVAL_DTE, SOURCE_ID)
) ;
3 indexes en plus de la clé primaire sont créés sur cette table :
create lf index QUOTE_lf_1 on IDW.QUOTE(RETRIEVAL_DTE) create lf index QUOTE_lf_2 on IDW.QUOTE(SOURCE_ID) create hg index QUOTE_hg_1 on IDW.QUOTE(INSTRUMENT_ID)
La densité est quasi proche de 1 à l'issue de chaque chargement.
(sa)> sp_iqrowdensity 'table IDW.QUOTE'; Execution time: 0.004 seconds
Tablename Column Name IndexType Density ------------------------------------------------------ IDW.QUOTE RETRIEVAL_DTE Two Byte FP 1.0 IDW.QUOTE SOURCE_ID Two Byte FP 1.0 IDW.QUOTE QUOTE Flat style FP 1.0 IDW.QUOTE UNIT_PRICE Flat style FP 1.0 IDW.QUOTE ACCRUED_INTEREST Flat style FP 1.0 IDW.QUOTE ACCRUED_INTEREST_DATE Two Byte FP 1.0 IDW.QUOTE QUOTE_DATE Two Byte FP 1.0 IDW.QUOTE CREATED_BY Flat style FP 1.0 IDW.QUOTE INSTRUMENT_ID Flat style FP 1.0 IDW.QUOTE CREATED_ON Flat style FP 1.0 IDW.QUOTE UPDATED_BY Flat style FP 1.0 IDW.QUOTE UPDATED_ON Flat style FP 1.0
La taille du fichier en entrée de la commande LOAD TABLE est un fichier de 1,1 Gb contenant environ 8 970 000 lignes.
DAS_U1_ASQ> ls -l QUOTE_2007Q4.bcpc
-rw-r--r-- 1 sybase dba 1134379064 Mar 19 11:05 QUOTE_2007Q4.bcpc
Nombre de lignes :
DAS_U1_ASQ > wc -l QUOTE_2007Q4.bcpc
8970523 QUOTE_2007Q4.bcpc
Dans la configuration des tests, le serveur IQ est défini avec une taille de page à 64k et une taille de bloc à 4k : IQ Page Size 64k / IQ Block Size 4k.
Le paramètre load_memory_mb ne rentre pas dans le cadre de l'étude et demeure à sa valeur par défaut : 0.
load_memory_mb = default block size = default IQ page size 64K
Pour chaque paramètre, trois mesures de durée sont réalisées et la moyenne des 3 prises en compte.
À l'installation du serveur, la toute première mesure indique une durée de chargement de 34 secondes. Le tableau suivant montre de quelle manière va évoluer cette durée en fonction des valeurs choisies pour définir les tailles des caches 'Main' et 'Temp', tailles définies dans le fichier de configuration du serveur IQ.
| - | - | Temp (iqtc) | ||||
|---|---|---|---|---|---|---|
| - | - | 0 | 100 | 500 | 1000 | 1500 |
| Main (iqmc) | 0 | 34.0 | 31.0 | 29.3 | 28.7 | 29.0 |
| 100 | 33.7 | 30.7 | 28.7 | 29.0 | 29.0 | |
| 500 | 34.7 | 30.3 | 29.3 | 29.0 | 29.0 | |
| 1000 | 34.3 | 31.0 | 29.0 | 29.0 | 29.0 | |
| 1500 | 34.2 | 30.8 | 29.1 | 29.0 | 29.0 | |

Trois éléments importants à noter dans les résultats :
Dans les études qui suivent, les tests sont réalisés avec les paramètres mémoire suivants pour les caches Main et Temp :
iqtc = 1500 iqmc = 1000
Le même test de chargement est réalisé en recréant la table avec l'option minimize_storage
(sa)> set option minimize_storage = 'on';
(sa)> sp_iqrowdensity 'table IDW.QUOTE';
Tablename Column Name IndexType Density ------------------------------------------------------ IDW.QUOTE RETRIEVAL_DTE One Byte FP 1.0 IDW.QUOTE SOURCE_ID Two Byte FP 1.0 IDW.QUOTE QUOTE Flat style FP 1.0 IDW.QUOTE UNIT_PRICE Flat style FP 1.0 IDW.QUOTE ACCRUED_INTEREST Flat style FP 1.0 IDW.QUOTE ACCRUED_INTEREST_DATE One Byte FP 1.0 IDW.QUOTE QUOTE_DATE Two Byte FP 1.0 IDW.QUOTE CREATED_BY One Byte FP 1.0 IDW.QUOTE INSTRUMENT_ID Flat style FP 1.0 IDW.QUOTE CREATED_ON One Byte FP 1.0 IDW.QUOTE UPDATED_BY Flat style FP 1.0 IDW.QUOTE UPDATED_ON Two Byte FP 1.0
Le test n'a pas montré de différence significative, la durée de chargement est toujours de 29 à 30 secondes.
Dans les tests précédents, le dbspace temporaire temp store était localisé sur un volume de type ZFS configuré comme suit (recordsise à 8k) :
zfs list -o mountpoint,recordsize /test MOUNTPOINT RECSIZE /test 8K
Il n'a pas été noté de gains notables sur les chargements massifs avec la commande LOAD TABLE en positionnant le dbspace temporaire temp store sur un support de type raw device ou en mémoire RAM (/tmp).
Le temps de chargement est toujours de 29 secondes, alors que la documentation officielle préconise de localiser les dbspaces temporaires sur des supports de type raw device pour des performances optimales.
| Version | Date | Commentaires |
|---|---|---|
| 1.0 | 12/2009 | Version initiale |
Sybase
IQ 12.7 BOL : Chargement des données avec la commande LOAD TABLE IQ
Sybase FR