|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : avril 2006 Messages : 3 ![]() |
bonjour,
sur une des bases de prod, j'ai un plan de maintenance qui : - sauvegarde le journal toutes les heures - réorganise les index tous les jours à 01H00 - sauvegarde la base à 02h00 le petit soucis c'est que la réorganisation des index fait gonfler mon journal transactionnel et prend plus de 90% du disque du journal la sauvegarde de journal suivante vide le fichier journal mais sans le retailler... donc comment peut on gérer cette taille excessive de fichier ? dbcc shrinkfile en tâche planifiée...? |
|
|
00
|
|
|
#2 | |
|
Membre Expert
![]() ![]() |
Citation:
Quel est la taille du disque de log ? Quel est la taille de votre base de données ? du log initial ? Vous n'êtes pas obligé de reconstruire tous les jours, une fois par mois, cela suffit... faites une défragmentation chaque jour. |
|
|
00
|
|
|
#3 | ||
|
Membre Expert
![]() Inscription : novembre 2005 Messages : 1 899 ![]() |
Pour faire un SHRINKFILE du log:
Code :
|
||
|
00
|
|
|
#4 |
|
Membre actif
![]() Fabian MatheseAdministrateur de base de données Inscription : juillet 2007 Messages : 190 ![]() |
une question par rapport a ce qu'il est écrit ici plus haut (je sens que le problème va se poser bientot chez nous)
Comment je fais un alter database recovery mode simple avant et full après alors que ma base de donnée est en mirroir sql et donc réclame du mode full?
__________________
Fabian M. - DBA Sql server 2008R2. Apprenti Admin Système 2008 R2 Développeur SSRS, SQL Développement C# en hobby |
|
|
00
|
|
|
#5 | |
|
Invité de passage
![]() Inscription : avril 2006 Messages : 3 ![]() |
Citation:
-disque de log 8 Go -fichier de données 5,2 Go effectifs -fichier de log initial 1Go et grimpe à 4,6Go suite à la réindexation puis d'autres bases sur les mêmes disques mains moindres |
|
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() ![]() |
Première solution (originale):
Essayez d'utiliser le script de petit dej chaque jour qui utilise la fonction DBCC INDEX DEFRAG en adaptant MAXFRAG à votre base pour voir si cela à une moindre influence sur votre fichier de log. Cela sera moins efficace qu'une reconstruction mais cela affecte moins les performances de la base. Essayez d'utiliser le deuxième script fourni une fois par mois en appliquant la deuxième solution juste apres. Pour en savoir plus : http://blog.developpez.com/index.php...000_-_Rindexer Deuxième solution : puis Code :
BACKUP LOG basededonnees WITH TRUNCATE_ONLY |
|
00
|
|
|
#7 |
|
Membre actif
![]() Fabian MatheseAdministrateur de base de données Inscription : juillet 2007 Messages : 190 ![]() |
Je vais reprendre une question que j'avais posé un peu plus haut mais avec peut être plus d'explication.
Nous avons passé nos serveurs en mirroir ce we, le problème est la taille du journal de transaction le jour du rebuild des index. Il y a des moyens mal propre qui consiste a faire un backup directement après full et après effacer tout les fichiers de log. Mais ça me force a avoir 2 fois la taille de ma base de donnée minimum (une fois pour mon backup, une fois pour mon journal des log qui fait la même taille que ma base de donnée ou presque). On a regardé avec notre consultant sql si il existait un moyen propre de réduire cette taille de log, mais il n'a pu me fournir aucune solution valable. Si ce n'est défragmenter qu'une partie de mes index (pas tous), ou de faire des backups du log pdt l'opération de reconstruction d'index... (je ne vois pas la différence que j'aurai entre un fichier de 40go et 10 fichiers de 4go Il n'a pas pu me donner une méthode de reconstruction d'index n'utilisant pas le journal de transaction, on utilise un maintenance plan actuellement pour réorganiser notre db le we. Je me demande si il n'y aurait pas aussi un soucis du coté de nos journal de transaction que je trouve très gros. J'ai du mal a estimer la quantité de donnée encodée/modifiée/supprimée par jour, mais 200mo par heure, notre entreprise est très loin de l'activité de site comme ebay Nous sommes en sql server 2005 SP2 x64 avec des bases de donnée en compatibilité 8.0 rien de compliqué sur nos tables sauf des accès sql, du mirroring Merci de votre aide
__________________
Fabian M. - DBA Sql server 2008R2. Apprenti Admin Système 2008 R2 Développeur SSRS, SQL Développement C# en hobby |
|
|
00
|
|
|
#8 | |
|
Invité de passage
![]() Inscription : avril 2006 Messages : 3 ![]() |
Citation:
la sauvegarde des logs pendant la reconstruction : j'ai testé ça n'a pas marché chez moi... la reconstruction passe apparemment en priorité. par contre l'idée est loin d'être bête, la sauvegarde des logs prendrait au final autant de place mais ton fichier de log lui même ne grossirait pas de la même manière d'après ce que j'ai compris, c'est la taille des sauvegardes de log qui te gêne mais 200Mo par heure sur une base de 40Go ça ne me paraît pas énorme... |
|
|
|
00
|
|
|
#9 | ||||
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 959 ![]() |
Le passage au mode simple de journalisation impliquerait de casser le mirroring.
Il ne sert à rien de reconstruire tous les index. C'est cela qui sature votre journal. Citation:
Il faut s'intéresser à ne reconstruire ou défragmenter que les index qui le nécessite. Ainsi vous irez plus vite et journaliserez moins. Citation:
Votre consultant devrait savoir que réduire la taille d'un JT qui a grossit est une opération contre performante dont l'intérêt est nul. En effet si le JT à grossit il reviendra un jour ou l'autre à cette même taille et par conséquent aura besoin de faire des opérations de croissance de fichier qui à nouveau seront problématiques... Le seul moyen de réduire drastiquement la journalisation est de ne faire la maintenance des index que pour les index dont le taux de fragmentation logique ou physique de page ou d'extension le mérite et non pas de tout défragmenter en incluant même les index n'ayant pas de fragmentation. Autrement dit évitez le plan par défaut de MS ! J'ai une procédure qui optimise les ré indexation de VLDB. Je peut vous la fournir... (étant en déplacement pour donner une formation d'optimisation, je ne puis vous la communiquer maintenant). Un JT n'a pas a être gros ou petit. Il doit contenir le nécessaire. Sa taille n'a aucune importance. En général je considère qu'un JT doit être taillé à 25 ou 33 % de la taille de la base à terme. Par exemple si votre base de données doit faire 100 Go dans 3 ans, alors le JT devrait être taillé à 25 ou 33 Go. De la même manière si vous voulez des performances il vaudrait mieux que votre base ait été créée avec des fichiers de taille fixe. Cela éviterait toute fragmentation physique des fichiers système et En accélérerait les mises à jour (INSERT, UPDATE notamment) de façon importante. Pour preuve, voici un test qui vous en dira long... Code :
Testé sur mon portable (2 Go de RAM, Dual Core), c'est édifiant : Base à fichier variable = 40,14 secondes Base à fichier fixe = 13,34 secondes Quand à 200 Mo de JT par jour si l'essentiel est du à la maintenance des index c'est normal. Attention cependant au développement brouillon à base d'utilisation immodérée des curseurs.... De même séparer physiquement les fichiers de JT / data / tempdb / index/ pagefile.sys sur des disques physiques différents est non seulement fortement préconisé, mais améliore singulièrement les temps de réponse... Enfin, attention au 64 bits, c'est certes séduisant pour gérer un bon niveau de cache mais contre performant pour les lectures/écritures au niveau disque. En effet, les données dans les disques étant 32 bits il y a conversion 32/64 bits à chaque fois, ce qui fait perdre du temps. On a donc coutume de dire que c'est adapté aux bases OLAP (analysis services) mais pas aux bases de données transactionnelles (OLTP) c'est à dire celles utilisant le moteur SQL. Maintenant je ne connais pas votre cas... A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
||||
|
00
|
|
|
#10 |
|
Membre actif
![]() Fabian MatheseAdministrateur de base de données Inscription : juillet 2007 Messages : 190 ![]() |
Bonjour, merci de votre réponse comme d'habitude clair et précise
Et qui cette fois ci confirme plus ou moins les dire de notre consultant. Concernant les performances sql server 2005 64bits, je vais m'en inquiéter car nous avons passer notre base de donnée qui est plus de style OLTP pour gagner en performance. Nous avons eu un gros gain en performance par le fait de passer a 1.7go de mémoire pour le processus Sql server (nous n'avions pas mis /3gb dans le boot.ini Et nous avons passé notre disque des fichiers de Data en Raid 5 qui c'est vrai reste encore une fois moins performant en écriture, mais nos utilisateurs ne s'en plaignent pas. Je vais donc continuer a examiner cela au jour par jour en espérant que tout continue a bien marcher. Pour la réindexation d'une partie des index, nous allons faire des tests ce we, mais je suis persuadé que nous ne gagneront pas bcp en temps car les index les plus fragmenté sont ceux des tables les plus grosses. Je dirais que 60% de la taille de notre db se résume en une dizaine de table maximum sur presque 1.000 et c'est tables sont évidement les plus souvent modifiée. Nous devons encore mettre en place un système de partitionnement horizontale sur ces tables. Enfin ce n'est pas au gout du jour
__________________
Fabian M. - DBA Sql server 2008R2. Apprenti Admin Système 2008 R2 Développeur SSRS, SQL Développement C# en hobby |
|
|
00
|
|
|
#11 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 959 ![]() |
Code :
(nous n'avions pas mis /3gb dans le boot.ini ) Code :
Pour la réindexation d'une partie des index, nous allons faire des tests ce we
Code :
Nous devons encore mettre en place un système de partitionnement horizontale sur ces TABLES.
1° QUE LE VOLUME DE LA TABLE SOIT très important (plusieurs centaines de Go). 2) que les partitions soient sur des disques physiques dfférents 3) aligner le partitionnement des index sur le partitionnement des données Bref cela concerne les VLDB (> 1 To) Je pense que vos problèmes de performances viennent d'autres points durs. Il serait intéressant de faire un audit. Je pense notamment à la qualité des données, aux clefs, aux contraintes, notamment IR, CHECK... à la modélisation des données. Par exemple combien avez vous de tables dépassant les 20 colonnes ? A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#12 |
|
Membre actif
![]() Fabian MatheseAdministrateur de base de données Inscription : juillet 2007 Messages : 190 ![]() |
Pour le /3gb je parlais de notre ancien serveur en 32bit oui
Pour le partitionnement, nous sommes en train d'y réfléchir, pour moi ça me semble un gros gain sur certaines de nos tables car nous avons des tables "volumineuse" qq go, mais surtout ce sont des tables de production donc on se sert des valeurs des 10 derniers jours avec une fréquence très intense. Par contre on ne se sert des valeurs antérieurs que très occasionnellement (pour des statistiques mais nous devons le faire 1 fois par mois contre des milliers de fois). La présentation de nos données a assez bien de problème a mon sens, mais les modifications se font lentement, il faut donc tenter de trouver des solutions "temporaires" pour améliorer les performances. Notre modélisation est incorrect actuellement dans le sens ou, je pense que nos index ne sont pas bon, toujours le même type d'index (alors que justement dans le cas des tables citées plus haut un index cluster serait surement plus interressant). Des types de donnée mal choisi mais que nous ne pouvons pas modifié faute du langage qui attaque la base de donnée, les valeurs numériques sont stockés sous format de numeric(x,x) et decimal(x,x). Aucune clé étrangère mise en place pour l'instant (ça fait peur d'imaginer de les mettre en place si ça a été mal géré au dessus Pour les tables j'en ai 80 (soit 10%) avec un nombre de colonne > 20 dont une vingtaine avec plus de 90 colonnes. Je remarque d'ailleurs que ce sont les tables qui posent le plus souvent problème. Mais je ne vois pas trop l'impact ou plutot comment corriger cela doucement (si ce n'est proposer de réécrire)
__________________
Fabian M. - DBA Sql server 2008R2. Apprenti Admin Système 2008 R2 Développeur SSRS, SQL Développement C# en hobby |
|
|
00
|
|
|
#13 | |||||
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 959 ![]() |
Citation:
Citation:
En cette matière toutes les tables devrait avoir un index cluster, mais il convient de bien le choisir car il eut apporter des dégâts. Le plus important est de savoir quels sont les types de données sous jacents aux clefs (primaire, unique étragnères). En particulier TOUTES LES CLEFS ETRANGERES DOIVENT ETRE INDEXEES ! Ce que ne font aucun SGBDR par défaut. Citation:
Citation:
Le remplacement de NULL est une mauvaise chose. Il ne faut JAMAIS céder à la tentation de ne pas avoir de NULL. La recherche d'une colonne NULL ne pose pas de problème particulier, tandis que son rétablissement oblige à écrire des requêtes qui la plupart du temps ne peuvent pas être optimisées... Les contraintes aident le moteur SQL à faire de bons plans de requêtes. Citation:
Le respect des formes normales est un gage d'extrême performances. relisez les article que j'ai écrit pour SQL Server magazine sur l'optimisation. http://sqlpro.developpez.com/optimisation/ Il y a des techniques pour faire en sorte que votre problème se résolve... Je serais heureux de vous aider... Ou êtes vous ? A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|||||
|
00
|
Copyright © 2000-2012 - www.developpez.com