Mysql est largement utilisé comme une très excellente base de données gratuite. Habituellement, les données des projets que nous développons dépassent rarement le million. Récemment, j'ai consacré beaucoup de temps à des recherches approfondies sur l'optimisation de MySQL dans le cas de millions de données. J'ai rencontré de nombreux problèmes et les ai résolus, et j'aimerais les partager avec vous. Vos précieux avis sont les bienvenus !
1. Introduction à l'environnement de test msql de données au niveau d'un million
mysql utilise count(*) pour interroger le nombre total de données dans le cas de 3 millions d'éléments. des données (moteur myisam). La condition (indexation correctement définie) fonctionne correctement. Pour les données fréquemment lues, nous vous recommandons d'utiliser le moteur myIsam...
Pour plus de détails, cliquez sur : "Présentation de l'environnement de test msql pour des millions de données"
II , Problème de pagination MySQL sous des millions de données
Pendant le processus de développement, nous utilisons souvent la pagination. La technologie de base consiste à utiliser une limite pour lire les données. Lors du test d'utilisation de la limite pour la pagination, les données suivantes ont été obtenues :
select * from news order by id desc limit 0,10 耗时0.003秒 select * from news order by id desc limit 10000,10 耗时0.058秒 select * from news order by id desc limit 100000,10 耗时0.575秒 select * from news order by id desc limit 1000000,10 耗时7.28秒
Nous avons été surpris de constater que plus le point de départ de la pagination de MySQL est grand lorsque le volume de données est important, plus la vitesse de requête est lente. La vitesse de requête pour 1 million d'éléments a déjà été Cela prend 7 secondes. C'est une valeur que nous ne pouvons pas accepter...
Pour plus de détails, cliquez sur : "Problème de pagination MySQL sous des millions de données"
3. de données Notes sur la requête conditionnelle MySQL et la requête de pagination
Dans la continuité de la section précédente "Problème de pagination MySQL avec des millions de données", nous ajoutons les conditions de requête :
select id from news where cate = 1 order by id desc limit 500000 ,10 查询时间 20 秒
Quel terrifiant vitesse! ! Utilisez les connaissances de la première section « Introduction à l'environnement de test de données MySQL pour des millions de données » pour optimiser...
Pour plus de détails, cliquez sur : "Remarques sur les requêtes conditionnelles MySQL et les requêtes de pagination sous des millions de données"
4. La différence entre le moteur de stockage MySQL myIsam et innodb
MySQL a plusieurs moteurs de stockage, dont MyISAM et InnoDB sont deux couramment utilisés ceux. Voici quelques concepts de base sur ces deux moteurs (pas une introduction approfondie).
MyISAM est le moteur de stockage par défaut pour MySQL. Il est basé sur le type ISAM traditionnel et prend en charge la recherche en texte intégral, mais il n'est pas sécurisé pour les transactions et ne prend pas en charge les clés étrangères. Chaque table MyISAM est stockée dans trois fichiers : le fichier frm stocke la définition de la table ; le fichier de données est MYD (MYData) ; le fichier d'index est MYI (MYIndex)...
Pour plus de détails, cliquez sur : "stockage mysql La différence entre le moteur myIsam et innodb 》
5. Une certaine expérience dans l'optimisation des performances MySQL
La plupart des serveurs MySQL ont activé la mise en cache des requêtes. C'est l'un des moyens les plus efficaces d'améliorer les performances, et il est géré par le moteur de base de données MySQL. Lorsque plusieurs des mêmes requêtes sont exécutées plusieurs fois, ces résultats de requête seront placés dans un cache, de sorte que les requêtes identiques suivantes n'auront pas besoin d'exploiter la table mais d'accéder directement aux résultats mis en cache...
Cliquez pour détails : "Quelques expériences d'optimisation des performances MySQL"