Maison > Article > base de données > Une explication détaillée des tables, bases de données, fragments et partitions MySql
2. Sharding (similaire au sharding)
3. Scale Out/Scale Up et Splittage vertical/Horizontal Splitting
Scale Up (expansion verticale) signifie que l'application peut se développer dans le sens vertical. De manière générale, pour une seule machine, la valeur de Scale Up est que lorsqu'un nœud informatique (machine) ajoute plus de cœurs de processeur, de périphériques de stockage et utilise plus de mémoire, l'application peut utiliser pleinement ces ressources pour améliorer son efficacité. atteindre une bonne évolutivité.
La stratégie de partitionnement de MySql comprend le partitionnement vertical et le partitionnement horizontal.
Répartition verticale (verticale) : fait référence à la division par modules fonctionnels pour résoudre la compétition io entre les tables. Par exemple, elle est divisée en base de données de commandes, base de données de produits, base de données d'utilisateurs... De cette façon, les structures de tables de plusieurs bases de données sont différentes.
Division horizontale (horizontale) : enregistrez les données de la même table en blocs et enregistrez-les dans différentes bases de données pour résoudre la pression de l'augmentation du volume de données dans une seule table. Les structures de tables dans ces bases de données sont exactement les mêmes.
La conception de la structure de la table est divisée verticalement. Certains scénarios courants incluent la
segmentation verticale de grands champs. Créez des champs volumineux séparément dans une autre table pour améliorer les performances d'accès de la table de base. En principe, les champs volumineux dans la base de données doivent être évités dans les applications critiques en termes de performances
. Par exemple, les attributs matériels de l'entreprise peuvent être segmentés verticalement en fonction des attributs de base, des attributs de vente, des attributs d'achat, des attributs de fabrication, des attributs de comptabilité financière, etc. Segmentés verticalement en fonction de la fréquence d'accès. Par exemple, dans les systèmes de commerce électronique et Web 2.0, s'il existe de nombreux paramètres d'attributs utilisateur, les attributs de base fréquemment utilisés et les attributs rarement utilisés peuvent être séparés verticalement et la conception de la structure du tableau peut être divisée horizontalement. Certains scénarios courants incluent
Par exemple, sur un site Web de commerce électronique en ligne, la quantité de données du tableau de commande est trop importante et elle est divisée en fonction des niveaux annuels et mensuels
Le site Web 2.0 en a également. de nombreux utilisateurs enregistrés et utilisateurs actifs en ligne, en fonction de la plage d'ID utilisateur, etc. Méthode, segmenter horizontalement les utilisateurs pertinents et les tableaux étroitement liés à l'utilisateur
Par exemple, le premier message d'un forum doit être affiché sur chaque page à cause du problème de pagination, dans ce cas, le message du haut peut être divisé horizontalement. Venez, évitez de lire dans le tableau tous les messages lors de la récupération du message épinglé
Sous-tableau. superficiellement signifie diviser une table en plusieurs petites tables, et le partitionnement signifie diviser une table en plusieurs petites tables. Les données d'une table sont divisées en N blocs. Ces blocs peuvent être sur le même disque ou sur des disques différents.
La différence entre les tables fractionnées et les partitions
Après avoir divisé la table, les données sont stockées dans les tables divisées. La table principale n'est qu'un shell et l'accès aux données s'effectue dans chaque table divisée. Il n'y a pas de concept de partitionnement de table dans le partitionnement. Le partitionnement divise simplement le fichier stockant les données en plusieurs petits blocs. La table partitionnée est toujours une table et le traitement des données est toujours effectué par vous-même.
Après le fractionnement des tables, la capacité de concurrence d'une seule table a été améliorée et les performances d'E/S du disque ont également été améliorées. La partition surmonte le goulot d'étranglement des E/S du disque et je souhaite améliorer les capacités de lecture et d'écriture du disque pour augmenter les performances de MySQL.
À ce stade, l'objectif des tests des partitions et des sous-tables est différent. L'objectif des sous-tables est de savoir comment améliorer la simultanéité de MySQL lors de l'accès aux données et pour les partitions, comment percer les capacités de lecture et d'écriture de ; le disque, améliorant ainsi les performances de mysql Purpose.
CREATE TABLE sales ( id INT AUTO_INCREMENT, amount DOUBLE NOT NULL, order_day DATETIME NOT NULL, PRIMARY KEY(id, order_day)) ENGINE=InnodbPARTITION BY RANGE(YEAR(order_day)) ( PARTITION p_2010 VALUES LESS THAN (2010), PARTITION p_2011 VALUES LESS THAN (2011), PARTITION p_2012 VALUES LESS THAN (2012),PARTITION p_catchall VALUES LESS THAN MAXVALUE);
Recommandé : " Tutoriel vidéo MySQL
"Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!