- 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/
我必须使用以下路径在露天创建文件夹: COMPANY_HOME/测试/年/月/日/文档 目前我可以创建一个像这样的文件夹: Map newFolderProps = new HashMap<>();
我正在使用 Apache Chemistry API 创建客户端 session 。 SessionFactory 允许创建 session 但不提供关闭 session 的方法。关闭创建的 sess
已结束。此问题正在寻求书籍、工具、软件库等的推荐。不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便用
在 Alfresco 中,我有以下结构/Company Home/A 和/Company Home/B 一些用户主文件夹设置为 A,其他设置为 B。 问题:我发现为了通过 OpenCMIS 从我的应用
我正在尝试创建一个脚本,使用 opencmis 库(python)将文档上传到 Alfresco 存储库中。上传实际文档没问题,但我正在绞尽脑汁思考如何向文档添加标签。 我的想法是: props =
我刚刚在 Apache OpenCMIS 上注意到了这个项目: https://svn.apache.org/repos/asf/chemistry/opencmis/trunk/chemistry-
我正在尝试通过 OpenCMIS 更新 alfresco 文件的内容类型。 CMIS 工作台在类型窗口中显示类型,只有禁用开关“策略可控”。它的本地名称是document,queryname是pref
我正在尝试使用 Apache Chemistry OpenCMIS 将文件上传到我的 Alfresco 存储库。文件已创建且属性正确但没有内容,文件为 0 字节。我已经仔细检查过,源文件没有任何问题。
我想获取所有具有 aspect A 或 aspect B 的文件。 这是我的查询: SELECT * FROM SELECT * FROM ` 我知道 opencmis 中不存在 UNION,那么有
我正在尝试按照 Apache 中的说明设置 OpenCMIS InMemory 存储库但在运行maven命令mvn clean install -Dmaven.test.skip=true时不断收到以
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我正在使用 chemistry opencmis 0.13.0 版连接到 alfresco 存储库。下面是代码片段 Map parameter = new HashMap(); //
我正在使用 Apache Chemistry OpenCMIS java 库。给定一个 QueryResult (例如,我通过搜索元数据属性找到了一个文档或一堆文档),这是检索 Document 对象
我正在尝试添加 OpenCmis客户端到 Web 应用程序,该应用程序已经有其他客户端使用 CXF。它将部署在Weblogic上。我有基于 http://chemistry.apache.org/ja
我想使用路径从露天下载文档,但我的内容长度为空,并且可以在浏览器中下载图像,但没有显示任何内容。谁能指出我做错了什么。 import java.io.BufferedInputStream;
我正在写 OpenCMIS基于应用程序,它从 Alfresco 3.3 中提取一些数据。 它适用于标准 CMIS 属性,例如 cmis:name或 cmis:contentStreamMimeType
我想知道如何使用 OpenCmis 在 Alfresco 中手动更改文档版本?截至目前,当我更新文档时,每次 alfresco 都会更改版本本身,但我想根据用户输入更改版本,如 1.0、2.0、2.1
本文整理了Java中org.apache.chemistry.opencmis.commons.impl.XMLUtils类的一些代码示例,展示了XMLUtils类的具体用法。这些代码示例主要来源于G
我使用 alfresco-community-4.0.e、OpenCMIS 和 primefaces 作为用户界面构建网络应用程序。 我需要以编程方式在 alfresco 中创建用户。我尝试使用以下代
我做了非常简单的查询 SELECT cmis:objectId, cmis:name, cmis:parentId FROM cmis:folder ORDER BY cmis:name 使用 apa
我是一名优秀的程序员,十分优秀!