diff --git a/exports/hykilp/atom.xml b/exports/hykilp/atom.xml index 8870a77eb..4b8139b8a 100644 --- a/exports/hykilp/atom.xml +++ b/exports/hykilp/atom.xml @@ -2,11 +2,23 @@ https://aza.moe/life 小桂桂的回忆录 📒 - 2024-11-21T02:35:13.592316+00:00 + 2024-11-21T04:11:11.986977+00:00 python-feedgen https://aza.moe/meru_256px.png 「我们所经历的每个平凡的日常,也许就是连续发生的奇迹」 + + 4671 + 小桂桂的回忆录 📒 #4671 + 2024-11-21T03:25:16+00:00 + <p>今天花了一整天调查这个数据库问题, Hibernate 全责 <i class="custom-emoji" emoji-src="emoji/6323582802050680516.webp">🛌</i> 以后的项目再也不用 Java EE 了</p> +<p>我试了一下把这整个函数用 native mysql 写出来,发现这条大查询只用 1.19 秒,那为什么我的 kotlin 代码运行速度差这么大呢?</p> +<p>开了 SQL debug 之后我发现即使只是 .findAll() 都要 N 条查询,按理来说 select * from table 只要一条查询就行啊,为什么呢?仔细看看这 N 条查询发现它把 OneToOne fk 都一个一个拉下来了。原本首先花了一条查询 SELECT * FROM parent,然后又花了 N 条查询拉 SELECT * FROM child WHERE id=i...</p> +<p>查了一下这个问题,网上说开 Hibernate bytecode enhance 就好了,它会修改编译完的字节码让 fk 链接用到的时候再查询而不是预先把所有东西查询好。问题是它不太兼容 kotlin,绕过了三个不同的问题才成功编译,之后加上 lazy fetch 终于可以让它在用到 fk 的时候再拉数据了... </p> +<p>但是即使这样依然要把需要拉所有 fk 数据的地方改成手动 mysql 查询,因为 orm/jpql 没办法让 findAll 把单独的查询优化成 join <i class="custom-emoji" emoji-src="emoji/6323582802050680516.webp">🛌</i></p> +<p>唉 感觉凡是透明一点的 ORM 比如 ktorm 或者 exposed 都不会有这样的问题,以后不会再用 Java EE 了</p> + + 4670 小桂桂的回忆录 📒 #4670 diff --git a/exports/hykilp/index.html b/exports/hykilp/index.html index 4e74ce5ae..646a0ae7c 100644 --- a/exports/hykilp/index.html +++ b/exports/hykilp/index.html @@ -27,7 +27,7 @@ diff --git a/exports/hykilp/media/4671.jpg b/exports/hykilp/media/4671.jpg new file mode 100644 index 000000000..03fd8d610 Binary files /dev/null and b/exports/hykilp/media/4671.jpg differ diff --git a/exports/hykilp/media/4671.jpg_thumb.jpg b/exports/hykilp/media/4671.jpg_thumb.jpg new file mode 100644 index 000000000..80e46203c Binary files /dev/null and b/exports/hykilp/media/4671.jpg_thumb.jpg differ diff --git a/exports/hykilp/media/4672.jpg b/exports/hykilp/media/4672.jpg new file mode 100644 index 000000000..370e446e9 Binary files /dev/null and b/exports/hykilp/media/4672.jpg differ diff --git a/exports/hykilp/media/4672.jpg_thumb.jpg b/exports/hykilp/media/4672.jpg_thumb.jpg new file mode 100644 index 000000000..5b3012ecf Binary files /dev/null and b/exports/hykilp/media/4672.jpg_thumb.jpg differ diff --git a/exports/hykilp/posts.json b/exports/hykilp/posts.json index 89da6a525..d6a685734 100644 --- a/exports/hykilp/posts.json +++ b/exports/hykilp/posts.json @@ -61232,7 +61232,7 @@ "id": 4468, "date": "2024-09-22T06:31:03", "text": "开坑\n\n开坑第一件事当然是起一个不会让我两年之后后悔的名字", - "views": 103, + "views": 104, "forwards": 0, "reply": { "id": 4467, @@ -61255,14 +61255,14 @@ "id": 4469, "date": "2024-09-22T17:18:21", "text": "朋友在多伦多开的机厅快要正式开业了,想哪天去看看 qwq\n\n唉 今天才真正意识到开机厅的人多么有钱,maimai DX 框在这边一直是五位数 USD 价格都很难拿到货,然后他告诉我他们买了两台,第二台还在海上 🤗\n\n再看看我为了省一两千 USD 自己造 Wacca 框,为了省一千 CAD 运 ADX 框的时候自己找渠道走了海运没走空运... 🥺", - "views": 103, + "views": 104, "forwards": 2 }, { "id": 4470, "date": "2024-09-22T23:11:06", "text": "去一趟机厅赚了 $172 \n\n(好吧其实并没有赚,只是把他们从我这里订的 Wacca LED 替换板卖给他们了 quq", - "views": 97, + "views": 98, "forwards": 2, "media_group_id": 13816373334825989, "images": [ @@ -61316,7 +61316,7 @@ "id": 4474, "date": "2024-09-22T23:28:08", "text": "他们那家店里面的样子,目前有 Wacca Plus, maimai DX, 中二, DIVA, SDVX, IIDX, 还有一些一般街机比如舰 C\n\n真的好厉害,今年三月的时候他们刚开始准备,居然现在就已经在准备开业了还有这么多劲爆机器... 真好啊,希望他们能回本 quq\n\n今天去的时候就很热闹了,有几个认识的人来玩,还有 discord 上一直觉得很厉害的店员在修路由器装修房间,也认识了一些新朋友 👩‍👧‍👧(不过感觉我认出来的人还是少数,虽然 discord 上都认识但是线下完全猜不出谁是谁——唉感觉是很多群友同时见面难免会遇到的问题", - "views": 107, + "views": 108, "forwards": 0, "media_group_id": 13816381504337565, "images": [ @@ -61396,7 +61396,7 @@ "id": 4481, "date": "2024-09-24T01:57:52", "text": "以前用 VLC 放视频的时候经常不小心按倒 C 键然后画面就会被裁剪到一个特定的长宽比,当时还在想谁会用到这么鸡肋的功能\n\n然后今天遇到了一个用 16:9 设置录 4:3 ppt 的课 🌚", - "views": 175, + "views": 176, "forwards": 2, "images": [ { @@ -61415,7 +61415,7 @@ "id": 4482, "date": "2024-09-25T05:41:50", "text": "定一个小目标,到明年 1 月 1 号之前我不再开新坑了,想要好好把开过没做完的坑填完...", - "views": 143, + "views": 144, "forwards": 0 }, { @@ -61428,7 +61428,7 @@ "id": 4484, "date": "2024-09-25T05:49:15", "text": "#桂桂今天吃什么\n柚子!\n\n长长果味触手", - "views": 138, + "views": 139, "forwards": 1, "images": [ { @@ -61447,7 +61447,7 @@ "id": 4485, "date": "2024-09-26T04:33:21", "text": "我真的好不擅长数学...\n\nCSC458 计网课的大作业要用 cpp 实现一个网卡,我只用了三个小时就写完了,单元测试 100% 通过\n\nCSC311 机器学习理论课的作业有很多抽象数学,我这三天总共花了 14 个小时在这上面,做着做着发现完全忘记矩阵乘法维度的规则了去补补,又发现忘了非零特征值是什么意思了,怎样给偏导数求导也忘记了... 明明以为留三天的时间肯定够的,交上去的时候还是要空掉 20% 的分 🛌\n\n怎么办好想退课... 但是现在是最后一年,退课就会打乱下学期的计划或者要晚一年毕业了 🛌", - "views": 171, + "views": 172, "forwards": 4, "media_group_id": 13818601608875197, "images": [ @@ -61556,7 +61556,7 @@ "id": 4492, "date": "2024-09-30T03:03:34", "text": "又遇到了何等的巧合\n\n上次在机场遇到扶苏的时候,扶苏和我聊到她有一个朋友也要去多伦多,也玩舞萌,当时还给那个朋友发了消息但是没有回\n\n然后前几天聊聊说 Celestium 新的对象听说这里有舞萌想来玩,已经习惯了有很多人来这里玩就没有多想。然后玩着舞萌和她聊天,聊着聊着发现她就是扶苏说的那个朋友 Tracer 🥺 世界成环了\n\n聊着聊着还发现她的成分和我好相似 😀 都在训练用来数字化自己的 LLM、都喜欢打/魔改舞萌和 ff14、搭 homelab 和 NAS、也和我大一住宿舍的时候一样做了 UofT EAP 的无线转发、写 AC 机解作业题、在尝试了解 RF... 奇妙", - "views": 151, + "views": 152, "forwards": 1, "reply": { "id": 4276, @@ -63744,7 +63744,7 @@ "id": 4648, "date": "2024-11-14T05:31:41", "text": "#谜题 这次是赛博管道维修工(?)\n\nPipes", - "views": 93, + "views": 94, "forwards": 0, "reply": { "id": 4404, @@ -63907,7 +63907,7 @@ "id": 4657, "date": "2024-11-16T09:07:27", "text": "GitHub 星星数量排名前 10000 的代码语言统计数据\n\n排名第三位的是「没有代码」 🌚 众所周知 GitHub 是一个由微软开发的免费网盘", - "views": 126, + "views": 127, "forwards": 2, "images": [ { @@ -64066,7 +64066,7 @@ "id": 4665, "date": "2024-11-19T06:57:00", "text": "感觉自己开始会玩一点 shogi 了 ☗", - "views": 84, + "views": 85, "forwards": 1, "images": [ { @@ -64134,7 +64134,7 @@ "id": 4669, "date": "2024-11-20T14:43:04", "text": "今天是第 25 个跨性别纪念日。由 One Among Us、Project Trans 及跨性别相关放送联合举办的纪念晚会将于2024年11月23日 20:00 (UTC+8) 举行,以文字、念白与歌声献给陨落的星辰,献给所有柔软而坚韧的我们。\n\n收看方式: YouTube.com/@OneAmongUsPride 或访问 live.oau.app 获取更多直播信息。", - "views": 31, + "views": 34, "forwards": 0, "forwarded_from": { "name": "One Channel! 跨儿骄傲联合广播" @@ -64156,7 +64156,7 @@ "id": 4670, "date": "2024-11-20T15:44:45", "text": "呜呜 当时写 AquaDX 的时候选择了「先用最方便快捷的方式把网页做出来,等有问题的时候再优化」,然后就随手写出了一个请求需要把数据库两个表完整拉下来的代码 🥺\n\n然后现在真的有问题了,现在请求一次排行榜要拉 1452 个用户和 221448 条游玩记录... 优化之前要整整 30 秒,稍微加了缓存和 batching 优化了一下也依然要十秒 🛌", - "views": 43, + "views": 49, "forwards": 0, "reply": { "id": 3430, @@ -64175,5 +64175,39 @@ "thumb": "media/4670.jpg_thumb.jpg" } ] + }, + { + "id": 4671, + "date": "2024-11-21T03:25:16", + "text": "今天花了一整天调查这个数据库问题, Hibernate 全责 🛌 以后的项目再也不用 Java EE 了\n\n我试了一下把这整个函数用 native mysql 写出来,发现这条大查询只用 1.19 秒,那为什么我的 kotlin 代码运行速度差这么大呢?\n\n开了 SQL debug 之后我发现即使只是 .findAll() 都要 N 条查询,按理来说 select * from table 只要一条查询就行啊,为什么呢?仔细看看这 N 条查询发现它把 OneToOne fk 都一个一个拉下来了。原本首先花了一条查询 SELECT * FROM parent,然后又花了 N 条查询拉 SELECT * FROM child WHERE id=i...\n\n查了一下这个问题,网上说开 Hibernate bytecode enhance 就好了,它会修改编译完的字节码让 fk 链接用到的时候再查询而不是预先把所有东西查询好。问题是它不太兼容 kotlin,绕过了三个不同的问题才成功编译,之后加上 lazy fetch 终于可以让它在用到 fk 的时候再拉数据了... \n\n但是即使这样依然要把需要拉所有 fk 数据的地方改成手动 mysql 查询,因为 orm/jpql 没办法让 findAll 把单独的查询优化成 join 🛌\n\n唉 感觉凡是透明一点的 ORM 比如 ktorm 或者 exposed 都不会有这样的问题,以后不会再用 Java EE 了", + "views": 24, + "forwards": 0, + "media_group_id": 13857276129125749, + "images": [ + { + "width": 2089, + "height": 1994, + "date": "2024-11-21T03:25:07", + "media_type": "photo", + "original_name": "photo_2024-11-21_03-25-07.jpg", + "url": "media/4671.jpg", + "size": 383053, + "thumb": "media/4671.jpg_thumb.jpg" + }, + { + "width": 2354, + "height": 890, + "date": "2024-11-20T19:06:16", + "media_type": "photo", + "original_name": "photo_2024-11-20_19-06-16.jpg", + "url": "media/4672.jpg", + "size": 369848, + "thumb": "media/4672.jpg_thumb.jpg" + } + ], + "reply": { + "id": 4670, + "text": "呜呜 当时写 AquaDX 的时候选择了「先用最方便快捷的方式把网页做出来,等有问题的时候再优化」,然后就随手写出了一个请求需要把数据库两个表完整拉下来的代码 🥺\n\n然后现在真的有问题了,现在请求一次排行榜要拉 1452 个用户和 221448 条游玩记录... 优化之前要整整 30 秒,稍微加了缓存和 batching 优化了一下也依然要十秒 🛌" + } } ] \ No newline at end of file diff --git a/exports/hykilp/rss.xml b/exports/hykilp/rss.xml index a8a9a4173..f272ecdb1 100644 --- a/exports/hykilp/rss.xml +++ b/exports/hykilp/rss.xml @@ -12,7 +12,18 @@ https://aza.moe/life zh-cn - Thu, 21 Nov 2024 02:35:13 +0000 + Thu, 21 Nov 2024 04:11:11 +0000 + + 小桂桂的回忆录 📒 #4671 + https://aza.moe/life?post=4671 + <p>今天花了一整天调查这个数据库问题, Hibernate 全责 <i class="custom-emoji" emoji-src="emoji/6323582802050680516.webp">🛌</i> 以后的项目再也不用 Java EE 了</p> +<p>我试了一下把这整个函数用 native mysql 写出来,发现这条大查询只用 1.19 秒,那为什么我的 kotlin 代码运行速度差这么大呢?</p> +<p>开了 SQL debug 之后我发现即使只是 .findAll() 都要 N 条查询,按理来说 select * from table 只要一条查询就行啊,为什么呢?仔细看看这 N 条查询发现它把 OneToOne fk 都一个一个拉下来了。原本首先花了一条查询 SELECT * FROM parent,然后又花了 N 条查询拉 SELECT * FROM child WHERE id=i...</p> +<p>查了一下这个问题,网上说开 Hibernate bytecode enhance 就好了,它会修改编译完的字节码让 fk 链接用到的时候再查询而不是预先把所有东西查询好。问题是它不太兼容 kotlin,绕过了三个不同的问题才成功编译,之后加上 lazy fetch 终于可以让它在用到 fk 的时候再拉数据了... </p> +<p>但是即使这样依然要把需要拉所有 fk 数据的地方改成手动 mysql 查询,因为 orm/jpql 没办法让 findAll 把单独的查询优化成 join <i class="custom-emoji" emoji-src="emoji/6323582802050680516.webp">🛌</i></p> +<p>唉 感觉凡是透明一点的 ORM 比如 ktorm 或者 exposed 都不会有这样的问题,以后不会再用 Java EE 了</p> + 4671 + 小桂桂的回忆录 📒 #4670 https://aza.moe/life?post=4670