Cours de maître sur les performances MySQL : de l'entrée à la maîtrise, accélérez facilement la base de données

Résumé : En tant que base de données open source largement utilisée dans le monde, l'optimisation des performances de MySQL est très importante. Cet article présentera en détail une série de pratiques sur l'optimisation des performances de MySQL, y compris la sélection du moteur de stockage, la structure de la table de données, la conception de l'index, le mécanisme de mise en cache, l'optimisation des requêtes SQL, l'analyse des performances, la surveillance, le partitionnement, les paramètres de connexion et de ressources et la maintenance de la base de données. etc., pour aider tous les programmeurs Level à améliorer facilement les performances de la base de données.

Choisissez le bon moteur de stockage

Cas : concevoir un système de blog qui doit prendre en charge les transactions et les clés étrangères. Sélectionnez le moteur de stockage InnoDB :

CREATE TABLE posts (
  id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  title VARCHAR(255) NOT NULL,
  content TEXT NOT NULL,
  user_id INT UNSIGNED,
  FOREIGN KEY (user_id) REFERENCES users(id)
) ENGINE=InnoDB;

Optimiser la structure de la table de données

Cas : table utilisateur, utilisez le type de données approprié et la contrainte NOT NULL :

CREATE TABLE users (
  id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  username VARCHAR(50) NOT NULL,
  email VARCHAR(100) NOT NULL,
  age TINYINT UNSIGNED NOT NULL
) ENGINE=InnoDB;

Conception et optimisation d'index

Cas 1 : système de blog, interroger les articles de blog en fonction de l'identifiant de l'auteur, créer un index :

CREATE INDEX idx_user_id ON posts(user_id);

Cas 2 : Système de blog, rechercher selon le titre de l'article, et créer un index plein texte :

ALTER TABLE posts ADD FULLTEXT INDEX idx_title_fulltext(title);

Utiliser la mise en cache pour améliorer les performances

Cas : Définissez la taille du cache de requête sur 64 Mo et utilisez le cache de requête :

SET GLOBAL query_cache_size = 67108864;

SELECT SQL_CACHE * FROM users WHERE age > 30;

Optimiser les requêtes SQL

Cas : système de blog, interrogez les 5 derniers articles de chaque auteur :

SELECT user_id, title, content
FROM posts
WHERE user_id IN (SELECT id FROM users)
ORDER BY id DESC
LIMIT 5;

Analyser les performances SQL

Cas : Utilisez EXPLAINla commande pour analyser le plan d'exécution de l'instruction de requête :

EXPLAIN SELECT user_id, title, content
FROM posts
WHERE user_id IN (SELECT id FROM users)
ORDER BY id DESC
LIMIT 5;

Surveillance et diagnostic des problèmes de performances

Cas 1 : activez le journal des requêtes lentes et définissez le seuil de requête lente sur 1 seconde :

SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1;

Cas 2 : Requête lente où l'exécution de la requête prend plus d'une seconde :

SELECT * FROM mysql.slow_log WHERE query_time > 1;

Utiliser des partitions pour améliorer les performances des requêtes

Cas : created_atpartitionnez la table article en plusieurs petites tables en fonction des champs :

CREATE TABLE posts (
    id INT UNSIGNED AUTO_INCREMENT,
    title VARCHAR(255) NOT NULL,
    content TEXT NOT NULL,
    user_id INT UNSIGNED,
    created_at DATE,
    PRIMARY KEY (id, created_at)
    ) ENGINE=InnoDB
    PARTITION BY RANGE (YEAR(created_at) * 10000 + MONTH(created_at)) (
    PARTITION p201801 VALUES LESS THAN (20180200),
    PARTITION p201802 VALUES LESS THAN (20180300),
    ...
    PARTITION p202112 VALUES LESS THAN (20220100)
);

Optimiser les paramètres de connexion et de ressources

Cas 1 : définissez le nombre maximum de connexions sur 500 :

SET GLOBAL max_connections = 500;

Cas 2 : définissez la taille du tampon de lecture de chaque connexion sur 2 Mo :

SET GLOBAL read_buffer_size = 2097152;

Maintenance régulière de la base de données

Cas 1 : analysez la table des utilisateurs pour mettre à jour les statistiques de la table :

ANALYZE TABLE users;

Cas 2 : Optimiser la table des articles pour récupérer de l'espace disque et ranger les fichiers de données :

OPTIMIZE TABLE posts;

Des cas pratiques dans six domaines clés pour vous aider à mieux comprendre et appliquer ces points de connaissance.

Sélection du moteur de stockage

Cas : Supposons que vous développez un site Web de forum et que la plupart des opérations consistent à lire les messages et les commentaires des utilisateurs. Compte tenu de la priorité plus élevée des performances de lecture, vous pouvez choisir MyISAM comme moteur de stockage. Cependant, si vous souhaitez prendre en charge les transactions et le verrouillage au niveau des lignes pour l'intégrité des données, alors InnoDB serait un meilleur choix.

Conception de la structure de la table de données

Cas : concevez un tableau de produits, y compris l'ID du produit, le nom du produit, la description du produit, le prix et la quantité en stock. Afin d'optimiser la structure de la table, vous pouvez utiliser la clé primaire de type INT comme ID de produit, utiliser le type VARCHAR pour stocker le nom et la description du produit, utiliser le type DECIMAL pour stocker le prix et utiliser le type SMALLINT pour stocker le quantité d'inventaire.

Techniques d'indexation avancées

Cas : Sur la table des commandes d'un site Web de commerce électronique, il est souvent nécessaire d'interroger les commandes en fonction de l'ID utilisateur et de l'heure de création de la commande. Pour optimiser les performances des requêtes, un index joint peut être créé :

CREATE INDEX idx_user_created_at ON orders(user_id, created_at);

Écriture SQL efficace

Cas : lorsque vous interrogez un site de blog pour obtenir une liste d'articles, vous souhaiterez peut-être trier par date de publication dans l'ordre décroissant et limiter le nombre de résultats renvoyés. La requête SQL suivante peut être utilisée :

SELECT * FROM posts WHERE publish_date <= CURDATE() ORDER BY publish_date DESC LIMIT 10;

outil d'analyse des performances

Cas : En utilisant EXPLAIN pour analyser la requête suivante, un problème d'analyse complète de la table peut être trouvé :

EXPLAIN SELECT * FROM users WHERE age > 25;

Afin de résoudre le problème du balayage complet de la table, vous pouvez créer un index sur le champ age :

CREATE INDEX idx_age ON users(age);

Configuration matérielle et système

Cas : Afin de réduire les E/S de disque, la taille du pool de mémoire tampon de MySQL peut être ajustée à une valeur appropriée. Par exemple, si la mémoire du serveur est de 16 Go, vous pouvez définir la taille du pool de mémoire tampon InnoDB sur 12 Go :

SET GLOBAL innodb_buffer_pool_size = 12 * 1024 * 1024 * 1024;

Cet article présente une série de pratiques pratiques d'optimisation des performances de MySQL et des cas spécifiques en détail. Ces pratiques et exemples aideront les programmeurs de tous niveaux à améliorer facilement les performances de la base de données, augmentant ainsi la réactivité des applications. Assurez-vous de choisir une méthode d'optimisation appropriée en fonction du scénario de l'application et des besoins de l'entreprise, et gardez un œil sur les performances de la base de données, et effectuez une optimisation régulière pour vous assurer que l'application s'exécute toujours dans un bon état.

Le but de cet article est d'aider les programmeurs à comprendre et à maîtriser les techniques et les méthodes d'optimisation des performances des bases de données MySQL. Avec la demande toujours croissante de capacités de traitement de données dans les applications modernes, l'optimisation des performances des bases de données est devenue un élément essentiel du processus de développement logiciel. L'optimisation des performances de la base de données MySQL peut améliorer la vitesse de réponse de l'application, réduire la consommation des ressources du serveur et améliorer l'expérience utilisateur.

Cet article vise à fournir un système complet et systématique de connaissances sur l'optimisation des performances de MySQL pour les programmeurs de différents niveaux d'expérience. L'article couvre la sélection du moteur de stockage, l'optimisation de la structure de la table de données, la conception d'index, le mécanisme de mise en cache, l'optimisation des requêtes SQL, l'analyse des performances, la surveillance, le partitionnement, les paramètres de connexion et de ressources, la maintenance de la base de données et d'autres aspects. Grâce à ces pratiques d'optimisation pratiques et à ces cas spécifiques, les programmeurs peuvent progressivement améliorer leurs compétences et faire face facilement aux différents défis de performance des bases de données.

En bref, la raison d'écrire cet article est de répondre aux besoins d'apprentissage des programmeurs pour l'optimisation des performances de MySQL et de les aider à maîtriser des compétences et des méthodes pratiques, améliorant ainsi les performances de la base de données, améliorant la vitesse de réponse des applications et offrant une meilleure expérience aux utilisateurs.

Je suppose que tu aimes

Origine blog.csdn.net/juedaifenghua2/article/details/130186725
conseillé
Classement