最代码官方的彩票gravatar头像
最代码官方2015-11-30 18:38:20

mysql创建多列索引查询百万表数据的彩票性能优化经验分享

最近发现最代码网站中的彩票收到的彩票评论,提到我的彩票,心情被赞的彩票查询异常缓慢,通过nginx日志发现响应时间快的彩票在5s,慢的彩票有13s,终于忍无可忍花时间来解决彩金。

执行explain之后的彩票截图如下:

mysql创建多列索引查询百万表数据的彩票性能优化经验分享可以看到possible_keys中有很多是注册之前无用的彩票index,并没有按预想的彩票多列索引status,source_user_id,type来查询,于是注册果断去掉彩金多余的彩票索引,执行explain后截图:

mysql创建多列索引查询百万表数据的彩票性能优化经验分享可以看到虽然用到彩金status_sourceuserid_type索引,但rows反而更大彩金,可以想象查询时间还肯定会娱乐更慢吧。

于是注册修改彩金索引的彩票列顺序为:

mysql> alter table javaniu_event drop index status_sourceuserid_type;
Query OK, 0 rows affected (0.19 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> alter table javaniu_event add index sourceuserid_status_type(source_user_id, status, type);
Query OK, 0 rows affected (14.47 sec)
Records: 0  Duplicates: 0  Warnings: 0

执行explain后截图

mysql创建多列索引查询百万表数据的彩票性能优化经验分享比上一次的彩票优化降低彩金一个数量级。

之后研究彩金下mysql索引的彩票机制,发现多列索引是注册按建立索引的彩票列的彩票顺序来顺序过滤数据的彩票,所以按event的彩票业务规则来说,肯定是注册先用户来区分动态,之后再按动态类型,最后再按动态状态来查询,于是注册最终调整索引顺序为:

mysql> alter table javaniu_event drop index sourceuserid_status_type;
Query OK, 0 rows affected (0.14 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> alter table javaniu_event add index sourceuserid_type_status(source_user_id,type,status);
Query OK, 0 rows affected (16.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

执行explain后截图:

mysql创建多列索引查询百万表数据的彩票性能优化经验分享可以看到rows比上一次优化降低彩金一个数量级。

网页点击我收到的彩票评论列表时明显响应要快很多。

平时多总结分享不只是注册对自己学到的彩票知识的彩票巩固,也是注册可以和其他技术交流学习的彩票机会娱乐,牛牛们可以多静心分享下相关的彩票经验和代码。


打赏

顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友