> Tech > Pour allouer ou ne pas allouer ?

Pour allouer ou ne pas allouer ?

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

Certains développeurs sur l'iSeries utilisent les VARCHAR de manière pas toujours très sensée. J'ai participé à  un projet qui demandait une colonne pour des hyperliens. Cela semblait un bon candidat pour un VARCHAR. Quand on indique qu'une colonne sera du type VARCHAR, on spécifie généralement une valeur correspondant à  la

Pour allouer ou ne pas allouer ?

longueur de champ maximale prévue
pour le champ. Dans notre cas,
c’était 500 – ce n’est pas très long pour
des URL, je sais. Mais cela faisait notre
affaire.
De toute manière, DB2 UDB for
iSeries offre une option peu connue
pour le type de donnée VARCHAR qui
influence grandement son utilisation :
ALLOCATE(n). Par exemple :

CREATE TABLE INTERNET_LOGS
   (URL VARCHAR(500)
   ALLOCATE(105)
   NOT NULL);

Ici, j’ai indiqué une longueur maximale
de 500 pour le champ URL et une
valeur de 105 pour ALLOCATE. Qu’estce
que cela signifie ? Que sans
l’ALLOCATE, DB2 UDB réservera un
bloc de 500 caractères pour chaque
ligne dans cette colonne. Certaines
URL peuvent comporter 500 caractères
mais, dans notre exemple, la plupart
utilisent 105 caractères ou moins.
L’option ALLOCATE signifie que DB2
UDB n’allouera que 105 caractères
pour le champ, avec des conséquences
positives sur l’espace de stockage.
Si la table rencontre une URL de
plus de 105 caractères, cette URL ira
dans une page de débordement qui,
lors de son accès, demandera plus
d’une lecture de page. Nous sommes
donc en train de maximiser l’espace de
stockage pour la majorité des URL tout
en sollicitant fortement les lectures
disque pour le nombre des URL qui
vont dans le débordement. L’astuce
consiste donc à  allouer (ALLOCATE)
statistiquement et minimiser les lectures
disque accrues. Dans notre cas,
nous allons exécuter le SQL suivant :

SELECT LEN,COUNT(*) FROM
  (SELECT LENGTH(TRIM(URL))
    AS LEN FROM INTERNET_LOGS) AS A
    GROUP BY LEN
    ORDER BY LEN;

Cette séquence comptait le
nombre de lignes de chaque longueur
particulière et nous avons représenté
ces données par une courbe dans
Excel. Cela nous a donné une distribution
normale qui nous a aidés à  déterminer
la valeur ALLOCATE à  utiliser.
(Elle se situerait à  la base, ou à  la chute,
de la courbe afin de couvrir la majorité
des URL.) Vous pouvez économiser
beaucoup d’espace (selon les longueurs
et les volumes des données)
tout en minimisant l’activité disque
supplémentaire. D’où la question : « A
quoi sert-il d’utiliser un VARCHAR sans
spécifier ALLOCATE ? » Vous pouvez
aussi bien utiliser CHAR(500) que VARCHAR(
500) (si vous n’utilisez pas
l’ALLOCATE ; au moins avec CHAR,
vous ne subirez pas les deux octets
supplémentaires utilisés par un VARCHAR.
Bien entendu, si une table est
volatile, il faudra la surveiller et l’insertion
soudaine d’un nombre d’enregistrements
plus longs que la valeur ALLOCATE
pourrait bien dégrader les
performances.

Téléchargez cette ressource

Guide de technologie 5G pour l’entreprise

Guide de technologie 5G pour l’entreprise

Pourquoi la 5G est-elle faite pour votre entreprise ? La 5G peut améliorer la vitesse, la fiabilité et la capacité de votre réseau, permettant ainsi une meilleure collaboration, une productivité accrue et une prise de décision plus rapide. Notre livre blanc " The Big Book of Enterprise 5G" vous fournit les informations stratégiques dont vous avez besoin pour prendre des décisions éclairées et préparer votre entreprise à prospérer dans l'ère de la 5G. Cradlepoint, part of Ericsson est le leader mondial des solutions de réseau sans fil 4G LTE et 5G fournies via le cloud. Connectez vos employés, lieux et objets avec la 4G LTE et la 5G pour un WAN sans fil d'entreprise.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010