2 votes

Recommandations pour la configuration matérielle du serveur SQL

Nous sommes en train de construire un nouveau serveur SQL et nous aimerions avoir des recommandations sur le matériel. Actuellement, nous construisons tous les systèmes en interne. Avec les informations ci-dessous, que recommanderiez-vous pour les disques et une cage SAS externe. De plus, dans cette charge de travail, quel serait l'avantage de SAS par rapport à SATA2 ?

Spécifications de base jusqu'à présent :

  • CPU AMD Phenom II X4 955
  • 8GB RAM
  • 2 To de stockage RAID6 (en pensant aux disques Seagate Cheetah 15K.6 de 450 Go)
  • 1 To de stockage RAID1 (pourquoi ci-dessous) (1 To Seagate Barracuda ES.2)
  • Contrôleur SAS 3ware 9690SA

Logiciel :

  • Serveur Windows 2003 ou 2008 (pas encore décidé)
  • SQL Server 2005 ou 2008 (en fonction de la compatibilité de l'application)

Charge de travail :

Ce serveur est assez lourd en lecture/écriture pour la plupart des applications (environ 1 To) (finances, applications internes, etc.). Nous avons également des données SIG sur le serveur qui sont utilisées par ArcGIS. Nous prévoyons de placer nos données vectorielles sur la matrice RAID6 principale et les données matricielles (environ 750 Go) sur la matrice RAID1 (étant donné que leur utilisation n'est pas aussi fréquente).

4voto

David Spillett Points 22424

Je suggérerais RAID10 pour les bases de données lourdes qui ne sont pas principalement en lecture seule, et non RAID5 ou 6. Sur une matrice RAID6 à 4 disques, chaque écriture de bloc (ou écriture partielle de bloc) peut être transformée en une lecture (pour obtenir l'autre bloc de données) suivie de trois écritures (une pour l'écriture initiale, deux pour les deux blocs de parité), ce qui peut avoir un impact significatif sur les performances d'écriture. Avec le RAID10, chaque écriture de bloc (partielle) se résume à deux écritures sur le disque.

Si l'accès à votre base de données comprend très peu d'écritures, le RAID6 peut être préférable pour la redondance car une matrice RAID6 peut survivre à n'importe quelle défaillance de deux disques alors qu'une matrice RAID10 de quatre disques ne survivra qu'à 4 des 6 combinaisons possibles de deux disques défaillants, mais vous indiquez que vous vous attendez à ce que l'activité soit à la fois intensive en lecture et en écriture (et vous avez de bons plans de sauvegarde et de reprise après sinistre, n'est-ce pas ?)

Veillez évidemment à opter pour une édition 64 bits de Windows et de SQL Server, sinon vous ne pourrez pas utiliser toute cette mémoire vive sans recourir à des astuces qui réduisent les performances, telles que le PAE. Puisque nous parlons de mémoire : Je vous conseille d'en avoir plus si vous le pouvez. La RAM n'est pas chère de nos jours, même la RAM ECC de bonne marque, donc passer de 8 à la quantité que vous pouvez mettre sur le tableau n'est pas une mauvaise idée. Pour la plupart des applications du serveur SQL (avec des bases de données suffisamment importantes), vous remarquerez l'avantage en cas de charge appréciable, car cela réduira considérablement les opérations d'E/S pour les requêtes de lecture, étant donné qu'un ensemble de travail plus important peut être conservé en mémoire. D'après votre description, il semble que la taille de vos données et votre modèle d'activité bénéficieraient de la plus grande quantité de RAM possible. De nos jours, de nombreux nouveaux serveurs prennent en charge 16 Go de RAM, et il n'est pas rare que 32 Go soient pris en charge (de même que, de plus en plus, 64 Go, bien qu'il s'agisse d'un marché "spécialisé" et qu'il faille donc payer un supplément pour l'obtenir).

3voto

Kyle Points 1839

Si votre base de données est très gourmande en écriture, utilisez RAID 10, et non RAID 6. Avec des disques SAS très rapides et très performants.

Achetez un châssis plus grand que ce dont vous avez besoin afin de pouvoir vous y adapter. J'ai récemment ajouté un quadruple cœur à mon serveur de base de données de production et je peux vous dire que, pour une fois dans ma carrière, j'étais vraiment content d'avoir acheté la carte mère à double socket même si je n'avais besoin que de quatre cœurs au départ. Le fait que l'utilisation du processeur soit passée de 60 % en moyenne avec de longs pics à 100 % à 30 % en moyenne avec de rares pics à 100 % a eu un impact énorme sur nos performances. Ne pas avoir à migrer complètement d'une machine à l'autre pour obtenir cela était vraiment génial - insérer une autre puce dans le socket supplémentaire prenait environ 20 minutes. En ce qui concerne la mémoire vive, il faut en mettre autant que la machine peut en supporter.

Pour mémoire, notre système de production utilise le système SAS, notre système de développement utilise le système SATA. Nous pouvons clairement sentir et quantifier la différence ; les requêtes qui peuvent prendre 1,5 seconde sur notre machine de production chargée peuvent prendre 3 secondes sur notre serveur de développement non chargé. Il s'agit bien sûr d'une anecdote et il existe d'autres différences, mais nous avons remarqué que c'est l'IO qui tue. 1,5 seconde n'est pas une grosse affaire, n'est-ce pas ? Sauf qu'en production, c'est une différence de 1,5 seconde * x utilisateurs * y requêtes par heure.

Encore une réflexion sur l'IO : nous avons pris soin de configurer nos tables les plus utilisées de manière à ce qu'elles se trouvent sur des groupes de fichiers contenant plusieurs fichiers. Ainsi, si BigOverUsedTable se trouve sur FileGroup1, que FileGroup1 contient quatre fichiers et que votre base de données dispose de 8 cœurs, quatre cœurs seront utilisés pour effectuer la requête "select big number crunching nasty query from BigOverUsedTable", alors que dans le cas contraire, un seul processeur sera utilisé. Nous avons tiré cette idée de cet article de MSDN :

http://msdn.microsoft.com/en-us/library/ms944351.aspx

Extrait de TFA :

"Les groupes de fichiers utilisent des threads parallèles pour améliorer l'accès aux données. Lorsqu'une table est accédée de manière séquentielle, le système crée un thread séparé pour chaque fichier en parallèle. Lorsque le système effectue une recherche pour une table dans un groupe de fichiers comportant quatre fichiers, il utilise quatre threads distincts pour lire les données en parallèle. En général, l'utilisation de plusieurs fichiers sur des disques distincts améliore les performances. Un trop grand nombre de fichiers dans un groupe de fichiers peut entraîner un trop grand nombre de threads parallèles et créer des goulots d'étranglement".

Nous avons quatre fichiers dans notre groupe de fichiers sur une machine à 8 cœurs à cause de ce conseil. Cela fonctionne bien.

0voto

Jeremy Points 1287

La norme SAS présente un avantage considérable par rapport à la norme SATA2 pour les opérations d'accès aléatoire. J'éviterais le SATA à tout prix. Vous mentionnez la construction en interne, avez-vous examiné des systèmes en rack comme celui-ci ?

http://www.newegg.com/Product/Product.aspx?Item=N82E16811219021

Il permet de disposer de 20 baies de disques SAS dans une seule unité de montage en rack. Ajoutez votre carte mère et les contrôleurs SAS de votre choix.

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