Création d'une table utilisant la compression

Lorsque vous créez une nouvelle table en émettant l'instruction CREATE TABLE, vous avez la possibilité de compresser les données contenues dans les lignes de la table.

Avant de commencer

Vous devez choisir le type de compression que vous souhaitez utiliser: compression adaptative, compression de ligne classique, compression de valeur ou une combinaison de compression de valeur avec l'un des deux types de compression de ligne. La compression adaptative et la compression de ligne classique permettent presque toujours d'économiser du stockage car elles tentent de remplacer les modèles de données qui s'étendent sur plusieurs colonnes par des chaînes de symboles plus courtes. La compression de valeur peut permettre des économies si vous avez de nombreuses lignes avec des colonnes qui contiennent la même valeur, par exemple un nom de ville ou de pays, ou si vous avez des colonnes qui contiennent la valeur par défaut pour le type de données de la colonne.

Procédure

Pour créer une table utilisant la compression, émettez une instruction CREATE TABLE.
  • Si vous souhaitez utiliser la compression adaptative, incluez la clause COMPRESS YES ADAPTIVE.
  • Si vous souhaitez utiliser la compression de ligne classique, incluez la clause COMPRESS YES STATIC.
  • Si vous souhaitez utiliser la compression de valeur, incluez la clause VALUE COMPRESSION. Si vous souhaitez compresser les données qui représentent les valeurs de colonne par défaut du système, incluez également la clause COMPRESS SYSTEM DEFAULT.

Résultats

Une fois que vous avez créé la table, toutes les données que vous ajoutez à la table à partir de ce point de cohérence sont compressées. Tous les index associés à la table sont également compressés, sauf indication contraire à l'aide de la clause COMPRESS NO des instructions CREATE INDEX ou ALTER INDEX.

Exemples

Exemple 1: L'instruction suivante crée une table pour les informations client avec la compression adaptative activée. Dans cet exemple, la table est compressée à l'aide des dictionnaires de compression de niveau table et de niveau page.

     CREATE TABLE CUSTOMER
          (CUSTOMERNUM      INTEGER,
           CUSTOMERNAME     VARCHAR(80),
           ADDRESS          VARCHAR(200),
           CITY             VARCHAR(50),
           COUNTRY          VARCHAR(50),
           CODE             VARCHAR(15),
           CUSTOMERNUMDIM   INTEGER)
           COMPRESS YES ADAPTIVE;
   

Exemple 2: L'instruction suivante crée une table pour les informations client avec la compression de ligne classique activée. Dans cet exemple, la table est compressée à l'aide d'un dictionnaire de compression de niveau table uniquement.

     CREATE TABLE CUSTOMER
          (CUSTOMERNUM      INTEGER,
           CUSTOMERNAME     VARCHAR(80),
           ADDRESS          VARCHAR(200),
           CITY             VARCHAR(50),
           COUNTRY          VARCHAR(50),
           CODE             VARCHAR(15),
           CUSTOMERNUMDIM   INTEGER)
           COMPRESS YES STATIC;
   

Exemple 3: L'instruction suivante crée une table pour les salaires des employés. La valeur par défaut de la colonne SALARY est 0 et la compression de ligne et la compression par défaut du système sont spécifiées pour la colonne.

     CREATE TABLE EMPLOYEE_SALARY
          (DEPTNO   CHAR(3)      NOT NULL,
           DEPTNAME VARCHAR(36)  NOT NULL,
           EMPNO    CHAR(6)      NOT NULL,
           SALARY   DECIMAL(9,2) NOT NULL WITH DEFAULT COMPRESS SYSTEM DEFAULT)
           COMPRESS YES ADAPTIVE;
Notez que la clause VALUE COMPRESSION a été omise de cette instruction. Cette instruction crée une table appelée EMPLOYEE_SALARY; toutefois, un message d'avertissement est renvoyé:
SQL20140W  COMPRESS column attribute ignored because VALUE COMPRESSION is 
deactivated for the table.  SQLSTATE=01648
Dans ce cas, la clause COMPRESS SYSTEM DEFAULT n'est pas appliquée à la colonne SALARY.

Exemple 4: L'instruction suivante crée une table pour les salaires des employés. La valeur par défaut de la colonne SALAIRE est 0 et la compression de ligne et la compression par défaut du système sont activées pour la colonne.

     CREATE TABLE EMPLOYEE_SALARY
          (DEPTNO   CHAR(3)      NOT NULL,
           DEPTNAME VARCHAR(36)  NOT NULL,
           EMPNO    CHAR(6)      NOT NULL,
           SALARY   DECIMAL(9,2) NOT NULL WITH DEFAULT COMPRESS SYSTEM DEFAULT)
           VALUE COMPRESSION COMPRESS YES ADAPTIVE;
   

Dans cet exemple, la clause VALUE COMPRESSION est incluse dans l'instruction, qui compresse la valeur par défaut de la colonne SALARY.