Faire évoluer les bases de données avec des disques durs SSD bon marché

25

J'espère que beaucoup d'entre vous travaillent avec des sites Web basés sur une base de données à fort trafic, et il est probable que vos principaux problèmes d'évolutivité se trouvent dans la base de données. J'ai remarqué deux ou trois choses récemment:

  1. La plupart des grandes bases de données nécessitent une équipe de DBA pour évoluer. Ils luttent constamment avec les limitations des disques durs et se retrouvent avec des solutions très coûteuses (SAN ou grands RAID, fenêtres de maintenance fréquentes pour la défragmentation et la répartition, etc.). trop raide pour moi :)

  2. Enfin, plusieurs sociétés comme Intel, Samsung, FusionIO, etc. viennent de commencer à vendre des disques durs SSD extrêmement rapides mais abordables basés sur la technologie Flash SLC. Ces disques sont 100 fois plus rapides en lecture / écriture aléatoire que les meilleurs disques durs en rotation du marché (jusqu'à 50 000 écritures aléatoires par seconde). Leur temps de recherche est à peu près nul, donc le coût des E / S aléatoires est le même que celui des E / S séquentielles, ce qui est génial pour les bases de données. Ces disques SSD coûtent environ 10 à 20 dollars par gigaoctet et ils sont relativement petits (64 Go).

Ainsi, il semble y avoir une opportunité d'éviter les coûts ÉNORMES de la mise à l'échelle des bases de données de la manière traditionnelle en construisant simplement une matrice RAID 5 suffisamment grande de disques SSD (qui ne coûterait que quelques milliers de dollars). Ensuite, peu nous importe que le fichier de base de données soit fragmenté, et nous pouvons nous permettre 100 fois plus d'écritures sur disque par seconde sans avoir à répartir la base de données sur 100 broches. .

Quelqu'un d'autre est-il intéressé par cela? J'ai testé quelques disques SSD et je peux partager mes résultats. Si quelqu'un sur ce site a déjà résolu son goulot d'étranglement d'E / S avec des SSD, j'aimerais entendre vos histoires de guerre!

PS. Je sais qu'il existe de nombreuses solutions coûteuses qui contribuent à l'évolutivité, par exemple les SAN basés sur la RAM éprouvés. Je veux être clair que même 50 000 $ sont trop chers pour mon projet. Je dois trouver une solution qui ne coûte pas plus de 10 000 $ et ne prend pas beaucoup de temps à mettre en œuvre.


Dave, NXC et Burly,

Merci pour vos réponses! Je voudrais préciser que le mot «bon marché» est très important dans ma situation. Donc, je dois utiliser des serveurs Dell bon marché (2950 $ 4K qui n'ont que 8 banques de mémoire). J'ai déjà 32 Go de RAM installés, donc je ne peux pas continuer à évoluer de cette façon. De plus, l'ajout de RAM ne vous évite pas les goulots d'étranglement sur le disque, ce qui est mon principal problème en ce moment.

J'étais préoccupé par la durée de vie des SSD, mais après avoir lu sur les algorithmes modernes de nivellement de l'usure, je suis presque sûr que ces disques dureront assez longtemps. Ma base de données écrit 300 Go par jour et devrait dépasser 1 To par jour en 2009. Les disques SSD d'entreprise sont conçus pour gérer environ 10 To d'écritures par jour sur plusieurs années.

Je ne suis pas d'accord avec le point de Burly selon lequel il faut trop de travail pour migrer de SAS vers SSD. Ma base de données est un miroir synchrone, donc je peux mettre à niveau un côté du miroir, puis le regarder pendant quelques mois, et s'il saute, je peux basculer vers le deuxième serveur qui a toujours les vieux bons disques durs SAS ...

Dennis Kashkin
la source
2
BTW, bien que vous indiquiez comment l'amélioration des performances pourrait potentiellement réduire les coûts matériels, vous n'exprimez pas clairement comment les SSD réduiraient votre coût principal - la main-d'œuvre. Je suppose que vous comprenez probablement qu'une réduction de la taille de l'installation peut réduire vos besoins en personnel
Burly
2
Ma base de données fonctionnait avec bonheur pendant 3 ans sans aucun DBA ou consultant à temps plein. Ensuite, la charge a augmenté au point où nous nous heurtons à des goulots d'étranglement d'E / S. Donc, je devrai peut-être payer beaucoup d'argent aux administrateurs de base de données pour le partitionnement et la défragmentation de la base de données. Ou obtenez simplement des SSD bon marché.
Dennis Kashkin
J'ai mis à jour ma réponse pour discuter des contraintes de coût que vous avez ajoutées. Selon l'espace, la taille, les performances, la maintenance et les exigences de modification de votre base de données, les SSD peuvent certainement offrir une solution rentable. La conception de la solution et l'analyse des coûts dépassent notre champ d'application ici. Bonne chance!
Burly
Vous avez trop bu koolaid, le SSD est, au mieux, 1,5 fois plus rapide à lire qu'un disque RAID, mais les écritures sont plus lentes que les disques magnétiques. Un SANS à base de fibre avec un RAID haute vitesse détruira tout SSD, peu importe sa qualité.
TravisO
Je voulais juste partager - nous utilisons une base de données de 400 Go sur SSD depuis 5 mois maintenant. Cette base de données reçoit beaucoup d'activité d'écriture (jusqu'à 1200 transactions par seconde). Nous n'avons eu aucun problème jusqu'à présent, et les performances ont été considérablement meilleures par rapport aux RAID10 avec des disques SAS à 15 000 tr / min. Les disques restent inactifs à 96%. Donc, étant donné que les SSD deviennent incroyablement bon marché maintenant (600 $ pour un disque Intel de 160 Go), je dirais que c'est une meilleure façon de faire évoluer les E / S que les SAN.
Dennis Kashkin

Réponses:

20

Problèmes potentiels

J'ai quelques problèmes avec l'utilisation de SSD pour les bases de données de production à l'heure actuelle

  • La majorité des transactions de base de données sur la majorité des sites Web sont des lectures et non des écritures. Comme l'a dit Dave Markle, vous optimisez d'abord ces performances avec la RAM.
  • Les SSD sont nouveaux sur les marchés grand public et des entreprises et aucun administrateur digne de ce nom ne va déplacer une base de données de production qui nécessite actuellement des disques U320 à 15 000 tr / min en RAID5 communiquant via un canal de fibres à une technologie non éprouvée.
  • Le coût de la recherche et des tests pour passer à cette nouvelle technologie, l'examiner dans leur environnement, mettre à jour les procédures d'exploitation, etc., est un coût initial plus élevé, en termes de temps et d'argent, que la plupart des magasins doivent épargner.

Avantages proposés

Cela dit, il y a un certain nombre d'éléments, au moins sur papier, en faveur des SSD à l'avenir:

  • Consommation d'énergie inférieure à celle d'un disque dur
  • Production de chaleur beaucoup plus faible
  • Performances par watt supérieures à celles d'un disque dur
  • Débit beaucoup plus élevé
  • Latence beaucoup plus faible
  • La plupart des SSD de génération actuelle ont de l'ordre de millions de cycles d'endurance en écriture, donc l'endurance en écriture n'est plus un problème comme c'était le cas auparavant. Voir un article un peu daté ici

Ainsi, pour une référence de performances donnée, lorsque vous tenez compte du coût total de possession, y compris les coûts directs d'alimentation et de refroidissement indirect, les SSD peuvent devenir très attractifs. De plus, selon les particularités de votre environnement, la réduction du nombre d'appareils requis pour un niveau de performance donné pourrait également entraîner une réduction des besoins en personnel, réduisant ainsi les coûts de main-d'œuvre.

Coût et performance

Vous avez ajouté que vous avez une contrainte de coût inférieure à 50 000 USD et que vous souhaitez vraiment la maintenir sous 10 000 USD. Vous avez également déclaré dans un commentaire que vous pouvez obtenir des SSD "bon marché", en précisant que les SSD seront moins chers que les DBA ou les consultants. Cela peut être vrai selon le nombre d'heures dont vous auriez besoin d'un DBA et s'il s'agit d'un coût récurrent ou non. Je ne peux pas faire l'analyse des coûts pour vous.

Cependant, une chose que vous devez faire très attention est le type de SSD que vous obtenez. Tous les SSD ne sont pas créés égaux. Dans l'ensemble, les SSD "bon marché" que vous voyez à vendre dans le dollar de 200 à 400 $ (20/11/2008) sont destinés aux environnements à faible puissance / chaleur comme les ordinateurs portables. Ces disques ont en fait des niveaux de performances inférieurs à ceux d'un disque dur de 10 000 ou 15 000 tr / min, en particulier pour les écritures. Les disques de niveau entreprise qui ont les performances les plus importantes dont vous parlez - comme la série Mtron Pro - sont assez chers. Actuellement, ils sont autour de:

  • 400 USD pour 16 Go
  • 900 USD pour 32 Go
  • 1400 USD pour 64 Go
  • 3200 USD pour 128 Go

Selon votre espace, vos performances et vos exigences de redondance, vous pourriez facilement faire exploser votre budget.

Par exemple, si vos besoins nécessitaient un total de 128 Go de stockage disponible, alors RAID 0 + 1/10 ou RAID 5 avec 1 hotspare serait ~ 5600 $

Si vous aviez besoin d'un To de stockage disponible, alors RAID 0 + 1/10 serait ~ 51K $ et RAID 5 avec 2 hotspares serait ~ 32K $.

Grande image

Cela dit, l'installation, la configuration et la maintenance d'une grande base de données de production nécessitent une personne hautement qualifiée. Les données contenues dans la base de données et les services fournis à partir de ces données ont une valeur extrêmement élevée pour les entreprises ayant ce niveau d'exigences de performance. De plus, il y a beaucoup de choses qui ne peuvent tout simplement pas être résolues en jetant du matériel sur le problème. Un SGBD mal configuré, un schéma de base de données ou une stratégie d'indexation médiocres peuvent / ruiner / les performances d'une base de données. Regardez les problèmes rencontrés par Stackoverflow lors de leur migration vers SQL Server 2008 ici et ici. Le fait est qu'une base de données est une application ardue non seulement sur le disque mais aussi sur la RAM et le CPU. Équilibrer le problème de performances à plusieurs variables avec l'intégrité des données, la sécurité, la redondance et la sauvegarde est un exercice délicat.

En résumé, bien que je pense que toutes les améliorations de la technologie matérielle et logicielle sont bien accueillies par la communauté, l'administration de bases de données à grande échelle - comme le développement de logiciels - est un problème difficile et continuera de nécessiter des travailleurs qualifiés. Une amélioration donnée peut ne pas générer les coûts de réduction de la main-d'œuvre que vous ou une entreprise pouvez espérer.

Un bon point de départ pour certaines recherches pourrait être le site Web / blog de Brent Ozar ici . Vous pourriez reconnaître son nom - c'est lui qui a aidé l'équipe stackoverflow avec leurs problèmes de performances MS SQL Server 2008. Son blog et ses ressources qu'il relie pour offrir un peu d'ampleur et de profondeur.

Mise à jour

Stackoverflow utilise lui-même la route SSD grand public pour son stockage. Lisez à ce sujet ici: http://blog.serverfault.com/post/our-storage-decision/

Les références

Costaud
la source
Excellente réponse.
NotMe
Vous avez passé beaucoup trop de temps là-dessus: P
TravisO
Des explications impressionnantes. Découpé dans du bois pour tout le monde. Bon travail!
BerggreenDK
4

Si vous avez un site vraiment très fréquenté qui peut bénéficier d'un SSD pour des performances d'écriture accrues, vous aurez probablement un problème avec la durée de vie du SSD, donc je ne suis pas encore vendu pour cela.

Dans cet esprit, que faire des bases de données qui ont des niveaux de lecture élevés? La réponse est simple: confiture du serveur avec autant de RAM que possible. Vous constaterez que les tables les plus chaudes sont presque toujours conservées dans le cache RAM de toute façon, et tout grand accès au disque sera probablement dû à une grande table ou à un index, qui peut souvent être optimisé avec une indexation appropriée.

Dave Markle
la source
Je revisiterais votre commentaire sur la préoccupation de la durée de vie du SSD. En termes de MTBF, le SSD a une cote beaucoup plus élevée qu'un disque dur. En termes d'endurance du cycle d'écriture - auparavant un problème, la génération actuelle est> 1 million de cycles d'écriture, ce qui en fait un non-problème, en particulier dans les configurations RAID.
Burly
(Hors caractères) ... Ce n'est pas que vous ne devriez pas vous soucier de la durée de vie d'un SSD, c'est juste que les notes techniques actuelles suggèrent que les SSD sont égaux ou supérieurs à un homologue HDD. Le fait que les SSD n'aient pas des décennies d'expérience dans la production signifie qu'ils ne sont pas prouvés.
Burly
Les SSD sont plus lents à écrire que les HD
TravisO
Les disques SSD sont généralement beaucoup plus rapides lors des écritures aléatoires, en particulier les écritures aléatoires 4K. Ils peuvent être plus lents pour les écritures séquentielles, mais ce n'est pas nécessairement important pour les serveurs de base de données.
ChrisInEdmonton
1

Je travaille en tant qu'administrateur de base de données depuis plus de 5 ans et réfléchir aux moyens d'améliorer les performances de la base de données est toujours à l'arrière de ma mine. J'ai regardé l'espace SSD et je pense qu'ils deviennent de plus en plus une option viable.

Regarde ça;

http://i.gizmodo.com/5166798/24-solid-state-drives-open-all-of-microsoft-office-in-5-seconds

Il y a aussi un nouveau produit produit par Acard appelé l'ANS-9010 qui est une version améliorée du GC-Ramdisc qui vous permet d'utiliser le ram DDR2 pour créer un lecteur SATA (jusqu'à 64gig) en utilisant des bâtons DDR2 avec un 400MB / s théorique maximum.

http://techreport.com/articles.x/16255/3

^^ Mais l'autre chose qui est utile dans cet article, c'est qu'il compare l'ANS-9010 à tous les joueurs sur le marché des SSD et il s'avère qu'Intel a un SSD 64 Go x25-E qui est à peu près comparable à un ramdisk matériel.

La chose qui m'inquiéterait à propos du SSD est de les épuiser avec tout le stress qu'une grande base de données leur ferait subir, et vous devriez donc utiliser raid pour mettre en miroir les disques, ce qui signifie que vous payez deux fois plus;

Et l'inconvénient du ramdisk matériel est que la batterie, dans le cas d'une coupure de courant, ne l'alimente que pendant si longtemps que vous devrez trouver un moyen sophistiqué de la sauvegarder. Je crois que vous pouvez également acheter une prise secteur pour eux, mais cela dépend toujours de votre onduleur.

Je vous suggère d'utiliser le disque RAM matériel pour le DB temporaire et le fichier d'échange Windows - et de mettre la base de données sur l'Intel X25-E Extreme (environ 600 USD pour 64 gig).

Quoi qu'il en soit, cela crierait et rendrait tous les autres très jaloux.

(Pensez également à utiliser un autre ANS-9010 pour héberger le site Web)

À la vôtre, Dave


la source
1

Nous venons de monter un serveur W2K3 R2 64 bits Sql 2008 sur un double miroir hybride Seagate Momentus XT de 2,5 pouces - 1/4 de course pour OS et 1/4 de course pour DB. Nous utilisions donc 125 Go pour le système d'exploitation et 125 Go pour la base de données. obtenaient des lectures séquentielles de 1500 Mo / s à 1900 Mo / s. Sur un Intel i7 2600K 3,4 GHz 8 Go

Adam Smith
la source
0

Il existe des produits sur le marché comme celui- ci qui font ce genre de choses. En outre, comme le dit l'autre affiche, l'ajout de RAM supplémentaire au serveur DB vous donnera de meilleurs taux d'accès au cache, ce qui réduira le trafic sur le disque.

Les serveurs Opteron à 8 sockets tels qu'un Sun X4600 vous permettront d'y installer jusqu'à 256 Go de RAM à des prix encore moins chers qu'une grande équipe DBA. Vous pouvez également envisager d'utiliser des fichiers plats plutôt qu'un SGBD (comme cette entreprise l'a fait), ce qui vous donnera de meilleures performances qu'un SGBD. Dans ce cas, un SAN vous donnera un certain degré d'intégrité des données. Cependant, vous devrez concevoir soigneusement votre stratégie d'accès aux données pour éviter de vous retrouver dans un pétrin. Apparemment, quelques tenues dot-com à grand volume le font. Il est considérablement plus efficace qu'un SGBD, permettant à un matériel assez piéton de gérer de grandes charges et évite les frais de licence de SGBD.

ConcernedOfTunbridgeWells
la source
-1

Les disques SSD sont basés sur une mémoire flash NAND (MLC ou SLC). Si vous achetez des disques SSD au format SATA (2 ou 3), vous limitez les performances que vous pouvez en tirer. En règle générale, les disques SSD basés sur le contrôleur rapide Sandforce SF-1200 produisent des lectures de 220 Mo / seconde et des écritures de 205 Mo / seconde - beaucoup plus rapidement qu'un disque rotatif mécanique à l'ancienne.

Cependant, si vous passez à une solution PCIe telle que FusioIO, qui n'a pas le connecteur SATA 2 ou SATA 3 lent impliqué, vous envisagez des solutions 10 à 50 fois plus rapides que les taureaux mécaniques rotatifs (je veux dire les disques).

Donc, pour votre solution "bon marché", optez pour un SDD SATA 2/3 basé sur le contrôleur Sandforce SF-1200. Cela vous permettra d'obtenir une amélioration de la vitesse d'environ 3 à 5 fois (basée sur l'expérience réelle). Si vous avez le budget, optez pour le FusioIO. Rien ne le battra en termes de performances. C'est incroyablement rapide. Attendez-vous à dépenser 20 000 $ à 50 000 $.

John DeRegnaucourt
la source
2
Erreur. Un SSD moderne est bon pour environ 50000 IOPS, offrant un débit de 580 Mo. Un SAS fait moins de 500 IOPS. Les bases de données ne sont pas des serveurs de fichiers.
TomTom