Maison > base de données > tutoriel mysql > Introduction à l'environnement de test MySQL avec des millions de données

Introduction à l'environnement de test MySQL avec des millions de données

藏色散人
Libérer: 2019-04-17 17:19:45
avant
3838 Les gens l'ont consulté

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, j'aimerais donc les partager avec vous. Vos précieux avis sont les bienvenus !

Recommandations associées : "Tutoriel MySQL"

Environnement de test

Le nombre total de données est de 3 millions, occupant environ 1 Go d'espace disque

Structure des données

表1 news [ 文章表 引擎 myisam 字符集 utf-8 ]
-----------------------------------------------------
idint11主键自动增加
cateint11索引
titlevarchar200标题(便于基础搜索做了索引)
contenttext文章正文
dateint11文章发布时间(时间戳形式)
Copier après la connexion
表2 cate [ 文章分类表 引擎 myisam 字符集 utf-8 ]
-----------------------------------------------------
cate_idint11主键自动增加
cate_namevarchar200文章标题
Copier après la connexion

Nombre total de requêtes

myIsam 引擎下
select count(*) as total from news
//耗时 0.001秒 极快 
//带上条件
select count(*) as total from news where cate = 1
耗时 0.046秒 可以接受的速度
innodb 引擎下
select count(*) as total from news
//耗时 0.7秒 很慢
select count(*) as total from news where cate = 1
耗时 0.7秒 很慢
Copier après la connexion

Pourquoi 2 Y a-t-il une si grande différence de vitesse de requête entre les deux moteurs ?

InnoDB n'enregistre pas le nombre spécifique de lignes dans la table, c'est-à-dire que lors de l'exécution de select count(*) from table, InnoDB doit analyser la table entière pour calculer le nombre de lignes qu'elle contient. sont.

MyISAM lit simplement le nombre de lignes enregistrées.

Notez que lorsque l'instruction count(*) contient la condition Where, les opérations des deux tables sont quelque peu différentes. Les tables de type InnoDB utilisent count(*) ou count (clé primaire), plus la condition Where col. . La colonne col est une colonne avec un index de contrainte unique autre que la clé primaire de la table. De cette façon, la vitesse des requêtes sera très rapide. C'est pour éviter une analyse complète de la table.

Résumé

mysql utilise count(*) pour interroger le nombre total de données avec 3 millions de données (moteur myisam) et contient des conditions (les index sont définis correctement ) et la durée de fonctionnement est normale. Pour les données fréquemment lues, nous vous recommandons d'utiliser le moteur myIsam.

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:hcoder.net
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