Avantages de rendre une base de données SQL Server en lecture seule?

8

J'utilise une base de données de rapports, qui à toutes fins pratiques est une base de données en lecture seule. Il est créé des données et des rapports dynamiques sont générés et affichés sur cette base de données.

Je pensais rendre cette base de données en lecture seule.

Certaines des choses que je veux demander concernant les bases de données en lecture seule sont

  1. Les données sont-elles en lecture seule uniquement? Pouvons-nous toujours créer des index ou des vues sur cette base de données?
  2. Quels sont les avantages en termes de performances de l'utilisation d'une base de données en lecture seule? ex: requêtes SELECT utilisant des verrous partagés, etc ...
  3. Y a-t-il un inconvénient à utiliser une base de données en lecture seule?
  4. Y a-t-il des meilleures pratiques à suivre lors de l'utilisation de bases de données en lecture seule?
Joker
la source

Réponses:

16
  1. Vous ne pouvez pas modifier le schéma lorsque la base de données est en lecture seule, mais vous pouvez placer toutes vos tables utilisateur dans un nouveau groupe de fichiers et le marquer comme étant en lecture seule.
  2. Vous pouvez vous attendre à un bénéfice de performance modeste en l' absence de verrouillage.
  3. Sur les versions de SQL Server antérieures à 2012, les statistiques ne peuvent pas être créées ou mises à jour automatiquement sur les bases de données en lecture seule.
  4. Avant de le faire en lecture seule, vous pouvez aussi bien supprimer toute fragmentation logique et rendre la densité de page aussi élevée que possible. Les FILL_FACTORparamètres non définis par défaut ne seront pas utiles dans un environnement en lecture seule. De plus, créez / mettez à jour toutes les statistiques susceptibles d'être utiles pour les SELECTrequêtes si la version <2012.
Martin Smith
la source
1 et 4, bonnes idées.
Mark Storey-Smith,
9
  1. La base de données entière est en lecture seule, vous ne pouvez donc pas ajouter d'index ou de vues.
  2. Aucun verrouillage requis donc aucun verrou n'est pris pour toute requête autre qu'un verrouillage de base de données partagée. Cela signifie évidemment qu'aucun blocage ne se produira non plus.
  3. Pas comme tel non.
  4. Aucune que je puisse suggérer.
Mark Storey-Smith
la source