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:
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 :)
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 ...
la source
Réponses:
Problèmes potentiels
J'ai quelques problèmes avec l'utilisation de SSD pour les bases de données de production à l'heure actuelle
Avantages proposés
Cela dit, il y a un certain nombre d'éléments, au moins sur papier, en faveur des SSD à l'avenir:
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:
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
la source
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.
la source
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
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
la source
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.
la source
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 $.
la source