9 votes

SQL Server 2K/2K5/2K8 et les disques à semi-conducteurs : Optimisations spécifiques?

Est-ce que quelqu'un utilise ici SQL Server sur des lecteurs à état solide ? Avez-vous trouvé des astuces d'optimisation spécifiques ? Je suis particulièrement intéressé par des moyens de réduire la fréquence à laquelle SQL Server effectue de petites opérations d'écriture aléatoires, car elles sont l'ennemi de la performance des SSD, en particulier des disques SSD MLC.

Il existe bien sûr certaines optimisations évidentes : les données à forte lecture doivent être servies à partir du SSD, et les données à forte écriture doivent être laissées aux disques durs traditionnels. Cela inclut les journaux de transactions, naturellement !

Évidemment, avec un budget suffisant, on voudrait utiliser des disques SSD SLC comme le X25-E ou la série Vertex Ex ou diverses offres de niveau entreprise. Mais je suis aussi intéressé par des astuces qui pourraient bénéficier aux configurations SSD MLC. Je pense que c'est un domaine intéressant. L'un des clients de mes clients a un petit budget et un jeu de données qui a énormément grossi et ils sont confrontés à une refonte complète d'environ une centaine de requêtes afin de maintenir un niveau de performance décent. Cependant, j'ai le pressentiment qu'avec moins de 500 $ d'espace RAM et SSD, ils pourraient bénéficier d'un gain de performance plus important que des milliers (voire des dizaines de milliers) de dollars de temps de développement.

3voto

Bernie Perez Points 5091

Je ne suis pas sûr de ce que vous voulez dire par réduire la quantité de petites écritures aléatoires effectuées par SQL Server. SQL Server écrit des pages de données seulement pendant les checkpoints - donc la seule façon de limiter le nombre d'écritures est de changer l'intervalle de checkpoint ou de ne pas effectuer autant d'opérations IUD. Vouliez-vous dire autre chose?

Dans toutes les implémentations de SSD que j'ai vues (quelques-unes), c'est un peu le contraire de ce que vous suggérez - la meilleure utilisation des SSD semble être pour les journaux de transactions à forte écriture et tempdb - essentiellement là où se situe le plus grand goulot d'étranglement du sous-système E/S et placer les SSD là-dedans - car le temps de recherche et la latence sont réduits à un faible constant.

Consultez cette étude réalisée par MS (malheureusement pas très détaillée sur les spécificités de SQL Server) : Migration du stockage serveur vers les SSD : Analyse des compromis.

J'espère que cela vous aide!

2voto

pipTheGeek Points 1152

Vous ne pouvez pas modifier les caractéristiques d'IO des serveurs SQL. Son unité de base d'accès au disque, pour les fichiers de données, est une page de 8 Ko. Il les écrira principalement lors d'un point de contrôle, mais les écrira également de manière paresseuse lorsqu'il le pourra.
SQL n'attend pas que les écritures sur le disque de données soient terminées avant de renvoyer, ce sont uniquement les écritures de journal qui doivent être terminées. Si vous ne pouvez mettre qu'un seul journal de base de données sur un disque, alors ce seront des écritures séquentielles et elles iront bien sur des disques durs normaux rapides.
La perte de performance du point de vue de SQL vient lorsqu'il doit lire les disques. Si vous pouvez lui donner plus de mémoire, alors SQL retiendra plus de pages de données en mémoire, ce qui est plus rapide que n'importe quel type de disque, SSD ou autre. Bien sûr, vous pouvez également réduire le nombre de lectures de disque en créant des index appropriés. Je pense qu'un SSD serait également utile pour ces lectures car elles sont susceptibles d'être aléatoires et en attente que les têtes de lecture se déplacent.
Je ne sais pas de quelle taille de base de données il s'agit ici, mais vous voudrez peut-être jeter un œil à HyperOS. Ils fabriquent des disques SATA qui ne sont en réalité qu'un tas de barrettes de mémoire DDR2, avec un SSD ou un disque de 2,5 pouces en sauvegarde. Ensuite, le modèle d'accès du serveur n'aura aucune importance. Je ne mettrais cependant pas les journaux sur quelque chose comme ça. Les journaux sont ce qui maintient la cohérence de vos données, ils doivent être placés sur un support fiable et malgré son SSD de sauvegarde et sa batterie, et probablement le serveur dispose d'un onduleur, etc., je me sentirais quand même mal à l'aise de ne pas avoir mes journaux sur un vrai disque dur dans un type de baie RAID tolérant aux pannes.

1voto

Massimo Points 67633

Les petites opérations aléatoires sont la bête noire des disques traditionnels, en raison de la latence de recherche de tête... Les SSD sont excellents pour résoudre exactement ce problème.

Avec des opérations longues et séquentielles, les disques standard se débrouillent assez bien, donc il n'y aurait aucun intérêt à utiliser des SSD (du point de vue des performances, bien sûr).

0voto

Rexxars Points 636

Il n'y a pas encore assez de points ici pour ajouter dans le fil de commentaire, mais si vous réglez la taille de page de la BDD / le nombre de lectures multiples pour tout ce qui se trouve sur les SSD à un multiple de la taille de page des SSD, cela ne devrait pas poser de problème.

Je n'ai pas travaillé sur SQL Server depuis longtemps, alors je ne suis pas sûr si ces options sont disponibles là-bas. J'ai travaillé sur Oracle et DB2 ces dernières années et cela résoudrait vos préoccupations car la BDD serait correctement réglée par rapport aux caractéristiques du disque.

0voto

a.k. Points 31

Je recommanderais d'aligner la partition où les fichiers de base de données sont stockés.

Je recommanderais également de décider ce qui va sur RAID 0 pour les performances (ldf et TempDB), et de placer les données critiques sur RAID 1 (mdf).

Enfin, vous devriez vraiment mettre à jour le micrologiciel du disque ainsi que le micrologiciel / les pilotes du contrôleur SATA. En le faisant, vous donnez à la société de matériel et à leurs développeurs la possibilité d'optimiser les performances pour vous.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X