3 votes

Comment le serveur SQL gère-t-il les Varchar en interne ?

Je veux savoir comment SQL Server gère varchar la longueur dynamique et le stockage en interne.

Est-il avantageux d'utiliser Varchar si je sais que j'ai une longueur fixe de caractère qui arrive dans la colonne ?

Je connais la différence entre CHAR y VARCHAR mais quel est le meilleur moyen d'utiliser une grande base de données pour la conception de la base de données ? CHAR o VARCHAR ?

3voto

Oleg Dok Points 12155

CHAR alloue sa taille en ligne, VARCHAR stocke la taille réelle de la chaîne (2 octets) et ensuite la chaîne réelle, donc l'overhead de varchar est de +2 octets, et l'overhead de CHAR est - sa taille moins la longueur réelle de la chaîne. Si la valeur NULL est stockée dans varchar, sa taille dans la base de données est nulle.

Voir Anatomie du dossier

record header
    4 bytes long
    two bytes of record metadata (record type)
    two bytes pointing forward in the record to the NULL bitmap
fixed length portion of the record, containing the columns storing data types that have fixed lengths (e.g. bigint, char(10), datetime)
NULL bitmap
    two bytes for count of columns in the record
    variable number of bytes to store one bit per column in the record, regardless of whether the column is nullable or not (this is

différente et plus simple que celle de SQL Server 2000 qui avait un bit par colonne annulable uniquement) ceci permet une optimisation lors de la lecture des colonnes qui sont NULL tableau de décalage de colonne de longueur variable deux octets pour le compte des colonnes de longueur variable deux octets par colonne de longueur variable, donnant le décalage jusqu'à la fin de la valeur de la colonne balise de versionnement Cette balise, qui n'existe que dans SQL Server 2005, est une structure de 14 octets qui contient un horodatage et un pointeur vers la version stockée dans le fichier tempdb

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X