最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

簡(jiǎn)單解析MySQL中的cardinality異常

 更新時(shí)間:2015年05月07日 16:05:53   投稿:goldensun  
這篇文章主要介紹了簡(jiǎn)單解析MySQL中的cardinality異常,這個(gè)異常會(huì)導(dǎo)致索引無(wú)法使用,需要的朋友可以參考下

前段時(shí)間,一大早上,就收到報(bào)警,警告php-fpm進(jìn)程的數(shù)量超過(guò)閾值。最終發(fā)現(xiàn)是一條sql沒(méi)用到索引,導(dǎo)致執(zhí)行數(shù)據(jù)庫(kù)查詢慢了,最終導(dǎo)致php-fpm進(jìn)程數(shù)增加。最終通過(guò)analyze table feed_comment_info_id_0000 命令更新了Cardinality ,才能再次用到索引。
排查過(guò)程如下:
sql語(yǔ)句:

select id from feed_comment_info_id_0000 where obj_id=101 and type=1;

索引信息:

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)

通過(guò)explian查看時(shí),發(fā)現(xiàn)sql用的是主鍵PRIMARY,而不是obj_type索引。通過(guò)show index 查看索引的Cardinality值,發(fā)現(xiàn)這個(gè)值是實(shí)際數(shù)據(jù)的兩倍。感覺(jué)這個(gè)Cardinality值已經(jīng)不正常,因此通過(guò)analyzea table命令對(duì)這個(gè)值從新進(jìn)行了計(jì)算。命令執(zhí)行完畢后,就可用使用索引了。

Cardinality解釋
官方文檔的解釋:
An estimate of the number of unique values in the index. This is updated by running ANALYZE TABLE or myisamchk -a. Cardinality is counted based on statistics stored as integers, so the value is not necessarily exact even for small tables. The higher the cardinality, the greater the chance that MySQL uses the index when doing
總結(jié)一下:
1、它代表的是索引中唯一值的數(shù)目的估計(jì)值。如果是myisam引擎,這個(gè)值是一個(gè)準(zhǔn)確的值。如果是innodb引擎,這個(gè)值是一個(gè)估算的值,每次執(zhí)行show index 時(shí),可能會(huì)不一樣
2、創(chuàng)建Index時(shí)(primary key除外),MyISAM的表Cardinality的值為null,InnoDB的表Cardinality的值大概為行數(shù);
3、值的大小會(huì)影響到索引的選擇
4、創(chuàng)建Index時(shí),MyISAM的表Cardinality的值為null,InnoDB的表Cardinality的值大概為行數(shù)。
5、可以通過(guò)Analyze table來(lái)更新一張表或者mysqlcheck -Aa來(lái)進(jìn)行更新整個(gè)數(shù)據(jù)庫(kù)
6、可以通過(guò) show index 查看其值

相關(guān)文章

最新評(píng)論

江永县| 哈密市| 星座| 蕉岭县| 遂平县| 和政县| 平陆县| 清徐县| 汝阳县| 丰城市| 尼玛县| 驻马店市| 绥宁县| 石河子市| 富锦市| 鄱阳县| 双鸭山市| 邮箱| 和顺县| 门源| 台东市| 建水县| 神农架林区| 青浦区| 上高县| 毕节市| 垦利县| 安新县| 会泽县| 石台县| 民县| 新竹县| 株洲县| 兴安县| 黄浦区| 洮南市| 铜梁县| 和平区| 都匀市| 蒙山县| 阳新县|