2009-07-20 9 views
11

Est-il même nécessaire de compacter périodiquement les bases de données SQL CE? Le rétrécissement automatique suffira-t-il? Notre taille de base de données moyenne est d'environ 100 Mo, avec de grands utilisateurs atteignant 400 à 500 Mo (mais ceux-ci sont très rares). Si nous devons compacter manuellement, comment pouvons-nous dire quand nous devrions? Existe-t-il un moyen de déterminer le niveau de fragmentation ou le pourcentage d'espace gaspillé par programme? Si non, quel autre seuil pouvons-nous utiliser?À quelle fréquence devez-vous compacter une base de données SQL CE?

La version précédente du produit a été construite sur une base de données MS Access (gasp), nous avons donc dû compacter périodiquement juste pour continuer à travailler.

+0

Vous avez une meilleure chance de poser une question sur http://serverfault.com/ – andychase

Répondre

8

J'imagine que si vous pouvez configurer la base de données pour qu'elle se rétracte automatiquement et répare au besoin, c'est très rigoureux. C'est pourquoi il y a une pénurie de littérature sur les meilleures pratiques; il y a une hypothèse qui prévaut que cela "fonctionne". Donc, les conseils que vous obtiendrez dans ce domaine seront vagues.

Voici une citation (partielle) d'une diffusion sur le Web à http://www.microsoft.com/web/library/Details.aspx?id=sql-server-2008-compact-express-depoly-manage

la maintenance de votre SQL Server Express Editions est assez similaire à la gestion toute autre base de données multi-utilisateurs, ce qui signifie que nous avons la possibilité de entrer et traiter avec des groupes de fichiers, nous pouvons traiter avec des options de sauvegarde et de récupération modèles et quoi non. [Mais] lorsque nous traitons avec des éditions compactes ou SQL Service CE, nous n'avons pas autant d'options . Vraiment, les seules options que nous avons est comment nous voulons faire face à rétrécir et réparer.

Voici un autre de MSDN à http://msdn.microsoft.com/en-us/library/ms838028.aspx#youcantakeitwithyou_sqlserverce_topic4

avis qu'ils donnent de bons détails sur l'architecture de la base de données, mais ne donnent pas encore un programme d'entretien. Leur conseil: le faire lorsque la base de données commence à devenir lente. Notez également que ce conseil date de 2005 et que les choses se sont améliorées depuis; c'est-à-dire que les procédures de maintenance ont maintenant été automatisées.

Gardez votre maison (ou base de données) pour
Un autre facteur important dans la performance de grandes bases de données dans SQL Server CE 2.0 est l'organisation de la structure de base de données elle-même. Comme votre application modifie le contenu de la base de données , les enregistrements deviennent plus répartis aléatoirement dans la structure de fichier de base de données . Ce facteur est particulièrement vrai après un grand nombre d'insertions et de suppressions . Pour assurer un accès optimal à la base de données, compacter la base de données après toute modification substantielle du contenu.

En plus de récupérer l'espace inutilisé , la réalisation d'une compacte la base de données a deux impacts notables sur performances: d'abord, il stocke tous les enregistrements de la table afin de leur clé primaire ; Deuxièmement, il met à jour les statistiques utilisées par le processeur de requête .

La commande des enregistrements par clé primaire peut notamment améliorer l'accès clé primaire . Cela est dû à la nature orientée page de de SQL Server CE (et la plupart des autres bases de données). Plutôt que le chargement des enregistrements individuels de la base de données en mémoire, SQL Server CE charge des blocs d'enregistrements appelés pages . Lorsque les enregistrements de base de données sont groupés dans l'ordre par clé primaire, chargement de la page contenant un enregistrement charge automatiquement ces enregistrements avec valeurs de clé primaire similaires. Pour la plupart des applications, il en résulte ce qui est appelé un bon « taux » qui signifie que lorsque votre application va accéder à la base de données successives enregistrements, il y a une forte probabilité que la page contenant les enregistrements est- déjà en mémoire et peut être directement accessible. Lorsque les dossiers sont plus distribués au hasard, comme souvent arrive après un grand nombre de insertions et suppressions, il y a un pauvre taux de succès nécessitant CE SQL Server pour récupérer plus de pages à partir du fichier base de données pour accéder au même nombre de enregistrements.

Les statistiques du processeur de requêtes influencent la manière dont le processeur de requêtes détermine la meilleure méthode pour les enregistrements de localisation . Des décisions comme si utiliser une clé ou faire un balayage séquentiel pour localiser un enregistrement particulier sont tous influencés par la requête statistiques du processeur. Comme les statistiques deviennent périmées, il y a une augmentation de la probabilité que le processeur de requête puisse prendre une décision moins optimale . L'exécution d'un compact actualise ces statistiques.

Je sympathise avec votre expérience avec les bases de données Access. Cependant, je pense que vous trouverez que votre expérience avec SQL Server CE ressemble peu.