PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 18/11/2013 13:33:38

meles
Membre

smallint ??

Bonjour à tous,
  y'a t-il un intérêt quelconque (performance) à déclarer des smallint ? ou le integer (int4) classique suffit-il ?

Cordialement

Hors ligne

#2 18/11/2013 16:20:14

arthurr
Membre

Re : smallint ??

la taille de stockage.
un smallint = 2 octets
un integer = 4 octets
un bigint = 8 octets

Hors ligne

#3 18/11/2013 18:08:40

meles
Membre

Re : smallint ??

Jusqu'ici, on est bien d'accord.

Ce que je me demande, c'est : si pour une valeur dont je sais qu'elle ne dépassera pas 199 par exemple, il est plus intéressant d'utiliser un smallint (2)  ou un integer (4) fera aussi bien sans que ce soit la peine de s'enquiquiner ? Est ce que ça joue vraiment sur les performance ?

@+

Hors ligne

#4 18/11/2013 18:47:52

arthurr
Membre

Re : smallint ??

Je l'utilise plus par réflexe que par utilité : si je sais que la donnée à stocker n'a pas besoin de stocker de grande valeur.

A noter :
- il faut parfois caster explicitement dans certaines requêtes
- il semble que le gains en place disque soit dépendant des colonnes adjacentes à la colonne (http://postgresql.1045698.n5.nabble.com … 17850.html)

Hors ligne

#5 18/11/2013 18:58:05

meles
Membre

Re : smallint ??

Merci pour le lien, c'est beaucoup plus pointu que ne le laissait supposer ma question puisque même l'ordre des tables à une importance.

Au final, dans mon cas, le gain sera marginal.

Cordialement

Hors ligne

#6 18/11/2013 22:25:50

gleu
Administrateur

Re : smallint ??

Il y a eu une discussion récente sur l'optimisation du stockage en choisissant de manière très détaillée la position des colonnes. Beaucoup de travail mais qui peut rapporter gros en espace disque.

Quant aux performances, je pense que dans le cas où vous faites de gros calculs ou de gros traitements sur ces colonnes, mieux vaut un int2 qu'un int4. Ça permet d'optimiser l'utilisation des processeurs, notamment au niveau de leur cache interne. De là à quantifier cela, il faudrait vraiment tester sur un cas métier.


Guillaume.

Hors ligne

Pied de page des forums