以mysql为例。 1. count(1) and count(*) 当表的数据量大些时,对表作分析之后,使用count(1)还要比使用count()用时多了!从执行计划来看,count(1)和count()的效果是一样的。但是在表做过分析之后,count(1)会比count(*)的用时少些(1w以内数据量),不过差不了多少。 如果count(1)是聚索引,id,那肯定是count(1)快。但是差的很小的。因为count(),自动会优化指定到那一个字段。所以没必要去count(1),用count(),sql会帮你完…

2020-09-27 0条评论 6441点热度 0人点赞 柯广 阅读全文

国庆节的一个大清早,我就被微信群吵醒了,说是spark实时程序有问题,数据没出来,让我看看。我看了下邮箱,确实有报警信息。我特么,没办法,起床。 1 主键自增id设置不合理引发的bug 首先,我检查了一下应用管理页面,发现资源没有用完,GC也正常,程序正在嗖嗖的跑呢,那怎么会没有今天的数据呢? 看了下日志,error.log里面并没有今天的日志,warn.log里面有sql语句,都很正常,这到底是怎么回事呢? 算了,手动验证一下吧,从warn.log里面复制了一条sql,放在mysql命令行执行,显示:OK 2 r…

2020-04-12 0条评论 1083点热度 0人点赞 柯广 阅读全文

场景描述 线上mysql数据库里面有张表保存有每天的统计结果,每天有1千多万条,这是我们意想不到的,统计结果咋有这么多。运维找过来,磁盘占了200G,最后问了运营,可以只保留最近3天的,前面的数据,只能删了。删,怎么删? 因为这是线上数据库,里面存放有很多其它数据表,如果直接删除这张表的数据,肯定不行,可能会对其它表有影响。尝试每次只删除一天的数据,还是卡顿的厉害,没办法,写个Python脚本批量删除吧。 具体思路是: 每次只删除一天的数据; 删除一天的数据,每次删除50000条; 一天的数据删除完,开始删除下一天…

2020-04-12 0条评论 6316点热度 0人点赞 柯广 阅读全文