反链面板计算逻辑与性能问题

本贴最后更新于 1218 天前,其中的信息可能已经物是人非

打开软件,不开反链面板,打开一个有上百个反链的文档后,使用正常,此时后台没有在计算反链。

然后打开一下反链面板,之后马上关上,过一会儿再打开一个有上百个反链的文档,理论上来说,这时候我没有打开反链面板,后台应该不会计算这个文档的反链,然而事实上,此时后台确实在计算反链,CPU 占用一直在 20% 以上,所有和引用块相关的功能都不能用,等到 CPU 占用降低到 5% 以下时,我打开反链面板,发现 200 个反链秒出现,说明当时后台确实在计算反链,这是不符合预期的。

此外另一个问题(与上面的问题无关),我开着反链面板,然后我依次点开 10 个文档,后台会依次计算这 10 个文档的反链,好像有 10 个计算任务的队列,得等这 10 个任务全部出队之后才会释放资源,那么,如果我在两个有几百个反链的文档之间反复点击,一下打开这个文档,一下打开另一个文档,那么这个队列将会入队一堆计算任务,假设我在两个文档之间反复点击 10 次,将会入队 20 个计算任务,假设计算两个文档的反链分别都需要 10 秒钟,那么将有 200 秒钟的时间资源被占用,这 200 秒钟 CPU 占用很高,且所有的引用块功能都用不了,处于“假死”状态,这是灾难级的性能问题,而且事实上,这 20 个任务的队列里面,只有最后 1 个任务是有用的,前 19 个任务都是没有意义的,在我打开另一个文档后,当前文档的反链计算任务完全可以直接终止。

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    24726 引用 • 101548 回帖
1 操作
fangly 在 2021-11-23 11:04:23 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 1 回复
  • 其他回帖
  • fangly

    现在一回车就显示:

    image.png

    重建索引后,在文档中再回车一下,又显示状态异常,再重建索引,再回车,又显示状态异常,一直循环

    temp113.gif

    试了下,在某些文档中回车没问题,在某些文档中回车一直会显示状态异常

    再试了下,关闭“启动时优先使用已有数据库”,重新打开思源,原先回车会显示状态异常的文档,回车后不会显示状态异常,我猜是数据库有点问题

    相关日志:

    log.zip

    貌似发现问题所在了:我使用 alt+b 打开文档 A 的反向链接后(该文档的反向链接内容较多,在反链内容较少的文档中试了下貌似不能复现),在其他文档或者文档 A 中回车,会出现这种情况。估计是对 alt+b 的反链面板的处理有些问题,我看 alt+b 的反链面板和 alt+7 的反链面板并不是同步的,alt+7 的已经加载出来了,打开 alt+b 仍然需要一定时间加载,看起来两者的数据并不共享

    但也不是必复现,又试了下复现不出来,不知道还有什么先决条件,但应该和 alt+b 的反链面板有很大的关系

    1 回复
    5 操作
    fangly 在 2021-12-02 15:56:05 更新了该回帖
    fangly 在 2021-12-02 15:54:29 更新了该回帖
    fangly 在 2021-12-02 15:51:13 更新了该回帖
    fangly 在 2021-12-02 15:50:00 更新了该回帖 fangly 在 2021-12-02 15:47:26 更新了该回帖
  • fangly

    alpha2 事务实现改了之后我觉得舒服了很多,但反链面板的性能上我体验下来感觉还是有提升空间

    200 个反链的文档第一次加载的时候比 alpha1 快一些,但还是要差不多 8 秒钟才能加载出来,第一次加载时候的时间不知道能否再压榨得短一些 😂

    第一次 8 秒钟加载出来后,打开别的文档,再返回来,反链面板能秒出现,这部分应该是 alpha2 新优化的,这个非常舒服,我猜是检查了“数据是否变动”,没变动就不请求了?

    但是过几分钟后再打开这个有 200 个反链的文档又要 8 秒钟加载,这个几分钟我也不清楚是多久,有时候有的文档上百个反链几分钟后仍然秒加载,但有时候有的文档几分钟后又要好久才能加载(都没有修改过,没有数据变动),不知道这里是不是有 bug?

    1 回复
  • fangly via Android

    我没太理解,好像说的不是一个问题 😂

    帖子中的第二个问题可能和“数据是否变动”有关

    但第一个问题和这个没关系吧,无论“数据是否变动”,都没有请求的意义吧,可以看下面这个录屏,我反链面板都关了,打开一个有 199 个反链的文档后,CPU 开始高占用,开始计算反链,这里的计算请求没有必要吧:

    现在时不时地因为后台计算导致引用块悬浮窗没反应,引用块搜索没反应,要等老半天,而且出现频率很高,有点严重影响使用了,相比 1.4.6 以前,体验流畅度差了不少 😭

    1 回复
    3 操作
    fangly 在 2021-11-23 14:39:26 更新了该回帖
    fangly 在 2021-11-23 14:36:43 更新了该回帖
    fangly 在 2021-11-23 14:35:00 更新了该回帖
  • 查看全部回帖

推荐标签 标签

  • 友情链接

    确认过眼神后的灵魂连接,站在链在!

    24 引用 • 373 回帖 • 1 关注
  • H2

    H2 是一个开源的嵌入式数据库引擎,采用 Java 语言编写,不受平台的限制,同时 H2 提供了一个十分方便的 web 控制台用于操作和管理数据库内容。H2 还提供兼容模式,可以兼容一些主流的数据库,因此采用 H2 作为开发期的数据库非常方便。

    11 引用 • 54 回帖 • 662 关注
  • Notion

    Notion - The all-in-one workspace for your notes, tasks, wikis, and databases.

    10 引用 • 76 回帖 • 1 关注
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    493 引用 • 928 回帖
  • Log4j

    Log4j 是 Apache 开源的一款使用广泛的 Java 日志组件。

    20 引用 • 18 回帖 • 33 关注
  • 工具

    子曰:“工欲善其事,必先利其器。”

    295 引用 • 750 回帖
  • Sillot

    Insights(注意当前设置 master 为默认分支)

    汐洛彖夲肜矩阵(Sillot T☳Converbenk Matrix),致力于服务智慧新彖乄,具有彖乄驱动、极致优雅、开发者友好的特点。其中汐洛绞架(Sillot-Gibbet)基于自思源笔记(siyuan-note),前身是思源笔记汐洛版(更早是思源笔记汐洛分支),是智慧新录乄终端(多端融合,移动端优先)。

    主仓库地址:Hi-Windom/Sillot

    文档地址:sillot.db.sc.cn

    注意事项:

    1. ⚠️ 汐洛仍在早期开发阶段,尚不稳定
    2. ⚠️ 汐洛并非面向普通用户设计,使用前请了解风险
    3. ⚠️ 汐洛绞架基于思源笔记,开发者尽最大努力与思源笔记保持兼容,但无法实现 100% 兼容
    29 引用 • 25 回帖 • 105 关注
  • danl
    161 关注
  • 浅吟主题

    Jeffrey Chen 制作的思源笔记主题,项目仓库:https://github.com/TCOTC/Whisper

    1 引用 • 28 回帖
  • Oracle

    Oracle(甲骨文)公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989 年正式进入中国市场。2013 年,甲骨文已超越 IBM,成为继 Microsoft 后全球第二大软件公司。

    107 引用 • 127 回帖 • 359 关注
  • GraphQL

    GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。

    4 引用 • 3 回帖
  • QQ

    1999 年 2 月腾讯正式推出“腾讯 QQ”,在线用户由 1999 年的 2 人(马化腾和张志东)到现在已经发展到上亿用户了,在线人数超过一亿,是目前使用最广泛的聊天软件之一。

    45 引用 • 557 回帖 • 2 关注
  • jsDelivr

    jsDelivr 是一个开源的 CDN 服务,可为 npm 包、GitHub 仓库提供免费、快速并且可靠的全球 CDN 加速服务。

    5 引用 • 31 回帖 • 94 关注
  • Follow
    4 引用 • 12 回帖 • 7 关注
  • RemNote
    2 引用 • 16 回帖 • 9 关注
  • 安装

    你若安好,便是晴天。

    132 引用 • 1184 回帖
  • CodeMirror
    1 引用 • 2 回帖 • 154 关注
  • iOS

    iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。

    87 引用 • 139 回帖
  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    729 引用 • 1278 回帖
  • Hprose

    Hprose 是一款先进的轻量级、跨语言、跨平台、无侵入式、高性能动态远程对象调用引擎库。它不仅简单易用,而且功能强大。你无需专门学习,只需看上几眼,就能用它轻松构建分布式应用系统。

    9 引用 • 17 回帖 • 616 关注
  • DevOps

    DevOps(Development 和 Operations 的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

    57 引用 • 25 回帖 • 7 关注
  • 30Seconds

    📙 前端知识精选集,包含 HTML、CSS、JavaScript、React、Node、安全等方面,每天仅需 30 秒。

    • 精选常见面试题,帮助您准备下一次面试
    • 精选常见交互,帮助您拥有简洁酷炫的站点
    • 精选有用的 React 片段,帮助你获取最佳实践
    • 精选常见代码集,帮助您提高打码效率
    • 整理前端界的最新资讯,邀您一同探索新世界
    488 引用 • 384 回帖 • 4 关注
  • SMTP

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。

    4 引用 • 18 回帖 • 636 关注
  • Quicker

    Quicker 您的指尖工具箱!操作更少,收获更多!

    36 引用 • 155 回帖
  • OneNote
    1 引用 • 3 回帖 • 1 关注
  • 开源中国

    开源中国是目前中国最大的开源技术社区。传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现、使用、并交流开源技术的平台。目前开源中国社区已收录超过两万款开源软件。

    7 引用 • 86 回帖
  • 酷鸟浏览器

    安全 · 稳定 · 快速
    为跨境从业人员提供专业的跨境浏览器

    3 引用 • 59 回帖 • 45 关注