当前位置:网站首页>Analyse du principe d'optimisation d'une requête SQL: 900W + données, de 17s à 300ms

Analyse du principe d'optimisation d'une requête SQL: 900W + données, de 17s à 300ms

2022-06-09 00:48:00 Cercle des programmeurs

Source::jianshu.com/p/0768ebc4e28d

Il y a un tableau des flux financiers,Pas de sous - stockage et de sous - table,La quantité actuelle de données est9555695,La requête pagée a été utilisée pourlimit,L'optimisation des requêtes précédentes prend du temps16 s 938 ms (execution: 16 s 831 ms, fetching: 107 ms),Ajuster comme suitSQLAprès,Ça prend du temps347 ms (execution: 163 ms, fetching: 184 ms);

Fonctionnement: Les critères de requête sont placés dans la Sous - Requête,Sous - requête pour la clé primaire seulementID,Ensuite, interrogez d'autres champs d'attributs en utilisant l'Association de clés primaires déterminée dans la Sous - Requête;

Principes: Réduire les opérations de retour à la table,Optimiser les scénarios de pagination hyper - Multi - pages avec des associations de latence ou des sous - requêtes.

mysql> select index_name,count(*) from information_schema.INNODB_BUFFER_PAGE where INDEX_NAME in('val','primary'and TABLE_NAME like '%test%' group by index_name;

Empty set (0.03 sec)

Exécutionsql:

mysql> select * from test a inner join (select id from test where val=4 limit 300000,5) b on a.id=b.id;
+---------+-----+--------+---------+
| id      | val | source | id      |
+---------+-----+--------+---------+
| 3327622 |   4 |      4 | 3327622 |
| 3327632 |   4 |      4 | 3327632 |
| 3327642 |   4 |      4 | 3327642 |
| 3327652 |   4 |      4 | 3327652 |
| 3327662 |   4 |      4 | 3327662 |
+---------+-----+--------+---------+
5 rows in set (0.09 sec)

mysql> select index_name,count(*) from information_schema.INNODB_BUFFER_PAGE where INDEX_NAME in('val','primary'and TABLE_NAME like '%test%' group by index_name;
+------------+----------+
| index_name | count(*) |
+------------+----------+
| PRIMARY    |        5 |
| val        |      390 |
+------------+----------+
2 rows in set (0.03 sec)

Nous pouvons voir la différence évidente entre les deux:Le premiersqlChargé4098Pages de données àbuffer pool,Et le secondsqlSeulement chargé5Pages de données àbuffer pool.Conformément à nos prévisions.Ça confirme aussi pourquoi le premiersqlÇa va ralentir.:Lire un grand nombre de lignes de données inutiles(300000),Et finalement abandonné.Et ça crée un problème:Chargé beaucoup de hotspots pas très haut page de données àbuffer pool,Peut causerbuffer poolLa pollution,Occupationbuffer poolDe l'espace. Problèmes rencontrés

Pour s'assurer qu'il est vide à chaque redémarragebuffer pool,On doit fermerinnodb_buffer_pool_dump_at_shutdownEtinnodb_buffer_pool_load_at_startup,Ces deux options contrôlent la fermeture de la base de donnéesdumpSortez!buffer poolDonnées dans et chargées sur le disque pour la sauvegarde lorsque la base de données est ouvertebuffer poolDonnées.

Références

1.https://explainextended.com/2009/10/23/mysql-order-by-limit-performance-late-row-lookups/

2.https://dev.mysql.com/doc/refman/5.7/en/innodb-information-schema-buffer-pool-tables.html

  •       
          
          
    —————END—————
    
    
    

PS:Si je pense que mon partage est bon,Tout le monde est le bienvenu.、Je regarde.

 Attention au numéro public:JavaProgrammation de l'arrière - plan,Répondre aux mots clés suivants 

       
       
       

Oui.JavaApprendre le parcours complet,Réponse  Itinéraire 

Non disponibleJavaVidéo de démarrage,Réponse Vidéo 

Oui.JavaExpérience de l'entrevue,Réponse  Interview 

Non disponibleJavaProjets,Réponse: Projets 

Entrez.JavaFan Group: Ajouter un groupe 


PS:Si je pense que mon partage est bon,Tout le monde est le bienvenu.、Je regarde.

         
         
         
(Terminé.)




Ajoutez - moi"WechatObtenir unPart Mise à jourJavaQuestions d'entrevue

Une fois.SQLAnalyse des principes d'optimisation des requêtes:900W+Données,De17sÀ300ms

Veuillez noter:666,Sinon, non.Adoption~


Récemment, haowen


1、Un système de gestion de fond qui doit être recommandé

2、 J'ai trouvé la base de données d'une soeur Tsinghua !

3、Java Le public de la programmation d'arrière - plan a été officiellement formé !

4、 Un ensemble simple et polyvalent JavaBackground management system,C'est parti.

5、36 Trier les cartes Intellij IDEA Paramètres communs



                  
                  
                  
Une fois.SQLAnalyse des principes d'optimisation des requêtes:900W+Données,De17sÀ300ms
                   
                   
                   
                     
                     
                     
Entretiens récentsBAT,Organiser une entrevue JavaInterviewBATManuel de dédouanement ,CouvertJavaTechnologies de base、JVM、JavaConcurrence、SSM、Microservices、Base de données、Structure des données, etc.
Comment obtenir:Suivez le numéro public et répondez  java  Recevoir,Plus d'informations sont disponibles.
A demain(。・ω・。)ノ

Cet article provient de Wechat public number:ProcédureITCercle

Article original,Auteur:Longueur de la pile,Si elle est reproduite,Veuillez indiquer la source:https://www.cxyquan.com/24072.html

原网站

版权声明
本文为[Cercle des programmeurs]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/160/202206090040378907.html