-
-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Optimize document moving and renaming performance #10560
Comments
另外备注,我最后移动操作移动的文件就是截图中的这个文件,就是同级移动改个顺序(文档树拖动,指示条卡住,等了好久完成了指示条消失,文档转移顺序成功),就花费了漫长的时间。 |
是移动的父文档还是多选子文档移动? |
都有吧,子文档也可以是有子文档的吧。这个使用场景上无法小心的区分开来,不然的放着移动父文档不用,要展开子文档要一个一个多选有些离谱(存在限制展开多少子文档选项,如果子文档很多超过200,我限制显示100,那么多的就无法手动选择完全,即使花时间一个一个手点和还有一个shift+下批量快捷选中都是不方便的和无法全部选中的)。 还有反馈一个类似的性能问题,如果这个文档有很多子文档子文档正常有自己的子文档,那么像上面截图的体量文件的话,改变文件名就会缓慢。现象就是,文档打开的文档名是已经改好了,但是文档树的文档名没有变(有时候看文档树的没变会重新改一次,然后我怀疑后台会也会加入队列任务重复再跑一次改动,反正我第一次遇见这个情况文档中改,文档树中改,导致后台改名跑了好久,不得不挂机看视频去了),下栏可以看到后台在以一个小批量一次的比较缓慢的速度改变着什么。 |
目前的逻辑是移动文档超过 64 个的话(不算子文档,只算移动的这一层)会弹进度遮罩 #9356 目前的实现代码暂时找不到优化空间了,主要是移动的时候需要加载解析文档和在文件系统上移动文件,如果子文档很多的话确实会比较慢。 移动和重命名逻辑上是一样的,都需要修改 hpath,所以重命名也会比较慢。 我关闭了,后续如果有优化方案的话再打开,感谢反馈。 |
下个版本会优化索引性能,麻烦帮忙对比测试 #10624 |
@88250 好的 |
发现这个用户和我差不多的的问题,不过还没有被回复,这里贴一下关联一下。https://ld246.com/article/1710474212925 |
看一下启动后打印的数据量日志,就是这一部分:
移动文档后需要批量重建索引,这样才能保证搜索路径和引用路径的正确性,以目前的结构来看,优化空间很小了。 估计只能考虑将不常用的文档存档以降低总的数据索引量来顶顶了。 |
@88250 I 2024/03/18 23:19:17 blocktree.go:495: read block tree [146 MB] to [H:\My-Instrument\Software\思源笔记\思源工作空间\temp\blocktree], elapsed [0.49s] |
@88250 对我来说不可能封存的,因为我是引用当标签的呀,就是通过标签反链(这是思源的优势而且实际体验下来只要标签打的好非常好用,现在我大到文档小到碎片信息一句话打上标签就丢文档里面了),日后在笔记里找素材的时候就是能看到丢在那个角落的文档。封存了就没记笔记的搞这个体系的意义了。而且现在移动文档速度感人,不敢大批量移动。总之我觉得如果现阶段找不到优化办法的话,后面每个深度思源笔记用户都会遇到这个问题(除非完全砍了文档树,但以现在用户体量来说不现实,而且文档树有文档树的优势)相信会有越来越多用户反映(其实应该有不少用用户发现了,但是就像我对思源有极大的忍耐性,因为思源是敏捷开发BUG多是常是但都在两到三个小版本内就解决了,所以都看看是否有其他人提,都有观望性,不到难受到极点自己是不会说的) |
@88250 总之如果实在没有优化办法的话,就只能将就这用了。 |
@UFDXD 只能说预先一次性设计好笔记本的层级和架构,整理一遍,之后尽可能少大批量移动文档 |
@TCOTC 这问题是因为,我本来是传统的文档树用户,开始用思源根本不懂反链的是什么。后来也就是最近用上思源自带的标签。但是思源自带的标签很简单,无法支撑后期灵活的修改。然后逛社区发现有人用引用代替标签兼得反链后期素材整理文章输出。我这一用发现好用哇。然后就是用上了反链,走引用标签这条路了。所以问题就是出在这里,在用之前积累了大量文档树结构文档,这部分现在逐渐在分化整理,然后就发现了这个索引性能问题。 |
@UFDXD 我今天也在整理文档树,因为文档不多所以没什么感觉。看来以后也要注意了。 |
好吧,刚才移动了一个子文档稍微多点的,卡住10秒,确实太慢了 |
😥 |
刚才移动了一个子文档比较多的(但不到50个),卡住40秒,更慢了 |
@TCOTC 所以说这是难以忍受的。而且这期间什么都不能做。来回修改父文件文档名也是的。 |
目前性能瓶颈主要在修改块的 HPath 上 Line 1214 in 9576409
各位有空可以帮忙想想办法。 |
整理文档树会时不时卡住几十秒真的是灾难,希望有办法优化🙏 另外问了一下 GPT-4 ,回复可能没什么卵用,但还是附在这里了:
|
@TCOTC 稍后我试试,多谢。 |
找到个优化方案可以大概提升 40% 的时间:
另外,还要考虑输入标题时待用户确认以后(焦点离开)再调用重命名 @Vanessa219 |
如果焦点没离开就关闭了思源,不知道会不会有问题 |
嗯,这些情况得考虑到。
…---Original---
From: "Jeffrey ***@***.***>
Date: Tue, Mar 19, 2024 17:28 PM
To: ***@***.***>;
Cc: ***@***.***>;"State ***@***.***>;
Subject: Re: [siyuan-note/siyuan] Optimize document moving and renamingperformance (Issue #10560)
输入标题时待用户确认以后(焦点离开)再调用重命名
如果焦点没离开就关闭了思源,不知道会不会有问题
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you modified the open/close state.Message ID: ***@***.***>
|
和 V 讨论了下,焦点离开提交修改比较危险,容易漏提交数据,所以这部分交互暂时还是不动了,这个 issue 仅优化后端性能。 |
暂时只能这样了,后面看看还有没有其他优化空间。
…---Original---
From: ***@***.***>
Date: Thu, Mar 21, 2024 03:36 AM
To: ***@***.***>;
Cc: ***@***.******@***.***>;
Subject: Re: [siyuan-note/siyuan] Optimize document moving and renamingperformance (Issue #10560)
@88250 还是这个文档,这次将其还原移动到原来的父级,也就是作为子文件夹。花费时间感觉还是不容乐观。
I 2024/03/21 02:56:37 conf.go:827: database size [1.5 GB], tree/block count [3841/370223]
I 2024/03/21 02:56:37 serve.go:128: reverse proxy server [127.0.0.1:6806] is booting
I 2024/03/21 02:56:37 working.go:192: kernel booted
I 2024/03/21 02:56:39 box.go:76: auto stat [trees=3841, blocks=370223, dataSize=3.6 GB, assetsSize=3.3 GB]
I 2024/03/21 02:56:39 disk.go:33: disk usage [total=90 GB, used=32 GB, free=57 GB]
W 2024/03/21 02:56:43 file.go:360: build docs [9] elapsed [591ms]
W 2024/03/21 02:56:47 queue.go:141: too many tasks [task.database.index.fix], ignore show its status
W 2024/03/21 02:56:47 queue.go:141: too many tasks [task.database.index.fix], ignore show its status
W 2024/03/21 02:56:52 queue.go:141: too many tasks [task.database.index.fix], ignore show its status
W 2024/03/21 02:56:52 queue.go:141: too many tasks [task.database.index.fix], ignore show its status
W 2024/03/21 02:56:57 queue.go:141: too many tasks [task.database.index.fix], ignore show its status
W 2024/03/21 02:56:57 queue.go:141: too many tasks [task.database.index.fix], ignore show its status
W 2024/03/21 02:57:02 queue.go:141: too many tasks [task.database.index.fix], ignore show its status
W 2024/03/21 02:57:02 queue.go:141: too many tasks [task.database.index.fix], ignore show its status
W 2024/03/21 02:57:07 queue.go:141: too many tasks [task.database.index.fix], ignore show its status
W 2024/03/21 02:57:07 queue.go:141: too many tasks [task.database.index.fix], ignore show its status
W 2024/03/21 02:57:12 queue.go:141: too many tasks [task.database.index.fix], ignore show its status
W 2024/03/21 02:59:16 blocktree.go:552: save block tree [size=146 MB] to [H:\My-Instrument\Software\思源笔记\思源工作空间\temp\blocktree], elapsed [4.02s]
I 2024/03/21 03:00:01 queue.go:157: database op tx [50293ms]
W 2024/03/21 03:00:04 blocktree.go:552: save block tree [size=89 MB] to [H:\My-Instrument\Software\思源笔记\思源工作空间\temp\blocktree], elapsed [2.47s]
I 2024/03/21 03:00:40 queue.go:157: database op tx [38007ms]
W 2024/03/21 03:00:48 blocktree.go:552: save block tree [size=146 MB] to [H:\My-Instrument\Software\思源笔记\思源工作空间\temp\blocktree], elapsed [4.07s]
I 2024/03/21 03:01:26 queue.go:157: database op tx [44645ms]
W 2024/03/21 03:01:33 blocktree.go:552: save block tree [size=146 MB] to [H:\My-Instrument\Software\思源笔记\思源工作空间\temp\blocktree], elapsed [4.10s]
I 2024/03/21 03:01:53 queue.go:157: database op tx [26573ms]
I 2024/03/21 03:02:24 queue.go:157: database op tx [30281ms]
W 2024/03/21 03:02:34 blocktree.go:552: save block tree [size=137 MB] to [H:\My-Instrument\Software\思源笔记\思源工作空间\temp\blocktree], elapsed [3.88s]
I 2024/03/21 03:04:47 queue.go:157: database op tx [140944ms]
I 2024/03/21 03:05:15 queue.go:157: database op tx [27561ms]
W 2024/03/21 03:05:19 blocktree.go:552: save block tree [size=136 MB] to [H:\My-Instrument\Software\思源笔记\思源工作空间\temp\blocktree], elapsed [3.70s]
I 2024/03/21 03:06:56 queue.go:157: database op tx [98266ms]
I 2024/03/21 03:07:37 queue.go:157: database op tx [40149ms]
W 2024/03/21 03:07:45 blocktree.go:552: save block tree [size=99 MB] to [H:\My-Instrument\Software\思源笔记\思源工作空间\temp\blocktree], elapsed [2.84s]
I 2024/03/21 03:09:01 queue.go:157: database op tx [82076ms]
W 2024/03/21 03:09:08 blocktree.go:552: save block tree [size=106 MB] to [H:\My-Instrument\Software\思源笔记\思源工作空间\temp\blocktree], elapsed [3.09s]
I 2024/03/21 03:10:46 queue.go:157: database op tx [102399ms]
W 2024/03/21 03:10:53 blocktree.go:552: save block tree [size=144 MB] to [H:\My-Instrument\Software\思源笔记\思源工作空间\temp\blocktree], elapsed [4.73s]
I 2024/03/21 03:12:35 queue.go:157: database op tx [106123ms]
W 2024/03/21 03:12:42 blocktree.go:552: save block tree [size=144 MB] to [H:\My-Instrument\Software\思源笔记\思源工作空间\temp\blocktree], elapsed [4.04s]
I 2024/03/21 03:13:43 queue.go:157: database op tx [66094ms]
W 2024/03/21 03:13:51 blocktree.go:552: save block tree [size=146 MB] to [H:\My-Instrument\Software\思源笔记\思源工作空间\temp\blocktree], elapsed [4.39s]
I 2024/03/21 03:13:54 queue_history.go:106: database history op tx [11114ms]
W 2024/03/21 03:14:01 blocktree.go:552: save block tree [size=147 MB] to [H:\My-Instrument\Software\思源笔记\思源工作空间\temp\blocktree], elapsed [4.69s]
I 2024/03/21 03:21:48 queue.go:157: database op tx [473899ms]
W 2024/03/21 03:21:56 blocktree.go:552: save block tree [size=147 MB] to [H:\My-Instrument\Software\思源笔记\思源工作空间\temp\blocktree], elapsed [4.04s]
I 2024/03/21 03:23:32 queue.go:157: database op tx [101505ms]
W 2024/03/21 03:23:39 blocktree.go:552: save block tree [size=88 MB] to [H:\My-Instrument\Software\思源笔记\思源工作空间\temp\blocktree], elapsed [3.29s]
I 2024/03/21 03:23:55 queue.go:157: database op tx [22307ms]
W 2024/03/21 03:24:04 blocktree.go:552: save block tree [size=147 MB] to [H:\My-Instrument\Software\思源笔记\思源工作空间\temp\blocktree], elapsed [4.28s]
I 2024/03/21 03:25:32 queue.go:157: database op tx [95392ms]
I 2024/03/21 03:26:08 queue.go:157: database op tx [35000ms]
I 2024/03/21 03:27:06 queue.go:157: database op tx [56778ms]
I 2024/03/21 03:27:37 queue.go:157: database op tx [30099ms]
I 2024/03/21 03:29:44 queue.go:157: database op tx [124567ms]
W 2024/03/21 03:29:53 blocktree.go:552: save block tree [size=148 MB] to [H:\My-Instrument\Software\思源笔记\思源工作空间\temp\blocktree], elapsed [4.26s]
I 2024/03/21 03:30:23 conf.go:565: exiting kernel [force=false, setCurrentWorkspace=true, execInstallPkg=0]
I 2024/03/21 03:30:23 database.go:1249: closed database
I 2024/03/21 03:30:23 conf.go:990: cleared workspace temp
I 2024/03/21 03:30:24 sync.go:712: sync websocket closed
I 2024/03/21 03:30:24 conf.go:635: exited kernel
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you were mentioned.Message ID: ***@***.***>
|
@UFDXD 对了,要重建索引以后再测试,应该有近一半的性能提升。 |
收到,这部分后面再看看是否还有其他方案,其他开发者看见也可以帮我们想想,多谢! |
在现在文档树文件移动文件是否过于慢了
Is there an existing issue for this?
Can the issue be reproduced with the default theme (daylight/midnight)?
Could the issue be due to extensions?
Describe the problem
虽然不是最新版,但也没离几个版本。
就也没多少个文件,就文档树文件普通移动,但是现在就是这么多一个包含子文件的文件移动到其他文件下,甚至同级移动改一个顺序就要花很多时间,已经感觉不能忍受了。反馈看看是不是BUG问题
Expected result
文件普通移动操作不应该花费这么长时间。
Screenshot or screen recording presentation
1
Version environment
Log file
部分日志.txt
More information
No response
The text was updated successfully, but these errors were encountered: