Maison > base de données > tutoriel mysql > Quelle est la méthode de surveillance de la base de données MySQL ?

Quelle est la méthode de surveillance de la base de données MySQL ?

WBOY
Libérer: 2023-06-03 13:22:13
avant
1355 Les gens l'ont consulté

Il existe de nombreuses méthodes de surveillance des bases de données actuelles, qui sont divisées en trois catégories : bases de données intégrées, commerciales et open source. Chacune a ses propres caractéristiques.

Quant à la base de données mysql, en raison de sa forte activité communautaire, elle est surveillée. méthodes C'est encore plus diversifié. Quelle que soit la méthode de surveillance utilisée, le cœur est la surveillance des données. Après avoir obtenu des données de surveillance complètes, c'est la partie d'affichage flexible.

1. Nombre de connexions (Connects)

1.1. Nombre maximum de connexions utilisées

show status like 'Max_used_connections';
Copier après la connexion

1.2. Nombre de connexions actuellement ouvertes

show status like 'Threads_connected';
Copier après la connexion

2. pool

show status like 'Innodb_buffer_pool_reads';
Copier après la connexion

2.2. Nombre de lectures du pool tampon

show status like 'Innodb_buffer_pool_read_requests';
Copier après la connexion

2.3. Nombre total de pages dans le pool tampon

show status like 'Innodb_buffer_pool_pages_total';
Copier après la connexion

2.4. Nombre de pages libres dans le pool tampon

show status like 'Innodb_buffer_pool_pages_free';
Copier après la connexion

2.5.

2.6. Le taux d'utilisation du pool de cache est

(1-Innodb_buffer_pool_reads/Innodb_buffer_pool_read_requests)*100%
Copier après la connexion

3. Verrouillage (verrouillage)

Remarque : le nombre de statistiques d'attente de verrouillage est une donnée cumulée à chaque fois qu'elle est obtenue, elle peut être soustraite des données précédentes pour obtenir les statistiques actuelles. data

3.1. Le nombre de statistiques d'attente de verrouillage

((Innodb_buffer_pool_pages_total-Innodb_buffer_pool_pages_free)/Innodb_buffer_pool_pages_total)*100%
Copier après la connexion

3.2. Temps d'attente moyen pour chaque verrouillage

show status like 'Innodb_row_lock_waits';
Copier après la connexion

3.3. Vérifiez s'il y a un verrou de table. S'il y a des données, cela signifie qu'il y a une table de verrouillage. est vide, cela signifie qu'il n'y a pas de verrouillage de table.

show status like 'Innodb_row_lock_time_avg';
Copier après la connexion

4. SQL lent

Remarque : lorsque la commande mysqldumpslow ne parvient pas à s'exécuter, le journal lent est synchronisé avec le local pour le traitement du formatage.

4.1. Vérifiez si le commutateur MySQL Slow SQL est activé

show open TABLES where in_use>0
Copier après la connexion

4.2 Vérifiez le seuil MySQL Slow SQL

show variables like 'slow_query_log'; --ON 为开启状态,OFF 为关闭状态
 
set global slow_query_log=1 -- 可进行开启
Copier après la connexion

4.3. Vérifiez le répertoire MySQL Slow SQL

show variables like 'long_query_time';
 
set global long_query_time=0.1 -- 根据页面传递阈值参数,修改阈值
Copier après la connexion

4.4. Formatez le journal SQL lent

Remarque : Cette instruction passe l'exécution de jdbc Non, elle appartient à l'exécution en ligne de commande.

Signification : Afficher les informations d'exécution des 10 instructions SQL les plus longues. 10 peuvent être modifiées en numéro TOP. Les informations affichées sont : nombre d'exécutions, temps d'exécution moyen, instruction SQL

show variables like 'slow_query_log_file';
Copier après la connexion

5, instruction

5.1, insérer la quantité

mysqldumpslow -s at -t 10 /export/data/mysql/log/slow.log
Copier après la connexion

5.2, supprimer la quantité

show status like 'Com_insert';
Copier après la connexion

5.3, mettre à jour la quantité

show status like 'Com_delete';
Copier après la connexion

5.4, sélectionner la quantité

show status like 'Com_update';
Copier après la connexion

6. Débit (débits de la base de données)

6.1, débit d'envoi

show status like 'Com_select';
Copier après la connexion

6.2, débit de réception

show status like 'Bytes_sent';
Copier après la connexion

6.3, débit total

show status like 'Bytes_received';
Copier après la connexion

7, paramètres de la base de données (configuration du serveur)

7.1, afficher les variables

8. Étapes de dépannage de SQL lentQuelle est la méthode de surveillance de la base de données MySQL ?

Slow SQL fait référence à une requête lente MySQL, fait spécifiquement référence à SQL dont la durée d'exécution dépasse la valeur long_query_time.

Nous entendons souvent dire que MySQL a un journal binaire binlog, un journal de relais relaylog, un redo rollback log redolog, undolog, etc. Pour les requêtes lentes, il existe également un journal des requêtes lentes, slowlog, qui est utilisé pour enregistrer les instructions dont le temps de réponse dépasse le seuil dans MySQL. L'impact d'un SQL lent sur les activités de production réelles est fatal. Il est donc particulièrement important que les testeurs surveillent l'exécution des instructions SQL de la base de données pendant le processus de test de performances et fournissent des avis précis sur l'optimisation des performances au développement. Ensuite, comment utiliser le journal des requêtes lentes fourni par la base de données Mysql pour surveiller l'exécution des instructions SQL et trouver les instructions SQL à forte consommation. Voici une description détaillée des étapes pour utiliser le journal des requêtes lentes :

8.1. assurez-vous d'activer le commutateur slow_query_log

8.2. Définissez la valeur du domaine SQL lent long_query_timeQuelle est la méthode de surveillance de la base de données MySQL ?

Ce long_query_time est utilisé pour définir le nombre de secondes plus lentes qui sont considérées comme une "requête lente". la valeur long_query_time en exécutant la commande SQL définie long_query_time=1. 1. Autrement dit, toute requête qui prend plus d'une seconde à s'exécuter est considérée comme une requête lente, comme suit :

Vérifiez le chemin lent du journal SQL. Quelle est la méthode de surveillance de la base de données MySQL ?

8.4. Formatez et analysez le journal SQL lent via l'outil d'analyse SQL lent mysqldumpslow Quelle est la méthode de surveillance de la base de données MySQL ?

mysqldumpslow est un outil d'analyse de requêtes lentes fourni avec l'installation de MySQL. Vous pouvez vérifier la description des paramètres d'utilisation via ./mysqldumpslow —help.

Utilisation courante pour extraire les 10 requêtes lentes les plus utiliséesQuelle est la méthode de surveillance de la base de données MySQL ?

Bytes_sent+Bytes_received
Copier après la connexion

Extraire la requête Les 3 requêtes les plus lentes avec le temps le plus lent

./mysqldumpslow -s c -t 10 /export/data/mysql/log/slow.log
Copier après la connexion

Remarque : les résultats de l'analyse utilisant mysqldumpslow n'afficheront pas les détails spécifiques et complets. instruction sql, uniquement la structure du sql ;

Si : SELECT FROM sms_send WHERE service_id=10 GROUP BY content LIMIT 0 , 1000 ;

L'exécution de la commande mysqldumpslow affiche :

Count : 2 Time=1,5s (3s) Lock=0.00s ( 0s) Rows=1000.0 (2000), vgos_dba[vgos_dba]@[10.130.229.196]SELECT FROM sms_send WHERE service_id =N GROUP BY content LIMIT N, N

8.4.2 Explication détaillée des résultats de l'analyse de mysqldumpslow

.

Count : Indique le nombre d'exécutions de ce type d'instruction. Le chiffre ci-dessus indique que l'instruction select a été exécutée 2 fois.
  • Time : Indique le temps moyen d'exécution (durée totale) de ce type d'instruction
  • Lock : Temps de verrouillage 0s.
  • Rows:单次返回的结果数是 1000 条记录,2 次总共返回 2000 条记录。

通过这个工具就可以查询出来哪些 sql 语句是慢 SQL,从而反馈研发进行优化,比如加索引,该应用的实现方式等。

8.5、常见慢 SQL 排查

8.5.1、不使用子查询

SELECT FROM t1 WHERE id (SELECT id FROM t2 WHERE name='hechunyang');
Copier après la connexion

子查询在 MySQL5.5 版本里,内部执行计划器是这样执行的:先查外表再匹配内表,而不是先查内表 t2,当外表的数据很大时,查询速度会非常慢。
在 MariaDB10/MySQL5.6 版本里,采用 join 关联方式对其进行了优化,这条 SQL 会自动转换为

SELECT t1. FROM t1 JOIN t2 ON t1.id = t2.id;
Copier après la connexion

但请注意的是:优化只针对 SELECT 有效,对 UPDATE/DELETE 子 查询无效, 生产环境尽量应避免使用子查询。

8.5.2、避免函数索引

SELECT FROM t WHERE YEAR(d) >= 2016;
Copier après la connexion

由于 MySQL 不像 Oracle 那样⽀持函数索引,即使 d 字段有索引,也会直接全表扫描。
应改为 :

SELECT FROM t WHERE d >= ‘2016-01-01';
Copier après la connexion

8.5.3、用 IN 来替换 OR 低效查询

SELECT FROM t WHERE LOC_ID = 10 OR LOC_ID = 20 OR LOC_ID = 30;
Copier après la connexion

高效查询

SELECT FROM t WHERE LOC_IN IN (10,20,30);
Copier après la connexion

8.5.4、LIKE 双百分号无法使用到索引

SELECT FROM t WHERE name LIKE '%de%';
Copier après la connexion

应改为 :

SELECT FROM t WHERE name LIKE 'de%';
Copier après la connexion

8.5.5、分组统计可以禁止排序

SELECT goods_id,count() FROM t GROUP BY goods_id;
Copier après la connexion

默认情况下,MySQL 对所有 GROUP BY col1,col2… 的字段进⾏排序。如果查询包括 GROUP BY,想要避免排序结果的消耗,则可以指定 ORDER BY NULL 禁止排序。
应改为 :

SELECT goods_id,count () FROM t GROUP BY goods_id ORDER BY NULL;
Copier après la connexion

8.5.6、禁止不必要的 ORDER BY 排序

SELECT count(1) FROM user u LEFT JOIN user_info i ON u.id = i.user_id WHERE 1 = 1 ORDER BY u.create_time DESC;
Copier après la connexion

应改为 :

SELECT count (1) FROM user u LEFT JOIN user_info i ON u.id = i.user_id;
Copier après la connexion

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!

Étiquettes associées:
source:yisu.com
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal