当前位置: 首页 > 知识库问答 >
问题:

Cassandra Sync和Async,哪一个更快地返回结果集?

柴辰阳
2023-03-14

我正在对卡桑德拉做一些测试。案件描述如下:

  • 先决条件:1 Cassandra Server,一个具有复杂主键(username, id)的表,选择查询是这样的:从table_name选择*,其中username='abc';结果集是16行的集合。
  • 案例1:在DevCenter上执行查询,完成需要1676 ms
  • 案例2:使用session.execute(语句)在Java驱动程序上同步执行查询,完成查询需要441 ms
  • 案例3:使用https://docs.datastax.com/en/developer/java-driver/3.3/manual/async/中介绍的异步解决方案在Java驱动程序上执行查询,完成需要1121 ms

有没有人告诉我同步/异步更快的情况?

共有2个答案

卓嘉良
2023-03-14

只对一个查询使用异步方法是没有价值的,但是它会为大量查询提供性能提升,因为您的代码不会等待前一个查询来执行下一个查询。

蒋航
2023-03-14

我想说的是,sync/async方法不是更快或更慢,而是更多地关注客户端的资源利用率。Async-对于长时间运行的查询,没有长时间阻塞。同步阻塞,但可以用于快速查询。异步方法可能需要使用其他编程技术(未来、回调..),在某些编程语言中,它在本机上得到了比其他语言更好的支持。

 类似资料:
  • 问题内容: 为了熟悉,我在Chrome中尝试了以下代码: 但不保存结果(字符串);而是持有一个需要再次等待的。这段代码确实给了我响应字符串: 如何使用await从函数返回实际的响应字符串? 问题答案: 要么 要么 这只是编写相同逻辑的另一种方法。

  • 问题内容: 我正在尝试创建一种方法,从中可以查询数据库并检索整个表。 目前,如果我使用这些数据只是正常工作 中 的方法。但是,我希望该方法返回结果。 我正在了解当前代码。 我该如何实现? 问题答案: 您永远不要通过公共方法来回避。这很容易导致资源泄漏,因为您不得不保持语句和连接打开。关闭它们将隐式关闭结果集。但是,将它们保持打开状态将导致它们悬而未决,并且当它们打开过多时,将导致数据库用尽资源。

  • 问题内容: 我有一个数据库,正在运行以下查询: 上面的查询一次返回两个结果集,我不能分别触发两个查询。如何在Java类中一次处理两个结果集? 问题答案: 正确的代码来处理JDBC语句返回的多个: 重要位: 并返回以表明语句的结果只是一个数字,而不是一个。 您需要检查以了解是否还有更多结果。 确保关闭结果集或使用

  • 问题内容: 我正在编写一种算法,在其中寻找一对值,这些值加在一起会导致我正在寻找另一个值。 我发现使用a 可以从O(n²)加速我的算法。后来我意识到我并没有真正使用我包含的值,因此就足够了。 我在Google上进行了幂搜索,但是在我的问题的标题中找不到这些方法的渐近运行时间的任何信息。 您能指出我应该在哪里寻找这些信息吗? 问题答案: 后来我意识到我并没有真正使用我包含的值,因此就足够了。 不仅是

  • 问题内容: 我有这种简单的查询,它返回给定id的非空整数字段: 问题是,如果找不到ID,则结果集为空。我需要查询始终返回一个值,即使没有结果也是如此。 我有这个东西工作,但我不喜欢它,因为它运行相同子查询的2倍: 如果该行存在,则返回field1,否则返回0。有什么改进的方法吗? 谢谢! 编辑以下一些评论和答案 :是的,它必须在 单个查询语句中, 并且我不能使用count技巧,因为 我只需要返回1

  • 问题内容: 我正在使用JDBC来实现非常简单的数据库连接。 我已经创建了连接/语句并执行了查询。我在调试器中检查语句的查询对象,以确认它正在发送正确的查询。然后,我再次检查了数据库中的查询(直接从调试器复制),以确保其返回数据。但是,返回的结果集在.next()上给出false 这里有我遗漏的常见陷阱吗? 还有myDB类(一个简单的包装程序,使我可以将连接/语句代码放入任何项目中) 编辑:根据建议