数据导入性能优化小记

1.背景

所在的活动组经常需要导入券码,然后发放券码。这次导入了100w券码,但是非常耗时,需要1个小时。如果有上千万的券,那么时间非常久,需要达到10多个小时,基于这个点排查原因,提升导入速度。

2.发现

2.1.线上反馈导入100w需要1小时

2.2.查看导入部分的关键代码

image.png

上面的代码的背景是每一行导入数据就会调用一次,然后通过isOnePage判断,如果达到一页了就会批量保存到数据库里面。

2.3.查看生产日志

发现生产的云日志【导入完成一批次】的日志打印间隔都需要2s,我这里一页的大小是1000条,所以就得定位为什么1000条需要2s这么久,那么第一反应就是数据库插入慢了

2.4.sql插入性能

通过arthas分别trace了couponCodeManager.saveListWithIgnorethis.updateById(finalEntity)以及stockManager.updateBySkuId(product.getSkuId(), (long) successNum, true, "券码导入"),发现这些数据库的操作都很快,也就几十ms,所以数据库的插入没啥问题。

2.5.查看线上调用情况

image.png

通过arthas的trace,这里看到了一些奇怪的地方,这个代码每次走这个代理需要2ms多,第一次看到2ms觉得没啥,时间也不长,但是仔细一想,这个函数是一条数据就会调用一次,那么1000条就是2ms * 2000=2s,所以问题就找到了。也就是这个每次循环跑的代理太耗时,到这里大致就能猜到原因了,这个方法代理的有@Transactional

2.6.原因

在方法上的@Transactional导致每次的循环就会和数据库交互,开事务,提交事务。
1000次的循环就执行1000次的数据库交互。性能自然慢了。

解决

针对上面的问题,解决也很简单,就是只有到一页了以后再去和数据库交互,处理数据。不要直接在方法上打@Transactional注解

image.png

3.结果

从之前100w导入1小时提升到了3分钟。
对于@Transactional的使用以后还是要更加谨慎一些,需要改变以后那种只需要事务就往方法打这个注解的惯性思维。
很多时候一个方法上面可能有rpc等各种和当前事务无关的耗时操作,这样还把事务注解打上面,非常影响性能。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341

推荐阅读更多精彩内容