web-dev-qa-db-fra.com

Pour améliorer les performances SQL, pourquoi ne pas simplement mettre beaucoup de RAM plutôt que d'avoir des disques durs plus rapides?

Les gens continuent à me dire que pour améliorer les performances d'une SQL Server, achetez les disques durs les plus rapides possible avec RAID 5, etc.

Donc, je pensais, au lieu de passer tout l'argent pour RAID 5 et des disques durs rapides de Super-Duper (ce qui n'est pas bon marché au moyen), pourquoi ne pas simplement obtenir des tonnes de RAM? Nous savons qu'un serveur SQL charge la base de données en mémoire. La mémoire est Wayyyy plus rapide que tous les disques durs.

Pourquoi ne pas truc de 100 Go de RAM sur un serveur? Ensuite, utilisez un disque dur SCSI régulier avec RAID 1. Cela ne serait-il pas beaucoup moins cher et plus rapide?

31
user1034912

Version courte: Considérez la taille du jeu de travail. Version longue: Quelle est la taille de vos données? Si cela peut correspondre à la mémoire d'un serveur moderne, oui, vous avez absolument raison. Malheureusement, le plus grand Xeon peut adresser 2 To de RAM== tout en ce moment, et ce n'est pas si grand d'un jeu de données plus. Si vous ne pouvez pas acheter la machine assez grande pour accueillir votre ensemble de travail en RAM , vous êtes obligé de résoudre des problèmes avec votre cerveau, pas votre portefeuille.

11
Marcin

Si vous voulez une vitesse :

  • Augmentation RAM Ainsi, au moins les index utilisées fréquemment peuvent être entièrement adaptés à RAM (par exemple, sur un système, je travaille sur, 32GB RAM est beaucoup pour une base de données de 350 Go, car les index sont ce dont vous avez besoin dans la RAM, pas des données brutes)
  • Utilisez RAID10 avec des disques (les disques plus rapides sont meilleurs)
  • éviter raid5
  • Split MDF, LDF et TEMP DB sur des ensembles de broches discrètes (Exemple: TEMPDB sur son propre ensemble RAID1, LDF sur son propre ensemble de broche RAID1 ou RAID10, MDF sur un RAID 10 défini avec au moins 4 disques totaux)

Suivez ces étapes et SQL Server volera.

Ensuite, si vous voulez, ajoutez plus de RAM ... mais faites d'abord ce qui précède, et vous pouvez bien vous trouver.

8

Cette question ressemble à une base de base qui a conduit à beaucoup de recherche et de développement dans les architectures de base de données au cours des 5 à 10 dernières années. Maintenant qu'il est possible de stocker une base de données entière dans RAM pour de nombreux cas d'utilisation, la base de données doit être conçue autour de travailler dans la RAM, plutôt que de simplement appliquer des architectures héritées plus anciennes au stockage basé sur la RAM.

Tout autant de langues plus petites et plus spéciales ont été largement adoptées ces dernières années, nous entrons dans une ère plus de bases de données spéciales.

Pour une lecture supplémentaire sur ce sujet, je recommande le papier académique la fin d'une ère architecturale (il est temps pour une réécriture complète) . Ce n'est pas une lecture difficile.

Il n'est pas clair si cette question était spécifiquement sur SQL Server. L'affiche originale devrait clarifier cela.

Daniel Pittman a écrit:

Si vous avez un petit ensemble de données ou que vous n'avez pas besoin de la persister sur le disque, il n'y a rien de mal> avec votre idée. Des outils tels que VoltDB s'emploient à réduire les frais généraux que les hypothèses plus anciennes> dans les implémentations de RDBMs fabriquées qui contraindront les performances en mémoire pure.

La réduction des frais généraux des hypothèses plus anciennes dans les implémentations de la RDBMS était exactement l'objectif de conception de Voltdb , mais il fait échelle horizontalement sans limite architecturale sur la taille de données, et elle peut persister sur le disque pour une durabilité complète à l'aide d'une instantanée et journalisation de commande.

1
BenjaminBallard

Si vous pouvez obtenir un serveur avec suffisamment RAM pour tenir, au moins, la partie chaude de votre ensemble de données, tout ira bien. De plus, RAID 1 et 5 ne sont pas le moyen le plus rapide d'organiser Vos données - RAID 0 sont plus rapides, mais vous devrez donc envisager les chances plus élevées d'une défaillance du système de fichiers qui élimine votre base de données - et non une bonne chose à se produire. Vous pouvez raid 1 ou RAID 5 votre matrice RAID 0, à condition que vous avez suffisamment de lecteurs et de contrôleurs.

Vous pouvez même jouer avec la réplication ici - Faites vos écritures sur un serveur lourde disque qui se reproduit à un ou plusieurs serveurs de mémoire lourde lorsque vous exécutez des requêtes compliquées.

Malheureusement, les RDBMS semblent être dans le royaume du grand fer - ils ne sont pas aussi faciles à croître horizontalement.

0
rbanffy

C'est un cas de "Cela dépend de ce que tu fais." Peut-être que le "droit" des conseils est d'éviter complètement SQL et d'utiliser MemCache/Redis/etc!

Je suis d'accord avec vous que Extra RAM====== J'ajoutera beaucoup, surtout si vous êtes en mesure de lire l'ensemble de l'ensemble de travail dans la RAM. Oui, il devra toujours écrire des données, mais si vous avez surtout lis Ensuite, les écrivies n'auront aucune affirmation pour les E/S du disque.

Cependant, les performances du disque sont souvent un goulot d'étranglement sur des serveurs SQL et plus durs que d'autres choses comme RAM pour mettre à niveau ultérieurement (si vous avez un serveur qui n'est pas entièrement peuplé avec DIMMS).

Il y avait un certain nombre de commentaires sur RAID5 étant lent, mais je dirais que ce n'est pas toujours le cas, alors faites attention avant de faire des déclarations de balayage. Les serveurs vraiment haut de gamme avec des cartes RAID rapides et beaucoup de BBWC vont parfois beaucoup plus vite dans RAID5 (ou RAID50 avec> 4 disques) qu'ils ne le font à RAID10 ...

Au fil des ans, j'ai personnellement expérimenté des matrices RAID5 lents, mais après avoir analysé un DL360 G5 avec 4 146g SAS Disques dans ~ 2009, nous avons dû vérifier nos tests. En effet, le tableau est allé plus vite. Avec RAID5 que RAID10 dans presque tous les tests. Les calculs BBWC et les calculs de parité rapides ont permis au serveur pourraient utiliser les 4 disques beaucoup plus efficacement comme une matrice RAID5 que RAID10. Certains des tests ont montré 50% de meilleur débit avec RAID5, et presque aucun n'était plus lent. Les tests qui étaient plus lents n'étaient que 5 à 10% de réduction.

Je mettrai la garde des personnes qui font des déclarations de couverture que RAID5 est lente, tout le monde le dit en ligne, mais ce n'est tout simplement pas vrai dans tous les cas.

0
Matt