Mysql实例简单解析MySQL中的cardinality异常
《Mysql实例简单解析MySQL中的cardinality异常》要点: MYSQL必读前段时间,一大早上,就收到报警,警告php-fpm进程的数量超过阈值.最终发现是一条sql没用到索引,导致执行数据库查询慢了,最终导致php-fpm进程数增加.最终通过analyze table feed_comment_info_id_0000 命令更新了Cardinality,才能再次用到索引. MYSQL必读
select id from feed_comment_info_id_0000 where obj_id=101 and type=1;
MYSQL必读索引信息: MYSQL必读
show index from feed_comment_info_id_0000
+---------------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+---------------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| feed_comment_info_id_0000 | 0 | PRIMARY | 1 | id | A | 6216 | NULL | NULL | | BTREE | |
| feed_comment_info_id_0000 | 1 | obj_type | 1 | obj_id | A | 6216 | NULL | NULL | | BTREE | |
| feed_comment_info_id_0000 | 1 | obj_type | 2 | type | A | 6216 | NULL | NULL | YES | BTREE | |
| feed_comment_info_id_0000 | 1 | user_id | 1 | user_id | A | 6216 | NULL | NULL | | BTREE | |
+---------------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
5 rows in set (0.00 sec)
MYSQL必读通过explian查看时,发现sql用的是主键PRIMARY,而不是obj_type索引.通过show index 查看索引的Cardinality值,发现这个值是实际数据的两倍.感觉这个Cardinality值已经不正常,因此通过analyzea table命令对这个值从新进行了计算.命令执行完毕后,就可用使用索引了. MYSQL必读Cardinality解释 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |