Maison base de données tutoriel mysql Exemple de code d'optimisation de connexion d'optimisation MySQL

Exemple de code d'optimisation de connexion d'optimisation MySQL

Mar 16, 2017 pm 02:24 PM

L'optimisation de la connexion

MySQL fait principalement référence aux paramètres impliqués dans le processus de connexion du client à la base de données et à la base de données ouvrant la table de données et index dans réponse à la demande du client Ajustement. Discutons en détail de l'

optimisation MySQL mentionnée ci-dessus Cache Optimisation Cet article mentionne un concept très important, c'est-à-dire que les variables d'affichage sont utilisées pour représenter la compilation ou la configuration du système . valeur dans my.cnf. Afficher l'état est appelé valeur statut, qui affiche les informations d'état de l'instance de service en cours d'exécution, qui est une valeur qui change dynamiquement. Par conséquent, il est souvent utilisé pour observer si le MySQL actuel fonctionne normalement. Si ce n'est pas normal, comptez sur l'ajustement des paramètres statiques pour améliorer les performances de MySQL. Par conséquent, comprendre la différence entre ces deux concepts constitue la base d’un réglage ultérieur.

Optimisation de la connexion MySQL

Je me souviens d'une fois où j'essayais de me connecter à MySQL au sein de l'entreprise, je ne parvenais pas toujours à me connecter. Après avoir trouvé le DBA, nous avons étudié la cause et constaté que le nombre actuel de connexions MySQL était saturé. Après ajustements, le problème a été résolu. Il y a généralement deux raisons pour lesquelles les erreurs provoquent un trop grand nombre de connexions. La première est qu'il y a effectivement de nombreuses personnes qui se connectent à MySQL, ce qui entraîne une épuisement du nombre de connexions. La seconde est que la valeur max_connections est trop petite.

1. Paramètres de connexion (afficher les variables)


mysql> show variables like '%connect%';
+-----------------------------------------------+-----------------+
| Variable_name                 | Value      |
+-----------------------------------------------+-----------------+
| character_set_connection           | utf8      |
| collation_connection             | utf8_general_ci |
| connect_timeout                | 10       |
| disconnect_on_expired_password        | ON       |
| init_connect                 |         |
| max_connect_errors              | 100       |
| max_connections                | 151       |
| max_user_connections             | 0        |
| performance_schema_session_connect_attrs_size | 512       |
+-----------------------------------------------+-----------------+
Copier après la connexion

max_connections fait référence aux paramètres de l'instance de service MySQL. peut accepter en même temps Le nombre maximum de connexions simultanées. MySQL prend en charge l'algorithme consistant à en ajouter une au nombre maximum de connexions, garantissant que lorsque le nombre de connexions est épuisé, le super-administrateur peut toujours établir une connexion avec le serveur pour la gestion.

max_user_connectionsDéfinissez le nombre maximum de connexions simultanées pour le compte spécifié.

max_connect_errors Lorsqu'un hôte illégal se connecte de manière malveillante au serveur MySQL et que les erreurs qu'il rencontre atteignent la valeur définie, MySQL résoudra toutes les connexions de l'hôte. Cependant, il sera effacé après l'exécution des hôtes flush.

2. État de la connexion (afficher l'état)

Une chose à noter est que la valeur de la variable (afficher les variables) commence par une lettre minuscule, tandis que la valeur de l'état ( afficher le statut) commence par une lettre majuscule. Cette distinction est utile pour la mémoire et la classification


mysql> show status like '%connections%';
+-----------------------------------+-------+
| Variable_name           | Value |
+-----------------------------------+-------+
| Connection_errors_max_connections | 0   |
| Connections            | 197  |
| Max_used_connections       | 2   |
+-----------------------------------+-------+
Copier après la connexion

Connection_errors_max_connections Lorsque le nombre maximum de concurrence de MySQL est supérieur à max_connections dans la variable système (afficher les variables) Le nombre maximum de concurrences et donc le nombre de rejets seront enregistrés dans cette variable. Si la valeur de Connection_error_max_connections est relativement grande, cela signifie que la concurrence actuelle du système est relativement élevée et vous devriez envisager d'augmenter la valeur de max_connections.

Connections indique le nombre de connexions établies avec succès depuis le démarrage de MySQL. Cette valeur est accumulée en continu.

Max_used_connections indique le nombre maximum de connexions simultanées en même temps depuis le démarrage de MySQL. Si cette valeur est supérieure à max_connections, cela indique que le système est souvent dans un état de concurrence élevée et que vous devez envisager d'augmenter le nombre maximum de connexions simultanées.

3. Paramètres du fil de connexion (variables et statut du fil)


mysql> show variables like 'thread%';
+--------------------+---------------------------+
| Variable_name   | Value           |
+--------------------+---------------------------+
| thread_cache_size | 9             |
| thread_concurrency | 10            |
| thread_handling  | one-thread-per-connection |
| thread_stack    | 262144          |
+--------------------+---------------------------+
Copier après la connexion

thread_cache_size Définir le nombre de fil de connexion caches. Ce cache est équivalent au pool de cache de threads MySQL (pool de cache de threads), qui place les threads de connexion inactifs dans le pool de connexions et les met en cache au lieu de les détruire immédiatement. Lorsqu'il y a une nouvelle demande de connexion, s'il y a une connexion inactive dans le pool de connexions, elle est utilisée directement. Sinon, le fil de discussion doit être recréé. La création de threads représente une surcharge système considérable. Cette partie du traitement des threads de MySQL est similaire au traitement des threads de Nginx. Lorsque je présenterai le traitement des threads de Nginx à l'avenir, je les comparerai.

thread_handling La valeur par défaut est : un thread par connexion signifie fournir ou créer un thread pour chaque connexion afin de traiter la demande jusqu'à ce que la demande soit terminée, que la connexion soit détruite ou stockée dans le pool de cache. . Lorsque la valeur est no-threads, cela signifie qu'un seul thread est toujours fourni pour gérer la connexion, ce qui est généralement utilisé pour les tests sur une seule machine.

thread_stack stack signifie tas. Ce blog explique le processus PHP en détail. On sait que les processus et les threads ont des identifiants uniques. Le système d'identification du processus sera déterminé. par la maintenance de la zone de bibliothèque d'ID spécifique. Lorsqu'un processus ou un thread est en veille, les informations contextuelles du processus doivent ouvrir une zone dans la mémoire pour enregistrer les informations contextuelles du processus afin que le programme puisse être rapidement réveillé. La taille de pile par défaut définie pour chaque thread de MySQL est : 262144/1024=256k

Afficher les informations sur l'état du thread


mysql> show status like 'Thread%';
+-------------------+-------+
| Variable_name   | Value |
+-------------------+-------+
| Threads_cached  | 1   |
| Threads_connected | 1   |
| Threads_created  | 2   |
| Threads_running  | 1   |
+-------------------+-------+
Copier après la connexion

Thread_cached Numéro actuel de threads dans le pool de threads

Thread_connected Nombre actuel de connexions

Thread_cached: 当前连接线程创建数, 如果这个值过高,可以调整threadcachesize 也就是调整线程缓存池的大小。

Thred_runnint: 当前活跃的线程数。

连接请求堆栈

MySQL在很短的时间内,突然收到很多的连接请求时,MySQL会将不能来得及处理的连接请求保存在堆栈中,以便MySQL后续处理。back_log参数设置了堆栈的大小,可以通过如下命令查看:


mysql> show variables like 'back_log';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| back_log   | 80  |
+---------------+-------+
Copier après la connexion

连接异常


mysql> show status like 'Aborted%';
+------------------+-------+
| Variable_name  | Value |
+------------------+-------+
| Aborted_clients | 0   |
| Aborted_connects | 219  |
+------------------+-------+
Copier après la connexion

Aborted_clients MySQL 客户机被异常关闭的次数。

Aborted_connects 试图连接到MySQL服务器而失败的连接次数。

other


mysql> show status like 'Slow%';
+---------------------+-------+
| Variable_name    | Value |
+---------------------+-------+
| Slow_launch_threads | 0   |
| Slow_queries    | 0   |
+---------------------+-------+
Copier après la connexion


mysql> show variables like 'slow_launch_time';
+------------------+-------+
| Variable_name  | Value |
+------------------+-------+
| slow_launch_time | 2   |
+------------------+-------+
Copier après la connexion

Slow_lunch_threads 创建线程的时间过长,超过slow_launch_time的设定值,则会记录。

可以通过使用 Connection_error%来查看连接的错误状态信息:


mysql> show status like 'Connection_error%';
+-----------------------------------+-------+
| Variable_name           | Value |
+-----------------------------------+-------+
| Connection_errors_accept     | 0   |
| Connection_errors_internal    | 0   |
| Connection_errors_max_connections | 0   |
| Connection_errors_peer_address  | 0   |
| Connection_errors_select     | 0   |
| Connection_errors_tcpwrap     | 0   |
+-----------------------------------+-------+
Copier après la connexion

Connection_errors_peer_address 查找MySQL客户机IP地址是发生的错误数。

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

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)

MySQL: Concepts simples pour l'apprentissage facile MySQL: Concepts simples pour l'apprentissage facile Apr 10, 2025 am 09:29 AM

MySQL est un système de gestion de base de données relationnel open source. 1) Créez une base de données et des tables: utilisez les commandes CreateDatabase et CreateTable. 2) Opérations de base: insérer, mettre à jour, supprimer et sélectionner. 3) Opérations avancées: jointure, sous-requête et traitement des transactions. 4) Compétences de débogage: vérifiez la syntaxe, le type de données et les autorisations. 5) Suggestions d'optimisation: utilisez des index, évitez de sélectionner * et utilisez les transactions.

Comment ouvrir phpmyadmin Comment ouvrir phpmyadmin Apr 10, 2025 pm 10:51 PM

Vous pouvez ouvrir PHPMYADMIN via les étapes suivantes: 1. Connectez-vous au panneau de configuration du site Web; 2. Trouvez et cliquez sur l'icône PHPMYADMIN; 3. Entrez les informations d'identification MySQL; 4. Cliquez sur "Connexion".

Comment créer Navicat Premium Comment créer Navicat Premium Apr 09, 2025 am 07:09 AM

Créez une base de données à l'aide de NAVICAT Premium: Connectez-vous au serveur de base de données et entrez les paramètres de connexion. Cliquez avec le bouton droit sur le serveur et sélectionnez Créer une base de données. Entrez le nom de la nouvelle base de données et le jeu de caractères spécifié et la collation. Connectez-vous à la nouvelle base de données et créez le tableau dans le navigateur d'objet. Cliquez avec le bouton droit sur le tableau et sélectionnez Insérer des données pour insérer les données.

Comment créer une nouvelle connexion à MySQL dans Navicat Comment créer une nouvelle connexion à MySQL dans Navicat Apr 09, 2025 am 07:21 AM

Vous pouvez créer une nouvelle connexion MySQL dans NAVICAT en suivant les étapes: ouvrez l'application et sélectionnez une nouvelle connexion (CTRL N). Sélectionnez "MySQL" comme type de connexion. Entrez l'adresse Hostname / IP, le port, le nom d'utilisateur et le mot de passe. (Facultatif) Configurer les options avancées. Enregistrez la connexion et entrez le nom de la connexion.

MySQL: une introduction à la base de données la plus populaire au monde MySQL: une introduction à la base de données la plus populaire au monde Apr 12, 2025 am 12:18 AM

MySQL est un système de gestion de la base de données relationnel open source, principalement utilisé pour stocker et récupérer les données rapidement et de manière fiable. Son principe de travail comprend les demandes des clients, la résolution de requête, l'exécution des requêtes et les résultats de retour. Des exemples d'utilisation comprennent la création de tables, l'insertion et la question des données et les fonctionnalités avancées telles que les opérations de jointure. Les erreurs communes impliquent la syntaxe SQL, les types de données et les autorisations, et les suggestions d'optimisation incluent l'utilisation d'index, les requêtes optimisées et la partition de tables.

MySQL et SQL: Compétences essentielles pour les développeurs MySQL et SQL: Compétences essentielles pour les développeurs Apr 10, 2025 am 09:30 AM

MySQL et SQL sont des compétences essentielles pour les développeurs. 1.MySQL est un système de gestion de base de données relationnel open source, et SQL est le langage standard utilisé pour gérer et exploiter des bases de données. 2.MySQL prend en charge plusieurs moteurs de stockage via des fonctions de stockage et de récupération de données efficaces, et SQL termine des opérations de données complexes via des instructions simples. 3. Les exemples d'utilisation comprennent les requêtes de base et les requêtes avancées, telles que le filtrage et le tri par condition. 4. Les erreurs courantes incluent les erreurs de syntaxe et les problèmes de performances, qui peuvent être optimisées en vérifiant les instructions SQL et en utilisant des commandes Explication. 5. Les techniques d'optimisation des performances incluent l'utilisation d'index, d'éviter la numérisation complète de la table, d'optimiser les opérations de jointure et d'améliorer la lisibilité du code.

Comment utiliser un seul fileté redis Comment utiliser un seul fileté redis Apr 10, 2025 pm 07:12 PM

Redis utilise une architecture filetée unique pour fournir des performances élevées, une simplicité et une cohérence. Il utilise le multiplexage d'E / S, les boucles d'événements, les E / S non bloquantes et la mémoire partagée pour améliorer la concurrence, mais avec des limites de limitations de concurrence, un point d'échec unique et inadapté aux charges de travail à forte intensité d'écriture.

Comment récupérer les données après que SQL supprime les lignes Comment récupérer les données après que SQL supprime les lignes Apr 09, 2025 pm 12:21 PM

La récupération des lignes supprimées directement de la base de données est généralement impossible à moins qu'il n'y ait un mécanisme de sauvegarde ou de retour en arrière. Point clé: Rollback de la transaction: Exécutez Rollback avant que la transaction ne s'engage à récupérer les données. Sauvegarde: la sauvegarde régulière de la base de données peut être utilisée pour restaurer rapidement les données. Instantané de la base de données: vous pouvez créer une copie en lecture seule de la base de données et restaurer les données après la suppression des données accidentellement. Utilisez la déclaration de suppression avec prudence: vérifiez soigneusement les conditions pour éviter la suppression accidentelle de données. Utilisez la clause WHERE: Spécifiez explicitement les données à supprimer. Utilisez l'environnement de test: testez avant d'effectuer une opération de suppression.

See all articles