Permettez-moi donc de préface en disant que je n'ai pas un contrôle total sur ma conception de base de données, de sorte que de nombreux aspects du système actuel ne peuvent pas être modifiés aux fins de ce scénario.
Les commentaires sur la façon de repenser les aspects de la conception sont probablement corrects mais inutiles :)
J'ai une très grande table, d'environ 150 champs de large et environ 600m de lignes, qui pilote un grand nombre de processus. C'est dans une situation d'entrepôt de données, donc nous n'avons AUCUNE mise à jour / insertions en dehors du processus de chargement planifié, il est donc fortement indexé.
Il a été décidé d'essayer de partitionner cette table, et j'ai quelques inquiétudes concernant l'indexation d'une table partitionnée. Je n'ai aucune expérience avec le partitionnement, donc toute entrée ou lien est apprécié. Je n'ai pas pu localiser précisément ce que je recherche sur BOL ou msdn.
Actuellement, nous nous regroupons sur un champ que nous appellerons et IncidentKey
qui n'est varchar(50)
pas unique - nous pourrions avoir entre 1 à 100 enregistrements avec le même IK
(pas de commentaires s'il vous plaît). Nous obtenons souvent de nouvelles données sur les anciens IncidentKey
enregistrements, ce n'est donc pas séquentiel non plus.
Je comprends que je dois inclure mon champ de partition IncidentDate
, dans ma clé d'index cluster pour que la partition fonctionne correctement. Je pense que ça le serait IncidentKey, IncidentDate
.
La question est de savoir comment fonctionne la mécanique d'un index clusterisé sur une clé en 2 parties dans une table partitionnée, si un enregistrement dans une "nouvelle" partition doit être avant un enregistrement dans une "ancienne" partition dans l'index clusterisé?
Par exemple, j'ai 5 enregistrements:
IncidentKey Date
ABC123 1/1/2010
ABC123 7/1/2010
ABC123 1/1/2011
XYZ999 1/1/2010
XYZ999 7/1/2010
Si j'obtiens un nouvel enregistrement, ABC123, 2/1/2011
il devra être dans l'index cluster AVANT XYZ999, 1/1/2010
. Comment cela marche-t-il?
J'assume la fragmentation et les pointeurs, mais je ne trouve aucune information sur le stockage physique et la configuration des index cluster non partitionnés sur des tables partitionnées avec des clés en deux parties.