OVH Cloud OVH Cloud

Création de base et découpage de table

2 réponses
Avatar
Patrick
bonjour;
J'ai pour habitude de créer les bases depuis SqlServer 6.5 en séparant les
tables des index. pour les versions 2000 et 2005 je crée donc un filegroup
pour les tables et un autre pour les index. Comme il n'y a pas beaucoup de
litérature sur la séparation des index sur SqlServer 2000 ou 2005, je
voudrais savoir si ça reste une bonne pratique, ou si le fait que SqlServer
ne le propose plus par défaut dans sa syntaxe signifie qu'il vaut mieux, pour
des raisons de performance, le laisser faire tout seul ?

Par ailleurs je voudrais savoir s'il existe la possibilité de segmenter une
table par date ( en mois par ex) pour "dropper" plus facilement les
historiques obsolètes.
Bon, on a toujours la possibilité de le faire, puis de créer une vue
"rassemblée" par des Unions, mais la question est de savoir s'il existe une
astuce avec 2005 de le faire au niveau de la création (comme Oracle sur les
tablespaces, puis de deleter le tablespace concerné)
merci de vos tuyaux

2 réponses

Avatar
Med Bouchenafa
SQL Server 2000 ne sépare pas tout seul le placement des index et des
données
Il les crée par défaut sur le filegroup par défaut. Il y a un pour chaque
base.
Cela reste une très bonne pratique de séparer les index et les données pour
deux raisons
a) Axes de lecture/écriture différents
En créant les filegroup sur deux axes différents, on améliore les IO
b) Multithread
En plaçant les index et les data dans des fichiers différents, SQL Server
lance un thread pour chaque fichier

SQL Server propose le choix du filegroup à la création de l'index ou de la
table
Voir Syntaxe du CREATE TABLE et CREATE INDEX dans Aide En Ligne.
Dans ce domaine, il faut juste éviter l'erreur fréquente de mettre l'index
Cluster dans le filegroup des index
Il faut mettre l'index Cluster dans le filegroup des data.

Concernant le partitionnement des données, les vues partitionnées restent un
très bon moyen de le faire .
Je ne vois pas d'autre moyen plus simple que ça.


--
Bien cordialement
Med Bouchenafa

"Patrick" a écrit dans le message de
news:
bonjour;
J'ai pour habitude de créer les bases depuis SqlServer 6.5 en séparant les
tables des index. pour les versions 2000 et 2005 je crée donc un filegroup
pour les tables et un autre pour les index. Comme il n'y a pas beaucoup de
litérature sur la séparation des index sur SqlServer 2000 ou 2005, je
voudrais savoir si ça reste une bonne pratique, ou si le fait que
SqlServer
ne le propose plus par défaut dans sa syntaxe signifie qu'il vaut mieux,
pour
des raisons de performance, le laisser faire tout seul ?

Par ailleurs je voudrais savoir s'il existe la possibilité de segmenter
une
table par date ( en mois par ex) pour "dropper" plus facilement les
historiques obsolètes.
Bon, on a toujours la possibilité de le faire, puis de créer une vue
"rassemblée" par des Unions, mais la question est de savoir s'il existe
une
astuce avec 2005 de le faire au niveau de la création (comme Oracle sur
les
tablespaces, puis de deleter le tablespace concerné)
merci de vos tuyaux


Avatar
Patrick
A Med Bouchenafa:
Merci de votre confirmation
Cordialement,
Patrick

"Med Bouchenafa" a écrit :

SQL Server 2000 ne sépare pas tout seul le placement des index et des
données
Il les crée par défaut sur le filegroup par défaut. Il y a un pour chaque
base.
Cela reste une très bonne pratique de séparer les index et les données pour
deux raisons
a) Axes de lecture/écriture différents
En créant les filegroup sur deux axes différents, on améliore les IO
b) Multithread
En plaçant les index et les data dans des fichiers différents, SQL Server
lance un thread pour chaque fichier

SQL Server propose le choix du filegroup à la création de l'index ou de la
table
Voir Syntaxe du CREATE TABLE et CREATE INDEX dans Aide En Ligne.
Dans ce domaine, il faut juste éviter l'erreur fréquente de mettre l'index
Cluster dans le filegroup des index
Il faut mettre l'index Cluster dans le filegroup des data.

Concernant le partitionnement des données, les vues partitionnées restent un
très bon moyen de le faire .
Je ne vois pas d'autre moyen plus simple que ça.


--
Bien cordialement
Med Bouchenafa

"Patrick" a écrit dans le message de
news:
> bonjour;
> J'ai pour habitude de créer les bases depuis SqlServer 6.5 en séparant les
> tables des index. pour les versions 2000 et 2005 je crée donc un filegroup
> pour les tables et un autre pour les index. Comme il n'y a pas beaucoup de
> litérature sur la séparation des index sur SqlServer 2000 ou 2005, je
> voudrais savoir si ça reste une bonne pratique, ou si le fait que
> SqlServer
> ne le propose plus par défaut dans sa syntaxe signifie qu'il vaut mieux,
> pour
> des raisons de performance, le laisser faire tout seul ?
>
> Par ailleurs je voudrais savoir s'il existe la possibilité de segmenter
> une
> table par date ( en mois par ex) pour "dropper" plus facilement les
> historiques obsolètes.
> Bon, on a toujours la possibilité de le faire, puis de créer une vue
> "rassemblée" par des Unions, mais la question est de savoir s'il existe
> une
> astuce avec 2005 de le faire au niveau de la création (comme Oracle sur
> les
> tablespaces, puis de deleter le tablespace concerné)
> merci de vos tuyaux