一周又过去了,时间过的挺快的,这都已经10月底了,本来计划着这周去故宫逛一逛的,但是北京疫情形势严峻,就作罢了,那就聊聊工作上的事吧。

周一,learder又找我了,说我写的两个SQL已经在慢查里面排头两名了,自己去一分析,还真是,”limit 40000,50“速度很慢,应该是扫描了全表,我的场景是想使用两个索引当作条件,但是mysql的优化器选择的索引,在我看来并不是最优的那一个,导致了运行速度很慢,后来了解到联合索引,这正符合我所使用的场景,加上了之后,速度确实提升了很多。 但这也只是针对结果集比较小的时候,当数量上万的时候,sql仍然会慢,总结有如下几个问题点:

  • 1.在建表的时候未使用自增索引,导致在查查全表的时候,不能用自增id减少结果集。

  • 2.在该需求中采用了不合适的技术方案,其实这一操作,有更好的方式去实现,并不应该在扫表发现问题后再去做这一件事。

后面临时的解决方式是,增加了联合索引,在现阶段还是能用一下的,等结构优化后,再使用新方式。

上周还干了一件大事,用一条sql把holo给打挂了,我们的数据库会有一部分同步到hologres,这时候,我们就可以很轻松的到metabase去查看这部分数据,兼容pgsql,减少因查数据给从库带来压力,而且查询的速度极快,这让我有点肆无忌惮了,各种比较垃圾的sql,从不考虑它的性能,直接用上,展示一部分

with
a as (
select orderitemid,itemid,skuid,itemname,concat(colorname,sizename) as skuname from order_item_version where bbtbrandname='happy nocnoc'
),
b as (
select orderid,ordertype,stepstatus,createtime from bbt_order where stepstatus=1 and ordertype=25 and createtime>'2021-10-01 00:00:46'
),
c as (
select id as orderitemid,orderid from order_item where createtime>'2021-10-01 00:00:46'
),
d as (
select itemid,skuid,barcode from supplier_sku_extra_barcode
)
select barcode,min(a.itemname) as itemname,min(a.skuname),count(barcode) as num from a,b,c,d where a.orderitemid=c.orderitemid and b.orderid=c.orderid and a.itemid=d.itemid and a.skuid=d.skuid group by d.barcode order by num desc;
with 
a as (
select json_array_elements(jdp_response::json#>'{item_get_response,item,skus,sku}')#>>'{outer_id}' as barcode from third_item_tmall where tmallitemid='641857610892'
),
b as (
select barcode from supplier_sku_extra_barcode
)
select * from a where barcode not in (select * from b)

当运维大佬发现holo挂的时候,找了很久没有找到问题所在,后来直接去找sql,然后我这两条就直接晾在了大群里,供大家观赏,就很尬。回归到技术本身,第一条sql,实际上有些临时表是不需要的,会多消耗些不必要的资源,因为是holo就没有管。

最low的是下面那条sql,我猜导致holo挂掉的也是它,因为kill它之后,cpu就回复正常了,我not in结果集了,结果集有多大,200万条数据,典型的没吃过亏啊,记得之前有同事踩过not in的坑,但是那时我还不知道holo是什么,回归到sql语句上,not in那么大一个结果集,这也是极其愚蠢的。

我把它当成了累不死的牛,可是按讲说,它那么久没查出来结果,不应该终止这次查询吗?而且我也只运行了几次,这次风波却持续了1小时18分,据他们说holo如果这次查询失败,后面会自动再去查询,这我是不信的,上网查找相关的知识,没发现,我能理解的是,这条sql就一直hang在那,一直在运行,直到查询到结果为止。

对陌生事物保持敬畏。

再来聊聊生活吧,今天交了4个月暖气费,1600元,可真贵啊,按照地区暖气收费标准,这也是及其不合理的,无形之中,多了一笔较大的开销,可是还有一个月房租压在房东那,也不能做些什么。

连续带了两周的饭,生活才慢慢有了样子,起得早不一定会很累,做做饭,还是挺有趣的。

离开家,离开学校,人生孤独是常态。为了家,为了生活,为了追求自己想要的,我拼尽全力,光鲜亮丽也好,一身灰也罢,会犯错,会认识自己,会幻想破灭,会成长。

接下来,还得继续努力工作,还要加油。还得从生活中再多了解一下自己,接纳自己,继续成长。