OVH Cloud OVH Cloud

stockage physique des données

3 réponses
Avatar
Cédric SICARD
Bonjour,
j'aimerai savoir comment sont stockées physiquement les tuples sur le
disque.
Exemple Table1 contient ID, Champs1, Champs2 ....., Champs40.
Je fais select Champs40 from Table1 where ID = xxx
Une fois que sql serveur a trouvé le bon enregistrement il parcours toutes
les colones afin de trouver celle que je veux ou est ce qu'il y une sorte
d'index qui pointe directement sur la partie qui m'interesse?

Je ne peut etre pas ete tres clair et je m'en excuse d'avance.

Cordialement,
Cédric.

3 réponses

Avatar
Philippe T [MS]
Bonjour,

Pour optimiser l'accès aux données, SQL Server utilise les indexes qui ont
été créés. Pour optimiser l'accès à une donnée, on peut par exemple définir
un index sur cette colonne ce qui reviens à définir une liste permettant
d'accéder plus rapidement à une donnée filtrée sur cette liste.

La selection se fait par enregistremenst et non par colonne.

Concernant le mécanisme d'accès aux données physique, c'est réellement très
complexe !!!

Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france

"Cédric SICARD" wrote in message
news:
Bonjour,
j'aimerai savoir comment sont stockées physiquement les tuples sur le
disque.
Exemple Table1 contient ID, Champs1, Champs2 ....., Champs40.
Je fais select Champs40 from Table1 where ID = xxx
Une fois que sql serveur a trouvé le bon enregistrement il parcours toutes
les colones afin de trouver celle que je veux ou est ce qu'il y une sorte
d'index qui pointe directement sur la partie qui m'interesse?

Je ne peut etre pas ete tres clair et je m'en excuse d'avance.

Cordialement,
Cédric.




Avatar
Steve Kass
Cédric,

Index ou non, il n'y a jamais besoin de parcourir d'autres colonnes. La
valeur de Champs40 se trouve un certain nombre d'octets après la tête
de la rangée - si Champs40 a une taille fixe, ce nombre dépend de la
structure de la table (n'importe l'ordre des colonnes, les rangées de
taille fixe sont stockées en tête, les rangées varchar, nvarchar
après). Sinon,
le déplacement est inscrit au début de la rangée. En tous cas, trouver
l'addresse de mémoire de Champs40, il faut sommer deux entiers, rien de
plus.

Steve Kass
Drew University

Cédric SICARD wrote:

Bonjour,
j'aimerai savoir comment sont stockées physiquement les tuples sur le
disque.
Exemple Table1 contient ID, Champs1, Champs2 ....., Champs40.
Je fais select Champs40 from Table1 where ID = xxx
Une fois que sql serveur a trouvé le bon enregistrement il parcours toutes
les colones afin de trouver celle que je veux ou est ce qu'il y une sorte
d'index qui pointe directement sur la partie qui m'interesse?

Je ne peut etre pas ete tres clair et je m'en excuse d'avance.

Cordialement,
Cédric.






Avatar
Patrice
Sur un dique les données sont de toute façon organisées par "pages". Il
n'est pas possible de lire un champ individuellement. C'est toute la page
(donc toutes les colonnes d'une ligne) qui est montée en mémoire.

Les champs BLOB correspondent par contre à des pointeurs et sont lues à
partir d'une autre zone du disque...

Patrice

--

"Cédric SICARD" a écrit dans le message de
news:
Bonjour,
j'aimerai savoir comment sont stockées physiquement les tuples sur le
disque.
Exemple Table1 contient ID, Champs1, Champs2 ....., Champs40.
Je fais select Champs40 from Table1 where ID = xxx
Une fois que sql serveur a trouvé le bon enregistrement il parcours toutes
les colones afin de trouver celle que je veux ou est ce qu'il y une sorte
d'index qui pointe directement sur la partie qui m'interesse?

Je ne peut etre pas ete tres clair et je m'en excuse d'avance.

Cordialement,
Cédric.