- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我做了非常简单的查询
SELECT cmis:objectId, cmis:name, cmis:parentId
FROM cmis:folder
ORDER BY cmis:name
使用 apache cmis Workbench 运行此查询大约需要 15 秒使用 opencmis 运行相同的查询非常快,但完成结果却非常慢 ~ 3 分钟。
session.query( queryStmt, false).iterator().toList()
通过像这样拆分调用
def rs = session.query( queryStmt, false)
def iterator = rs.iterator()
def folders = iterator.toList()
我能够确定 toList()
速度较慢。但我不明白为什么。
我还尝试定义一个操作上下文并将其与查询一起使用。结果相同。这是我的操作上下文
def filter = "cmis:objectId,cmis:name,cmis:parentId"
def context = session.createOperationContext()
context.setCacheEnabled(false)
context.setFilterString(filter)
context.setRenditionFilterString(filter)
知道如何更快地执行此查询吗?
最佳答案
默认情况下,CMIS Workbench 仅获取前 100 个点击。根据存储库的不同,这通常很快。增加“最大点击数”以获得更多。
要复制 CMIS Workbench 正在执行的操作,请尝试以下代码片段:
String queryStmt = "SELECT cmis:objectId, cmis:name, cmis:parentId FROM cmis:folder ORDER BY cmis:name";
int maxHits = 100;
OperationContext context = session.createOperationContext();
context.setMaxItemsPerPage(maxHits);
session.query(queryStmt, false, context).getPage(maxHits).iterator().toList();
toList
迭代查询的所有结果。默认的OperationContext定义了100个命中的批处理。也就是说,在底层 OpenCMIS 将对存储库进行多次(可能是多次)查询调用,请求前 100 个命中、第二个 100 个命中、第三个 100 个命中,...
如果您总共有 100 万次点击,最终会产生相当多的后端调用。
尝试使用 context.setMaxItemsPerPage(1000000)
增加批量大小。如果您有很多点击并希望将它们全部作为列表,这通常会更快。
当您在循环中使用它们并且不需要一次全部使用它们时,小批量会更好。它还允许处理不适合客户端内存的结果集。
还有另一个方面:摆脱 ORDER BY
并稍后在 Java 中对列表进行排序。不管怎样,你的内存中已经有结果集了。如果存储库在 cmis:name
上没有索引,则可能会减慢服务器端的查询处理速度。
关于java - OpenCmis 查询比 apache cmis Workbench 慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43501186/
一个 Remote CMIS repository包含许多文件夹/文件。 我在写 a software使这些文件夹/文件的本地副本保持同步。 在第一次运行时,我只是递归下载所有内容。 在以后的运行中,
我需要更新 alfresco 上的 ReadOnly 属性,例如“cm:creator 或 cm:created”,以便创建一个 Java 支持的网页脚本: public void onUpdateP
稍微介绍一下,我正在尝试创建一个将启动 cmi5 类(class)的 LMS。但是,我很难理解 cmi5 包和其他一些术语。在此我想问/澄清几点,以明确。 我看过 TinCan/xAPI 示例类(cl
这个问题是 Alfresco Community 中问题的抄袭. 在我们公司,我们使用 Alfresco,其中添加了新的 TestModel 和 ListDate 属性。 接下来我们使用 CMIS A
我正在使用 Apache Chemistry 和 CXF 在 JAVA 中开发通用 CMIS 1.1 客户端应用程序。 目前,我正在努力解决此处描述的 CMIS 的保持功能: http://docs.
我正在使用以下代码通过 CMIS API 在文档服务上创建文件: zipMapFile.put(PropertyIds.OBJECT_TYPE_ID, "sap:versioned"); zipMap
我正在尝试使用路径从 alfresco 获取所有文档 SELECT cmis:path,cmis:objectId,cmis:allowedChildObjectTypeIds FROM cmis:f
我需要特定文件夹路径下的所有文件 我的查询是: query = "SELECT cmis:name FROM cmis:document WHERE CONTAINS('PATH:\"/app:Com
Google 和 Box 等云存储服务为所有文件提供了一个可共享的 url 端点。类似于 http://drive.google.com/my-object-id . 是否有跨大多数服务器实现的默认
基本复制CMIS方法仅复制文档的第一个版本。 如何复制所有版本,因为迭代版本进行逐一复制会引发重复文档异常 最佳答案 通过 CMIS 复制文档的行为与在 Alfresco Share 中复制文档的行为
我使用 Java Servlet 创建了自定义 Web 应用程序,并使用 CMIS 连接到 Alfresco 存储库。 现在我的要求是构建一个Library Navigator;为此,我必须使用 在
我已经使用 Servlet 创建了一个外部 Web 应用程序,该应用程序连接到 alfresco 存储库。 我还可以将文档上传到存储库,从存储库下载文档。 现在我的要求是,我必须根据用户角色删除文档。
我使用 Alfresco 和 OpenCMIS,想要获取文件夹和文档。 查询: SELECT D.cmis:objectId, F.cmis:objectId FROM cmis:folder AS
您能否告诉我是否有可能创建父文档是另一个文档的可能性。 ObjectId parentId = session.createObjectId(someDocumentStringId); sessio
我正在尝试更新 cmis-alfresco 中的文档(具有版本支持)。正常文档更新成功。但是,当我尝试更新具有关系的文档时,出现错误。 newFileProps = new H
我想将特定的文件夹结构从一个 Alfresco 实例复制到另一个实例。 此文件夹结构包含大量应移动的数据,但仅限这一个不超过 30 天的数据。 我想实现一个基于访问者模式的java工具,它可以迭代文件
我尝试使用配置参数连接露天,但出现错误: Config: sessionParameters.put(SessionParameter.USER, "admin"); sessionParam
我刚刚在 Apache OpenCMIS 上注意到了这个项目: https://svn.apache.org/repos/asf/chemistry/opencmis/trunk/chemistry-
我有一个外部 Web 应用程序,通过它我使用 CMIS 连接到露天存储库。 我已经能够将文档上传到存储库或能够下载 n 查看文档。 现在我的要求是,我必须更新特定文档属性。 任何人都可以提供使用 CM
我已使用 Java Servlet 创建了自定义 Web 应用程序,并使用 CMIS 连接到 Alfresco 存储库。 我还使用 Activity 创建了一个简单的工作流程。 现在我的要求是,在查看
我是一名优秀的程序员,十分优秀!