11. Les étapes de base de l'optimisation lente des requêtes
- Exécutez d'abord pour voir s'il est vraiment lent, faites attention à la configuration de SQL_NO_CACHE
- Lorsque la condition de contrôle de table unique, verrouille la table d'enregistrement de retour minimum. La signification de cette phrase est d'appliquer le where de l'instruction de requête à la table avec le plus petit nombre d'enregistrements renvoyés dans la table, de commencer à rechercher et d'interroger chaque champ de la table unique séparément pour voir quel champ a le plus haut degré de discrimination.
- expliquer pour vérifier si le plan d'exécution est cohérent avec l'attente de 1 (commencer à interroger à partir de la table avec moins d'enregistrements verrouillés)
- La forme ordre par limite de l'instruction SQL permet de vérifier d'abord la table triée
- Comprendre les scénarios d'utilisation côté entreprise
- Lors de l'ajout d'un index, reportez-vous aux principes d'indexation
- Observer les résultats, ne pas répondre aux attentes, continuer à analyser dès la première étape
12. Gestion lente des journaux
Journal lent
- Temps d'exécution> 10
- Mlle index
- Chemin du fichier journal
Configuration
- RAM
show variables like '%queries%';
set global [变量名] = [值]
- Fichier de configuration
mysqld --defaults-file='E:\wupeiqi\mysql-5.7.16-winx64\mysql-5.7.16-winx64\my-default.ini'
- contenu du fichier my.cnf
slow_query_log = ON
slow_query_log_file = [日志文件路径]
ps: le service doit être redémarré après la modification du fichier de configuration
Gestion des journaux MySQL
- Journal des erreurs: enregistrez les erreurs de démarrage, d'arrêt et de fonctionnement du serveur MySQL et d'autres informations
- Journal binaire: également appelé journal binlog, qui enregistre les opérations autres que SELECT dans la base de données sous la forme d'un fichier binaire
- Journal des requêtes: enregistrez les informations de la requête
- Journal de requêtes lent: enregistrez les opérations qui prennent plus de temps que le temps spécifié
- Journal de relais: la bibliothèque de secours copie le journal binaire de la bibliothèque principale dans son propre journal de relais, rejouant ainsi localement
- Journal général: quel compte auditer, pendant quelle période et quels événements ont été réalisés
- Journal des transactions ou redo log: enregistrez les transactions Innodb liées telles que l'heure d'exécution de la transaction, les points de contrôle, etc.
utilisation
1.bin-log
1. 启用
# vim /etc/my.cnf
[mysqld]
log-bin[=dir\[filename]]
# service mysqld restart
2. 暂停
//仅当前会话
SET SQL_LOG_BIN=0;
SET SQL_LOG_BIN=1;
3. 查看
查看全部:
# mysqlbinlog mysql.000002
按时间:
# mysqlbinlog mysql.000002 --start-datetime="2012-12-05 10:02:56"
# mysqlbinlog mysql.000002 --stop-datetime="2012-12-05 11:02:54"
# mysqlbinlog mysql.000002 --start-datetime="2012-12-05 10:02:56" --stop-datetime="2012-12-05 11:02:54"
按字节数:
# mysqlbinlog mysql.000002 --start-position=260
# mysqlbinlog mysql.000002 --stop-position=260
# mysqlbinlog mysql.000002 --start-position=260 --stop-position=930
4. 截断bin-log(产生新的bin-log文件)
a. 重启mysql服务器
b. # mysql -uroot -p123 -e 'flush logs'
5. 删除bin-log文件
# mysql -uroot -p123 -e 'reset master'
2. Journal des requêtes
启用通用查询日志
# vim /etc/my.cnf
[mysqld]
log[=dir\[filename]]
# service mysqld restart
3. Journal des requêtes lent
启用慢查询日志
# vim /etc/my.cnf
[mysqld]
log-slow-queries[=dir\[filename]]
long_query_time=n
# service mysqld restart
MySQL 5.6:
slow-query-log=1
slow-query-log-file=slow.log
long_query_time=3
查看慢查询日志
测试:BENCHMARK(count,expr)
SELECT BENCHMARK(50000000,2*3);