J'ai vu que notre base de données a le modèle de récupération complète et dispose d'un journal de transaction de 3 Go. P>
Lorsque le journal devient plus grand, comment cela affectera-t-il que les performances de la base de données et la performance des applications accessibles à la base de données? P>
6 Réponses :
Si le journal est fragmenté ou doit augmenter, il ralentira l'application. P>
Si vous n'effandissez pas le journal de transaction périodiquement en effectuant des sauvegardes, le journal sera plein et consommez l'espace disque disponible entier. P>
à quelques égards. p>
Si votre système est configuré pour agrandir automatiquement le journal de transaction, car le fichier augmente, votre serveur SQL devra faire plus de travail et vous aurez potentiellement ralenti. Lorsque vous êtes enfin à court d'espace, vous n'avez pas de chance et votre base de données cessera de prendre de nouvelles transactions. p>
Vous devez obtenir avec votre DBA (ou peut-être que vous êtes le DBA?) et effectuez des sauvegardes courantes fréquentes et périodiques. Sauvez-les de votre serveur sur un autre système de sauvegarde dédié. Lorsque vous sauvegardez le journal, l'espace de votre fichier journal existant sera récupéré, empêchant ainsi le journal de devenir beaucoup plus gros. La sauvegarde du journal des transactions vous permettra également de restaurer votre base de données à un point spécifique à temps après votre dernière sauvegarde complète ou différentielle, ce qui réduit considérablement vos pertes de données en cas d'échec du serveur. P>
La meilleure pratique recommandée consiste à attribuer un fichier journal de transaction SQL Server son «très propre disque ou LUN. P>
Ceci est pour éviter la fragmentation du fichier journal de transaction sur le disque, car d'autres affiches ont mentionné et pour éviter également / minimiser la conflit de disque. P>
Le scénario idéal consiste à affecter votre DBA d'allouer suffisamment d'espace de journal pour votre environnement de base de données à l'avance, à savoir, à allouer à X Go de données en une fois. Sur un disque dédié, cela créera une allocation contiguë, évitant ainsi la fragmentation. P>
Si vous devez développer votre journal de transaction, vous devriez encore vous efforcer de le faire dans des morceaux importants afin de s'efforcer d'allouer de manière contiguë. p>
Vous devriez également ne pas rechercher votre fichier journal de transaction, comme la rétrécissement répété et la croissance automatique peut entraîner une fragmentation du fichier de données sur le disque. P>
Je trouve qu'il est préférable de penser à la propriété de base de données autogrotthth sous forme de fauxé, c'est-à-dire que votre DBA doit surveiller de manière proactive l'espace journal de transaction (peut-être en configurant des alertes) afin de pouvoir augmenter la taille du fichier de journal de transaction afin de prendre en charge vos exigences d'utilisation de la base de données. Mais la propriété Autogrowth peut être en place pour que votre base de données puisse continuer à fonctionner normalement en cas de croissance inattendue. P>
Un fichier journal de transaction plus grand En soi, sinon préjudiciable à la performance que SQL Server écrit sur le journal séquentiellement, vous devez donc gérer votre taille de journalisation globale et votre allocation d'espace supplémentaire de manière appropriée, vous ne devriez pas être concerné. P>
Si le fichier journal est plus grand en petites étapes, vous vous retrouverez avec beaucoup de fichiers journaux virtuels. Ces fichiers journaux virtuels ralentiront les démarrages de la base de données, restauration et sauvegarde. P>
Voici un article qui montre comment résoudre ce problème: http://www.sqlserveroptimizer.com/2013/02/how-a-speed-up-sql-server-log-file-by-reducing-number-of-virtual-log-file/ p>
Pour plus de performances, il est agréable de séparer le fichier journal SQL Server du fichier de données SQL Server afin d'optimiser l'efficacité des E / S. La méthode d'écriture sur le fichier de données est aléatoire mais SQL Server écrit sur le journal de transaction séquentiellement. Avec des E / S séquentiels, SQL Server peut lire / écrire des données sans ré-positionnement de la tête du disque. p>