Enregistrer un processus de réglage des requêtes

prémisse

Pendant le processus de réglage, utilisez des explaincommandes pour afficher le processus d'exécution, y compris l'heure d'exécution, le mode d'analyse, si les index sont utilisés, etc., EXPLIQUEZ l'analyse de l'utilisation

开启查询sql执行时间:
\timing on
关闭查询sql执行时间:
\timing off

1. Description du problème

Une interface de requête est appelée fréquemment et le processus de requête est lent

2. Idées d'optimisation

  1. Envisagez d'abord d'optimiser les instructions SQL
  2. Envisagez ensuite d'optimiser le code métier
  3. Enfin, déterminez si vous devez ajouter un mécanisme de mise en cache

3. Processus d'optimisation

3.1 Optimiser SQL

SQL d'origine, regroupez les données de requête avec le plus grand seq_id de chaque groupe, utilisez dans + group by pour atteindre

select name, version from yc_test where seq_id in(
    select max(seq_id) from yc_test group by name
);
3.1.1 Idées d'optimisation SQL
  • Envisagez d'ajouter des index pour accélérer la requête
  • inSera converti oret converti union all, l'efficacité est inférieure. Pensez à utiliser existsou à joinremplacer. Pourquoi?
3.1.2 SQL optimisé
select a.name, a.version from yc_test a inner join (
select max(seq_id) as seq_id from yc_test group by name
) b on a.seq_id=b.seq_id;
3.1.3 Comparaison avant et après optimisation SQL

Explique:
Insérez la description de l'image ici

sql avantage Désavantage
en mise en œuvre sql simple in sera converti en or puis en union all, ce qui est moins efficace, comme le montre la figure pour une couche supplémentaire de boucle
implémentation de jointure interne Réduisez une couche de circulation et améliorez l'efficacité En revanche, SQL est plus compliqué

3.2 Optimiser le code métier

En combinant des scénarios métier fonctionnels (qui peuvent être considérés comme des enregistrements historiques), lisez le code et constatez que toutes les données ne doivent pas être conservées.
Solution d'optimisation:

  • 定时器Nettoyez régulièrement les données expirées pour réduire la redondance des données
  • 业务逻辑Contrôlez, jugez s'il y a des données supplémentaires lors de l'enregistrement des données et supprimez les données supplémentaires s'il y en a.

3.3 Ajouter un mécanisme de mise en cache

热点数据, Vous pouvez envisager la mise en cache en mémoire (cache variable) ou le stockage dans la base de données (Redis / Memcached).
Puisque la quantité de données a été contrôlée et combinée à une planification ultérieure, aucun mécanisme de mise en cache n'a été ajouté.

Je suppose que tu aimes

Origine blog.csdn.net/Dkangel/article/details/105632852
conseillé
Classement