Introduction : SQLServer2005SP2 nous apporte la fonction vardecimal. Cette fonction permet de stocker les données décimales originales de longueur fixe dans un format de longueur variable dans le fichier de données. On dit que cette fonction peut économiser de l'espace pour l'entrepôt de données, et SQLServer2008 l'est. sur cette base, la fonction de compression des données a été améliorée.
La fonction de compression des données dans SQL Server a été lancée pour la première fois dans SQL Server 2005. Un nouveau format de stockage appelé vardecimal a été ajouté aux éditions entreprise et développement. Cette fonction peut affecter les champs décimaux et numériques. Si les tables de la base de données contiennent des données de type décimal et numérique, les utilisateurs peuvent utiliser le format de stockage vardecimal pour réduire la taille de la base de données. Il convient de noter que la quantité d'espace pouvant être économisée dépend du nombre de colonnes de données décimales ou numériques contenues dans la base de données, de la distribution des données et de la taille de la table.
Utiliser la compression des données
C'est cette fonction de compression des données qui est devenue une autre nouvelle fonctionnalité de SQL Server 2008 : la compression des données. Grâce à cette fonctionnalité, vous pouvez réduire la taille des sous-ensembles de tables de données, d'index et de partitions. Mais pourquoi cette fonction qui existait auparavant dans SQL Server 2005 devrait-elle être améliorée dans la version nouvelle génération du système ? Dans un environnement de marché où les coûts de stockage sont en constante diminution, quels avantages la technologie de compression de données peut-elle apporter aux entreprises ?
Bien que les coûts de stockage ne soient plus un facteur sensible auquel les entreprises prêtent attention, cela ne signifie pas que la taille de la base de données n'aura pas d'impact sur l'efficacité des opérations de l'entreprise, car en plus d'affecter les coûts de stockage, la taille de la base de données est également fortement liée à la gestion. les coûts et les problèmes de performances.
Tout d'abord, comme la base de données doit être sauvegardée, plus la taille de la base de données est grande, plus la durée de sauvegarde sera longue et le coût du matériel de sauvegarde augmentera. Un autre coût de gestion est le coût de maintenance de la base de données. En termes de performances, lorsque SQL Server analyse le disque pour lire des données, il lit les données en unités de pages de données. Par conséquent, si une page de données contient plus de lignes de données, plus SQL Server obtiendra de données dans une page de données IO. être plus, ce qui entraînera également des améliorations de performances.
Par rapport aux données compressées vardécimales dans SQL Server2005SP2, les données de test actuellement publiées par SQLServer2008 utilisent une nouvelle technologie de compression de données pour atteindre un taux de stockage plus élevé, couplées à un espace de stockage accru pour la reprise après sinistre par les entreprises, toutes ces données sont SQLServer2008. Il y a des avantages à cette nouvelle fonctionnalité.
Page 2 : Deux modes de compression
Après avoir compris les réels avantages de la compression des données, vous pouvez ressentir la pénétration du concept. Grâce à la compression des données, les coûts de stockage sont réduits, les performances des requêtes sont améliorées, les E/S sont réduites et les taux de clics de mise en mémoire tampon sont augmentés. On peut voir que cette fonction est toujours très efficace dans le processus de candidature. Il existe deux méthodes d'application pour la compression de données dans SQL Server 2008, à savoir la compression de lignes et la compression de pages. Voici une brève comparaison de ces deux types de compression de données.
Sélection du type de compression lors de l'assistant de compression de données
Compression des lignes. La compression de lignes peut stocker des types de longueur fixe en tant que types de stockage de longueur variable. Par exemple, une colonne char(100) stockée dans un format de stockage de longueur variable n'utilisera que les données définies par la quantité de stockage. Le "SQLServer2008" stocké n'a besoin de stocker que 15 caractères après compression au lieu des 100 caractères, économisant ainsi 85 % d'espace de stockage. Il s'agit d'une extension de l'idée du format de stockage vardécimal fourni dans SQLServer2005ServicePack2. Il convient également de noter que ce mode de compression optimisera les valeurs NULL et 0 de tous les types de données afin qu'elles n'occupent aucun octet.
Bien que la compression de données SQLServer2008 étende cette fonctionnalité, tous les types de données de longueur fixe sont traités, y compris les entiers, les caractères et les flottants. Désormais, les données ne sont pas stockées dans des octets de taille fixe, mais dans les octets minimum requis, ce qui peut être effectué simplement en activant la compression des lignes. Toutefois, la compression de lignes ne peut pas gérer les types de données XML, BLOB et MAX.
Mode de compression des pages. Cette fonctionnalité de compression, basée sur la compression de lignes, minimise les données redondantes stockées en ne stockant qu'une seule fois les mêmes octets d'événement sur une page. Les tables et les index sont compressés à l'aide de la compression de page. Outre la compression de lignes, la compression de préfixes et la compression de dictionnaire sont également utilisées.
La compression des données réduira la taille de votre table ou de vos métriques d'index. Il est préférable d'évaluer d'abord les économies d'espace après la compression. Chaque page est compressée individuellement et les préfixes et dictionnaires sont également stockés dans la page. Puisqu'une page est l'unité atomique d'allocation de stockage, cela n'a aucun sens de compresser une demi-page en un quart de page. Par conséquent, le processus de compression ne démarrera que lorsque le contenu de la page sera presque plein.
Il existe également un compromis en termes de performances lors de l'utilisation de la compression de lignes et de pages, car l'utilisation du processeur augmentera, mais l'utilisation des E/S et l'empreinte mémoire diminueront. Mais toutes les options de compression peuvent devenir des options exclusives pour SQLServer2008 Enterprise Edition.
Page 3 : Comment utiliser la compression des données
Annexe (comment utiliser la compression des données) :
(1) Activer la compression des lignes
Si nous voulons activer la compression de lignes sur une table spécifiée, nous pouvons exécuter l'instruction suivante :
CRÉER UNE TABLE Alpha(col1 int,col2 char(1000))
AVEC (DATA_COMPRESSION = LIGNE)
(2) Activer la compression des pages
Si nous voulons activer la compression sur une partition spécifiée, nous pouvons exécuter l'instruction suivante :
CRÉER UNE TABLE Alpha_Partition(col1 int,col2 char(1000))
ONPartitionScheme (col 1)
AVEC
(DATA_COMPRESSION = PAGE SUR)
PARTITIONS (1-3)
(3)Modifier la compression
Si vous souhaitez modifier un index existant pour utiliser la compression, exécutez l'instruction suivante :
ALTER INDEX Collndx SUR Alpha REBUILD
AVEC (DATA_C0MPRESSION=PAGE)
ALTER INDEX Collndx SUR Alpha REBUILD
partition=2
AVEC (DATA_COMPRESSION=PAGE)
Les options de compression dans SQL Server 2008 peuvent être définies via Option lors de la création d'une table ou d'un index, par exemple :
CRÉER UNE TABLE TestTable (col1 int,col2varchar(200))WITH(DATA_COMPRESSION = ROW);
Si vous devez modifier les options de compression d'une partition, vous pouvez utiliser l'instruction suivante :
ALTER TABLE TestTable REBUILD PARTITION = 1 AVEC(DATACOMPRESSION=PAGE);
Si vous devez définir différentes options de compression pour chaque partition de la table partitionnée, vous pouvez utiliser l'instruction suivante : (SQLServer2008 peut utiliser différentes options de compression pour différentes partitions. Ceci est très important pour les applications d'entrepôt de données car la table de faits de l'entrepôt de données Il existe généralement une ou plusieurs partitions chaudes et les données de ces partitions doivent souvent être mises à jour. Afin d'éviter que la compression des données n'entraîne une charge de traitement supplémentaire pour les mises à jour des données sur ces partitions, vous pouvez désactiver l'option de compression pour ces partitions.
CRÉER UNE TABLE PartitionedTable (col1 int, col2varchar(200))
SUR PS1 (col1)
AVEC (DATA_COMPRESSION = LIGNE SUR PARTITIONS (1),
DATA_COMPRESSION = PAGE SUR PARTITION (2 À 4));
Si vous définissez des options de compression pour un index, vous pouvez utiliser :
CREATE INDEX IX_TestTable_Col1 ONTestTable(Col1)WITH(DATA_COMPRESSION = ROW);
Si vous souhaitez modifier les options de compression d'un index, vous pouvez utiliser :
ALTER INDEX IX_TestTable_Col1 ONTestTableREBUILDWITH(DATA_COMPRESSION = ROW);