Je veux connaître les IOPS (E / S par seconde) et comment cela influence le fonctionnement de DB CRUD

8

Je veux obtenir un serveur dédié pour ma base de données (MySQL) qui exécute le moteur InnoDB. Il y a cette option dans la capacité InnoDB que vous pouvez définir les IOPS en elle. Disons que j'ai un disque dur SATA 72K-RPM qui permet 100 IOPS. Cela signifie-t-il que ma base de données peut exécuter 100 requêtes SQL simultanées par seconde uniquement ou cela signifie 100 lectures ou écritures simples en 1 seconde? Comment une base de données peut gérer 3000 requêtes par seconde en cours de lancement sur un matériel comme celui-ci? Je suis un peu confus, alors expliquez-le moi. Je souhaite obtenir plus de 200 requêtes d'exécution sur mon serveur dédié.

Alex
la source

Réponses:

10

Les IOPS d'un disque dur vous indiquent le nombre d'opérations d'E / S qu'un lecteur particulier peut effectuer par seconde. Étant donné que les lectures aléatoires, les écritures aléatoires, les lectures séquentielles et les écritures séquentielles ont des caractéristiques de performances différentes, si vous regardez un seul nombre, cela implique qu'il s'agit d'une moyenne pondérée de ces quatre nombres qui représente une certaine charge de travail. Cette charge de travail peut ou non être similaire à la charge de travail qu'une base de données effectuerait réellement, de sorte que votre système pourrait finir par obtenir plus ou moins d'opérations par seconde.

Une requête SQL, en supposant qu'elle effectue des E / S physiques (de nombreuses requêtes n'ont pas besoin d'effectuer d'E / S car elles lisent simplement des données déjà dans la mémoire de la base de données ou dans le cache du système de fichiers ou dans le cache SAN), ont tendance pour effectuer de nombreuses opérations d'E / S. Si vos requêtes effectuent réellement des E / S physiques, une seule requête peut facilement effectuer 100 opérations d'E / S par seconde. Vous pourriez potentiellement avoir 100 requêtes exécutées simultanément, chacune ne pouvant effectuer qu'une seule opération d'E / S physique par seconde, mais cela signifierait probablement que les 100 requêtes prendraient un temps inacceptable pour être renvoyées.

De manière réaliste, si vous devez gérer 3000 requêtes par seconde, vous devrez vous assurer que la grande majorité de vos requêtes n'ont pas besoin d'effectuer d'E / S physiques en s'assurant que les données dont elles ont besoin sont mises en cache (de préférence par la base de données). Et vous devrez répartir les E / S sur un nombre relativement important de disques (avec une configuration RAID appropriée) pour augmenter le nombre total d'IOPS que le système peut effectuer. Ce type de planification de la capacité nécessitera une bonne compréhension de votre application, de vos données, de la quantité d'E / S dont chaque requête aura vraisemblablement besoin, etc. Et vous devrez probablement équilibrer les coûts et les performances la mémoire ou l'ajout de lecteurs ou la modification de la configuration RAID impliquera différents compromis entre le coût, les performances et l'espace disponible qui devront être pris en compte.

Justin Cave
la source