2010-10-08 5 views
1

J'ai lu que c'est une bonne idée d'avoir un fichier par CPU/Core Core afin que SQL puisse streamer plus efficacement les données vers et à partir des disques. Ok, je peux voir l'avantage si elles sont sur des broches différentes, mais si j'ai seulement une broche (4 disques dans Raid 10) pour mes fichiers de données (.mdf et .ndf), vais-je encore bénéficier de la division des fichiers de données (à partir du fichier .mdf à un fichier .mdf et plusieurs fichiers .ndf)? Il en va de même pour le fichier journal, même si je ne vois aucun avantage car les données doivent être écrites en série et vous êtes limité par la vitesse d'écriture séquentielle de la broche ...Avoir plusieurs fichiers de données/journaux est-il une bonne chose même sur le même LUN?

FYI, ceci concerne SQL Server 2005/2008 ...

Merci.

Répondre

4

La recommandation pour plusieurs fichiers de données tempdb ne concerne absolument pas les IOPS. Il s'agit de conflit sur les pages d'allocation (GAM, SGAM, PFS) dans tempdb. SQL 2005+ ne nécessite pas une charge aussi importante sur ces pages, mais un conflit persiste. Tous les systèmes n'ont pas besoin d'un mappage de 1 fichier vers 1. La plupart des systèmes fonctionneront bien avec 1 fichier à 2 ou 4 cœurs. Avoir trop de fichiers ajoute une surcharge pour la gestion des fichiers. Une bonne recommandation est de commencer avec 1: 4 ou 1: 2 et augmente si la contention se poursuit. Ne pas aller au-dessus de 1: 1.

Pour d'autres bases de données, cela n'est pas recommandé.

Et oui, seulement 1 fichier journal ... toujours.

+0

Non, jamais. Fichiers journaux - mêmes. Un par noyau de processeur. – TomTom

+2

Désolé @TomTom, mais vous avez tort et les preuves empiriques dominantes le prouvent. Les fichiers journaux sont écrits de manière séquentielle, de sorte que plusieurs fichiers n'ont aucune valeur intrinsèque pour le système. Vous pourriez aussi bien fumer de la drogue ou boire de la bière, et vous vous attendez à ce que cela améliore les performances plutôt que d'avoir plusieurs fichiers journaux. Le seul avantage pour plusieurs fichiers journaux est un scénario dans lequel les sauvegardes de journaux ne peuvent pas suivre la quantité de journal générée sur une période donnée. –

-2

Toujours bien. Il ne s'agit pas d'IOPS - il s'agit de SQL Server BLOQUANT un fichier pour certaines opérations. surtout lorsque les extensions de fichier sont allouées à une table/index. Si vous faites beaucoup d'insertions/mises à jour, plusieurs fichiers signifient qu'un autre thread bloquera un autre fichier, et non le premier. Donc, il ne s'agit pas vraiment de charges IOPS, mais d'un comportement de blocage.

+0

Ainsi, les fichiers qui reçoivent beaucoup de lectures et d'écritures (comme le tempdb éventuellement) bénéficieraient de trois ou quatre fichiers .ndf? Qu'en est-il du fichier journal? – user418754

+1

Non, pas du tout, tout le point derrière plusieurs fichiers est de réduire la quantité de PFS. GAM ou SGAM contention sur les fichiers à travers les mécanismes de remplissage porportionate de SQL Server. À moins que vous ayez créé une contention sur l'un de ces AUN, l'ajout de plusieurs fichiers n'est rien de plus que cela, ajoutant plus de fichiers pour l'ajout de fichiers. Dans ce cas, @TomTom n'a aucune idée de quoi il parle. –

3

8 Steps to better Transaction Log throughput:

Créer uniquement Un fichier journal des transactions. Même si vous pouvez créer plusieurs fichiers journaux de transactions , vous n'avez besoin que de ... SQL Server NE "stripe" pas entre plusieurs fichiers journaux de transactions. Au lieu de cela, SQL Server utilise les fichiers journaux des transactions de manière séquentielle.

Misconceptions around TF 1118:

Pourquoi l'indicateur de trace pas nécessaire si beaucoup en 2005 et 2008? Dans SQL Server 2005, mon équipe a modifié le système d'allocation pour tempdb afin de réduire la possibilité de conflit . Il y a maintenant un cache de tables temporaires. Quand une nouvelle table temporaire est créé sur un système froid (juste après le démarrage), il utilise le même mécanisme que pour SQL 2000. Quand il est a chuté si, au lieu de toutes les pages étant désallouées complètement, une page IAM et une page de données sont allouées et la table temporaire est placée dans un cache spécial. Les créations de table temporaires suivantes vont chercher dans le cache pour voir si elles peuvent simplement saisir une table temporaire pré-créée 'sur l'étagère '. Si c'est le cas, cela évite d'accéder complètement aux bitmaps d'allocation . Le cache de table temporaire n'est pas énorme (je pense que c'est 32 tables), mais cela peut encore conduire à big laisser tomber dans le verrou contention dans tempdb.

Donc la réponse est NON aux deux questions. La segmentation des logs n'a jamais été un problème, et le NDF-par-CPU est en grande partie un mythe, qui prendra beaucoup de temps à s'éteindre. Plusieurs fichiers à mon humble avis ont un sens seulement si vous pouvez rayer IO (séparer les LUN).Plusieurs groupes de fichiers mais ont un sens, mais pas pour des raisons d'E/S, à des fins administratives: piecemeal restores et archiver les groupes de fichiers en lecture seule.

+1

Aussi http://sqlblog.com/blogs/linchi_shea/archive/2009/10/01/sql-server-challenge-show-me-trace-flag-1118-is-significant.aspx –

+0

Pourquoi considérez-vous plusieurs données? fichiers par rapport aux cœurs un mythe? La semaine dernière, lors de la conférence SQLBits, l'équipe SQLCAT a recommandé comme fichier de données d'orientation générale 1 par cœur, jusqu'à 16 cœurs! –

+0

@John Sansom: Je dis que si vous avez une charge de travail qui a la contention d'allocation pour exiger un fichier par CPU, vous avez besoin d'un moyen de budget ci-dessus poser des questions dans un forum. En d'autres termes, si vous posez des questions à ce sujet, vous n'en avez pas besoin. –