Maison base de données tutoriel mysql Tables partitionnées dans MySQL : introduction détaillée et techniques d'optimisation

Tables partitionnées dans MySQL : introduction détaillée et techniques d'optimisation

Jun 14, 2023 pm 05:07 PM
mysql 优化 分区表

À mesure que la quantité de données continue de croître, le stockage et l'interrogation de données dans MySQL deviennent de plus en plus difficiles. La table de partition est une fonction de la base de données MySQL, qui peut résoudre le problème du volume de données important et de la lenteur des requêtes. Cet article présentera en détail la table de partition dans MySQL et fournira plusieurs conseils d'optimisation.

1. Qu'est-ce que la table de partition MySQL ?

La table de partition MySQL est une fonctionnalité introduite après la version 5.1 de MySQL. Elle permet de diviser une grande table en plusieurs petites sous-tables. Les données de chaque sous-table peuvent être séparées, stockées et interrogées selon des conditions spécifiées. Par exemple, les données de transaction d'un utilisateur peuvent être séparées en différents sous-tableaux par année ou par mois. Chaque sous-table peut être gérée indépendamment, améliorant considérablement l'efficacité des requêtes et de la maintenance.

2. Pourquoi devez-vous utiliser la table de partition MySQL ?

  1. Améliorer l'efficacité des requêtes

Normalement, une faible efficacité des requêtes se produit lorsque de grandes tables stockent des données. Lorsque la quantité de données est importante, l'opération de requête prendra beaucoup de temps et occupera une grande quantité de ressources système. L'utilisation de tables partitionnées permet d'effectuer des opérations de requête uniquement sur des sous-tables spécifiques, améliorant ainsi considérablement l'efficacité des requêtes.

  1. Réduire les coûts de stockage

L'utilisation de tables de partition peut séparer les données en différentes sous-tables pour le stockage, réduisant ainsi l'espace de stockage de chaque table de données. Cela réduit les coûts de stockage.

  1. Entretien pratique

Chaque sous-table peut être entretenue indépendamment sans utiliser la table entière, ce qui rend la maintenance plus pratique.

3. Comment créer une table de partition MySQL ?

Le processus de création d'une table partitionnée est similaire à la création d'une table normale. La différence réside dans la nécessité de spécifier la méthode et les champs de partitionnement. Par exemple, nous créons une table d'enregistrement de transactions partitionnée par date. Le code est le suivant :

CREATE TABLE trade_records
(
id INT(11) NOT NULL AUTO_INCREMENT,
trade_time DATETIME NOT NULL,
trade_amount INT(11) NOT NULL,
PRIMARY KEY (id, trade_time)
)
PARTITION BY RANGE (YEAR(trade_time))
(
PARTITION p0 VALUES LESS THAN (2015),
PARTITION p1 VALUES LESS THAN (2016),
PARTITION p2 VALUES LESS THAN (2017),
PARTITION p3 VALUES LESS THAN (2018),
PARTITION p4 VALUES LESS THAN MAXVALUE
);
Copier après la connexion

Dans ce code, lorsque nous créons la table, nous utilisons la clause PARTITION BY RANGE et précisons que le champ trade_time est utilisé comme base. et l'année est utilisée. Et cinq sous-tables sont utilisées pour le partitionnement, de 2015 à durée illimitée. De plus, une clé primaire commune est spécifiée dans le code pour garantir l'unicité entre le champ de clé de partition et la clé primaire.

En plus du partitionnement par plage, vous pouvez également partitionner par liste ou par hachage. En prenant le mode liste comme exemple, nous créons une table d'enregistrement de transactions partitionnée par région. Le code est le suivant :

CREATE TABLE trade_records
(
    id INT(11) NOT NULL AUTO_INCREMENT,
    trade_time DATETIME NOT NULL,
    trade_amount INT(11) NOT NULL,
    location VARCHAR(50) NOT NULL,
    PRIMARY KEY (id, trade_time)
)
PARTITION BY LIST (location)
(
    PARTITION p_domestic VALUES IN ('Shanghai', 'Beijing'),
    PARTITION p_hongkong VALUES IN ('Hong Kong'),
    PARTITION p_others VALUES IN (DEFAULT)
);
Copier après la connexion

Dans ce code, nous utilisons la clause PARTITION BY LIST lors de la création de la table et spécifions le champ de localisation comme base. , répartis selon les régions. Trois sous-tables sont utilisées pour le partitionnement. Parmi elles, la sous-table par défaut p_others peut recevoir des régions autres que les partitions nommées.

4. Compétences d'optimisation de la table de partition MySQL

  1. Divisez raisonnablement le nombre de partitions

Lors de la division des partitions, il doit être déterminé en fonction de la situation réelle. Il est généralement recommandé de le contrôler autour de 10-20. Un trop grand nombre de sous-tables augmente les coûts de maintenance et nécessite plus de temps pour exécuter les requêtes.

  1. Utilisez la clé de partition appropriée

Le choix d'une clé de partition appropriée peut améliorer l'efficacité des requêtes. Si la clé de partition sélectionnée peut diviser les données en différentes sous-tables, seules les sous-tables correspondantes doivent être accessibles pendant la requête, ce qui peut réduire considérablement le temps de requête. Toutefois, si vous choisissez une clé de partitionnement qui ne partitionne pas efficacement les données, la durée de la requête augmentera.

  1. Évitez les requêtes entre partitions

Les requêtes entre partitions peuvent impliquer plusieurs sous-tables, ce qui réduira l'efficacité. Par conséquent, lorsque vous effectuez des requêtes, évitez autant que possible les requêtes entre partitions.

  1. Entretenir régulièrement la table de partition

Bien que la table de partition puisse réduire les coûts de stockage et faciliter la maintenance, en raison de l'utilisation de plusieurs sous-tables, le temps de requête augmentera également en conséquence. Par conséquent, la table doit être conservée avant l'interrogation, par exemple en supprimant les données inutiles ou en optimisant l'index pour améliorer l'efficacité des requêtes.

  1. Utilisez les outils officiellement fournis par MySQL pour l'optimisation

MySQL Official fournit de nombreux outils et astuces qui peuvent être utilisés pour optimiser les performances des tables partitionnées. Par exemple, utilisez l'outil EXPLAIN officiellement fourni pour analyser les problèmes de performances dans les instructions de requête ; utilisez l'outil pt-online-schema-change pour modifier la table de partition afin d'éviter tout impact sur la table pendant le processus de modification.

En bref, le partitionnement des tables est une méthode importante pour l'optimisation de MySQL. En divisant raisonnablement les sous-tables, en sélectionnant les clés de partition appropriées et en entretenant régulièrement les tables, l'efficacité des requêtes peut être considérablement améliorée et les coûts de stockage peuvent être réduits. Cependant, l'utilisation de tables de partition présente également des inconvénients et, en même temps, certains principes et précautions doivent être suivis pour garantir son fonctionnement normal.

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Compétences de traitement de structures de données volumineuses de PHP Compétences de traitement de structures de données volumineuses de PHP May 08, 2024 am 10:24 AM

Compétences de traitement de structures de données volumineuses de PHP

Comment optimiser les performances des requêtes MySQL en PHP ? Comment optimiser les performances des requêtes MySQL en PHP ? Jun 03, 2024 pm 08:11 PM

Comment optimiser les performances des requêtes MySQL en PHP ?

Comment utiliser la sauvegarde et la restauration MySQL en PHP ? Comment utiliser la sauvegarde et la restauration MySQL en PHP ? Jun 03, 2024 pm 12:19 PM

Comment utiliser la sauvegarde et la restauration MySQL en PHP ?

Comment insérer des données dans une table MySQL en utilisant PHP ? Comment insérer des données dans une table MySQL en utilisant PHP ? Jun 02, 2024 pm 02:26 PM

Comment insérer des données dans une table MySQL en utilisant PHP ?

Quels sont les scénarios d'application des types d'énumération Java dans les bases de données ? Quels sont les scénarios d'application des types d'énumération Java dans les bases de données ? May 05, 2024 am 09:06 AM

Quels sont les scénarios d'application des types d'énumération Java dans les bases de données ?

Comment corriger les erreurs mysql_native_password non chargé sur MySQL 8.4 Comment corriger les erreurs mysql_native_password non chargé sur MySQL 8.4 Dec 09, 2024 am 11:42 AM

Comment corriger les erreurs mysql_native_password non chargé sur MySQL 8.4

Comment utiliser les procédures stockées MySQL en PHP ? Comment utiliser les procédures stockées MySQL en PHP ? Jun 02, 2024 pm 02:13 PM

Comment utiliser les procédures stockées MySQL en PHP ?

Comment créer une table MySQL en utilisant PHP ? Comment créer une table MySQL en utilisant PHP ? Jun 04, 2024 pm 01:57 PM

Comment créer une table MySQL en utilisant PHP ?

See all articles