Exigences : Dans la base de données SQL Server, il existe une table (par exemple, table de log, table de log de requêtes) qui occupe un très grand espace disque, peut-être des centaines de Go, comment réduire l’utilisation de l’espace de table ? La compression des données (économie d’espace) peut être activée pour le texte très répétitif (par exemple, HTML, JSON, journaux).
Compression ROW
La compression modifiera le stockage physique des données, mais pas la structure logique des données. Le processus de compression de ligne :
Identifiez le type de données de chaque colonne et convertissez-le en longueur variable Enfin, la quantité de requêtes d’espace de stockage est réduite à la demande réelle Après compression, la quantité de données stockées sur chaque page augmente Après compression, réduisez la quantité de métadonnées Par exemple, si le type de données d’une colonne est smallint, le système alloue par défaut 2 octets Mais en réalité, un seul octet d’espace est utilisé, et si la compression est activée sur la table, elle peut être allouée à la demande
Compression PAGE
La compression de page effectue des opérations supplémentaires pour améliorer la compression des lignes Opérations principales : compression de ligne, compression de préfixe, compression de dictionnaire
Consommation CPU : compression PAGE > compression de lignes
Test
Créez une nouvelle table Users1 et Users2, insèrent toutes deux 100 000 données, et le script sql est le suivant :
Pour voir l’espace d’occupation de la table, qui est tous de 3,27 Mo, la commande est la suivante :
Comme montré ci-dessous :
Pour voir l’état de compression de la table Users2, la commande est la suivante :
Comme montré ci-dessous :
sp_estimate_data_compression_savingsEstimez les économies qui peuvent être réalisées lorsque vous activez des tables ou partitions pour les lignes, pages, magasins de colonnes, archives de colonnes ou compression XML. La commande est la suivante :
La sortie est la suivante :
object_name schema_name index_id partition_number size_with_current_compression_setting(KB) size_with_requested_compression_setting(KB) sample_size_with_current_compression_setting(KB) sample_size_with_requested_compression_setting(KB) Utilisateurs2 dbo 1 1 3368 1296 3448 1328
size_with_current_compression_setting (KB) 3368 KB L’indice occupe ≈ 3,29 Mo avec les réglages de compression actuels size_with_requested_compression_setting (KB) 1296 Ko Empreinte estimée ≈ 1,27 Mo si vous activez la nouvelle méthode de compression demandée, telle que PAGE ou ROW Pour exécuter la compression de page, la commande est la suivante :
Comparaison des effets :Le tableau Users2 est de 3,27 Mo avant la compression et de 1,23 Mo après compression, comme montré dans la figure ci-dessous :
La visualisation est la suivante :
Référence:
La connexion hyperlientérée est visible.
La connexion hyperlientérée est visible.
La connexion hyperlientérée est visible. |