Questions élémentaires - Help ! [SQL Server 2000] - SQL/NoSQL - Programmation
Marsh Posté le 20-10-2004 à 11:47:31
Alors...
Démarrer > Programmes > Microsoft SQL Server > Documentation en ligne
Ensuite, tu cliques sur l'onglet "Recherche".
Tu tapes "transaction active" puis "entrée".
Tu trouves alors par exemple ceci :
|
Tu en déduis que ta question est ridicule : une transaction "active", c'est ni plus ni moins qu'une transaction "en cours". C'est pas un type de transaction, mais simplement le fait qu'elle est commencée, et pas encore terminée.
Marsh Posté le 23-10-2004 à 15:21:43
ok !
autre question :
toutes les sauvegardes sont consignées dans des tables de la base de données msdb. (entre autres, backupset et backupfile)
Or si je compte faire une sauvegarde des journaux de transaction toutes les 1/2 heures, et ceci tous les jours, ces tables vont devenir un peu trop grosses !!!!!!
Est-ce que ça peut poser problème si on supprime des lignes des tables systèmes backupset et backupfile ?
Marsh Posté le 24-10-2004 à 16:08:49
autre question :
j'ai lu plusieurs docs sur les indexes, mais j'ai jamais compris comment ça fonctionnait !!!
- je sais que ça permet d'optimiser le traitement de certaines requêtes.
- j'ai entendu dire que ça fonctionnait comme un index dans les bouquins. C'est à dire, chaque mot dans l'index est associé à une ou plusieurs pages du livre.
Or je sais que les clés primaires sont automatiquement indexées !
Du coup je comprends plus rien !!!
A quoi ça sert d'indexer une colonne où tous ses champs sont uniques ?
Marsh Posté le 25-10-2004 à 13:27:33
jcop a écrit : ok ! |
Les backups se font dans des fichiers indépendants.
Les journaux des transactions, je doute que ce soit très utile de les enregistrer aussi souvent. Toutes les 4 heures à la limite.
Ceci pour deux raisons :
-> Pendant le backup, la base est down, donc niveau uptime c'est mauvais. Deplus, elle ne peut se lancer que si aucune transaction n'est en cours. Elle attends donc un certain temps en bloquant toute nouvelle demande, puis fini par shooter tout traîtement qui n'a pas terminé. Seulement à la fun du backup elle redonne la main.
Imagine donc que le timeout avant de butter les transactions actives soit de 5 minutes, et que le backup soit de 5 minutes... Alors toutes les 30 minutes, ta base est inutilisable pendant 10 minutes ! Uptime de 66%, c'est maigre...
-> Si ton serveur crash mettons lors d'un gros traîtement à 19h. Ton dernier backup complet date du matin à 1h. Alors tu as :
(19h - 1h) * 2 = 36 backups de ton journal des transactions... Ca veut dire que tu as 36 fichiers à rejouer afin de retrouver un état stable de ta base ! Vu la lenteur de re-jeu d'un journal des transactions, ça veut dire que tu y passes au moins toute la nuit, laissant donc de côté tout traîtement batch qui aurait dû tourner la nuit. Vu le système de transactions de SQL Server, impossible de les faire tourner en pleine journée sans bloquer tous les utilisateurs ni y passer la journée !
Généralement, on fait un backup COMPLET 1 fois par semaine.
Un backup DIFFERENCIEL 1 fois par jour.
Un backup des logs en même temps que le différenciel (au cas où ce dernier foire), et on peut à la limite en re-sheduler un au bout de 12 heure. Il faut savoir que le backup des transactions ne sert absolument à rien : tant que le serveur n'est pas définitivement mort, les transactions sont récupérables même après un restore d'un backup (c'est un peu le but...)
Marsh Posté le 25-10-2004 à 13:32:44
jcop a écrit : autre question : |
- Elles sont uniques, mais sont-elles dans l'ordre ? NON (sauf dans le cas d'un INDEX CLUSTERED (paramètre par défaut pour une clé, ok...)
- Un index, ça marche comme un arbre (binaire ou non).
Imagine un arbre à 26 dimensions.
Noeud 1 : choix : A, B, C, D, ..., Z
Au noeud 2, tu as les mêmes choix, pour chaque entrée.
Tu cherches la clé "TOTO".
Alors au noeud 1, tu cherches "T", au noeud 2 tu cherches "O", etc.
En 4 lectures de l'index tu as trouvé la ligne correspondant à ta clé, quelque soit le nombre de lignes de ta base.
Dans une base sans index, en cluster, le système va devoir faire une recherche dicotomique (ou similaire). Ben trouver 1 ligne par dicotomie en 4 coups quand t'as 25 000 000 de lignes, bah je t'assure que tu peux chercher dans tes placards le soir en rentrant chez toi, parceque ta femme n'a pas qu'un seul amant...
Marsh Posté le 09-11-2004 à 02:50:25
ok merci pour les réponses !!!
faire des backup log database ça ne sert à rien ?! ça peut servir si le fichier du journal des transaction devient endommagé, non ?
Citation : tant que le serveur n'est pas définitivement mort, les transactions sont récupérables |
si les transactions sont récupérables, c'est donc que le fichier .ldf n'est pas endommagé ?
sinon t'es sûr que pendant le backup la base est down ?
Dans une doc il est mis : "Vous pouvez sauvegarder une base de données même si elle est en ligne et active"
Marsh Posté le 09-11-2004 à 10:14:02
La base n'est pas down, mais nécessite un accès exclusif aux éléments backupés. Donc si tu backup une table utilisée, le backup attends que tout le monde se déconnecte de la base (comme si tu fais un "LOCK" dans une requête). Puis fait son boulot, et enfin redonne l'accès.
Pour peu que tu utilises une appli transactionnelle qui fait des transactions de plusieurs minutes, tu peux passer un très long moment avant de pouvoir backuper toutes les tables.
Marsh Posté le 20-10-2004 à 00:23:10
Bonjour,
je débute avec SQL Server et j'ai quelques questions
tout d'abord, c'est quoi une transaction active ?
Message édité par jcop le 20-10-2004 à 00:24:54