Je comprends maintenant qu'un index cluster contient toutes les données de ligne, pas seulement les champs d'index. J'essaie de comprendre les implications de cela en ce qui concerne la fragmentation.Est-ce que modifier un fragment de données de ligne mon index en cluster?
Disons que nous avons une table comme ceci:
create table Files
(
ID uniqueidentifier not null,
Field1 nvarchar(300) null,
Field2 nvarchar(300) null,
Field3 nvarchar(300) null,
Binary varbinary(max) null
)
permet maintenant dire que toutes ces lignes sont pleines de données, puis sur quelques-unes des premières lignes dans l'index cluster vous définissez soudainement Field1, Field2 , Field3 et Binary à null. Une implication de ceci, comme je le pense de ma façon plutôt naïve, est que l'effacement de toutes ces valeurs créera des lacunes, et l'index deviendrait fragmenté. Je suppose que les lignes sont toujours dans le bon ordre, alors est-ce vraiment la fragmentation de l'index?
Ou vous pouvez penser à l'inverse; Si elles sont toutes nulles au départ et que vous insérez des données, finissez-vous par devoir mélanger des données sur différentes pages et obtenir également une fragmentation d'index? En outre, je sais que les données LOB sont stockées dans une unité d'allocation séparée, bien que je ne sache pas quelles sont les implications de cela; cela signifie-t-il que définir Binary sur null (ou le remplir) ne devrait avoir aucun effet sur la fragmentation d'index clusterisée?
Qu'est-ce que 'ID uniqueidentifier' utilisez-vous' newsequentialid' pour remplir ce champ? –
C'est l'index clusterisé. Nous utilisons un générateur d'ID séquentiel dans NHibernate qui devrait faire à peu près la même chose que newsequentialid. – Gavin