Mysql
 sql >> Base de données >  >> RDS >> Mysql

Quelle est la taille trop grande pour une table MySQL ?

Il n'y a pas de solution générale idéale à la question "Quelle est la taille, c'est trop gros ?". De telles préoccupations dépendent souvent de ce que vous faites avec vos données et de vos considérations en matière de performances.

Il existe des limites fondamentales sur la taille des tables. Vous ne pouvez pas avoir plus de 1000 colonnes. Vos enregistrements ne peuvent pas dépasser 8 Ko chacun. Ces limites varient en fonction du moteur de base de données. (Celles-ci sont pour InnoDB.)

Il semble que vous ayez fusionné plusieurs ensembles de données différents dans une seule table. Vous avez probablement des champs qui vous indiquent à quel ensemble de données cet enregistrement se rapporte, ainsi que des champs de données et des informations d'horodatage. Ce n'est pas un enregistrement très large (à moins que vous n'enregistriez, par exemple, tous les paramètres d'entrée de chaque requête.) Votre principal problème sera la sélectivité . Indexer ce tableau de manière significative sera un défi. Si vos champs communs peuvent être suffisamment sélectifs pour que vous puissiez les utiliser pour accéder aux enregistrements souhaités sans consulter la table, ce sera un énorme avantage. (Cf. balayage de table)

Pour autant d'enregistrements par jour (en gros, deux par seconde toute la journée, et je suppose que vous avez une période de pointe où c'est beaucoup plus élevé), vous voudrez également vous assurer que vous examinez spécifiquement les optimisations sur amélioration de la vitesse d'insertion . En règle générale, plus d'index =insertions plus lentes. Si vous le pouvez, envisagez d'archiver entièrement les enregistrements obsolètes dans une autre table. Dans les lieux de travail précédents, nous avons utilisé une stratégie d'archivage du mois dernier, des trois mois précédents, des six mois précédents, chacun dans des tableaux séparés. Une autre idée consiste à supprimer les anciens enregistrements. De nombreux environnements n'ont tout simplement pas besoin d'informations au-delà d'une certaine date. Conserver les enregistrements de journalisation d'il y a trois mois est souvent trop coûteux.

Enfin, ne négligez pas le stockage physique de votre tableau. Plus vos enregistrements sont minces, moins il faut d'E/S physiques pour lire (ou d'ailleurs, pour insérer) un enregistrement. Vous pouvez stocker vos index sur un disque dur physique séparé. S'il y a beaucoup de données redondantes dans vos enregistrements, le stockage de la table compressée peut en fait entraîner une augmentation de la vitesse. Si vous avez un peu d'argent à dépenser, considérez la valeur d'une bonne matrice RAID pour répartir vos données.

Donc, pour répondre à votre question de base :ça fait beaucoup de disques, mais avec un œil attentif sur le réglage, ce ne sera pas un problème.