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

Cassandra java驱动程序警告

嵇丰
2023-03-14

查询从something_data中选择username作为col6、性别作为col1、last_name作为col2、email作为col3、first_name作为col4、something_uuid作为col5、group_email作为col7、deleted作为col8、puars作为col9,其中username=?;在/xx.yy.91.205:9042上未准备,请在重试执行之前准备。多次看到这条消息是很好的,但是经常看到它可能是性能问题的根源。

查询是使用mapper.get(“username”)-->com.datastax.driver.mapping.mapper进行的

这就是我在构造函数中初始化映射器的方法。从那以后,我就不再使用mappingManager了。

this.mapper = mappingManager.mapper(MyPojo.class);

共有1个答案

於英朗
2023-03-14

看起来您并没有将MappingManager的实例保存很长时间,而是在每次获取数据时重新创建它。这是一个很大的错误--MappingManager应该与clustersession对象具有相同的生存时间。

映射管理器负责从类中提取字段注释,生成查询,准备查询,然后执行。准备好的查询缓存在mapping manager中,因此当它被销毁时,缓存将丢失,当您试图再次执行get时,该过程将重复,从而导致大量的开销--需要再次准备查询,这是大量的网络开销,因此实际上您的查询比使用未准备好的查询慢。

只需将MappingManager实例移动到某个静态块,这样它就可以重用于所有映射器操作。

 类似资料:
  • 用于cassandra的Datastax Java驱动程序(cassandra-driver-core 2.0.2)支持PreparedStatements以及QueryBuilder API。使用其中一种比另一种有什么特别的优势吗?缺点? 文档:http://www.datastax.com/documentation/developer/java-driver/2.0/common/drive

  • 问题内容: 我正在尝试使用switch来发出警报并执行操作,但是我遇到了错误。 现在真正的问题是当我将下面的代码放入try中时,catch可以正常工作。我的意思是它可以完美地处理警报。但是当我不经尝试使用相同代码时,捕获代码将引发以下异常 请在下面找到错误 问题答案: 这个想法是当您处理警报时,您必须先检查警报是否存在。我会使用这种方法: 在这里您可以获得详细信息,也不要忘记逐步调试以了解出现/不

  • 我试图通过网络驱动程序在“http://www.kayak.co.in/?ispredir=true”中选择入住和退房时间。无法选择任何日期。请帮帮我。

  • 在Eclipse BIRT数据资源管理器中为查询生成器添加JDBC数据库连接: 选择“查询生成器的JDBC数据库连接” 就这样。我可以使用此数据源来使用数据集。 下一个。 我希望使用更灵活的“JDBC数据源”,而不是以前成功使用的“查询生成器的JDBC数据库连接”。哦,我看到MySQL没有驱动程序类-Derby和Sample只有两个默认条目。 似乎JDBC驱动程序的有效注册没有添加(或注册?)司机

  • 对于ex,当我的chrome放在Compand提示符中时,会给出路径-/applications/google\chrome.app system.setproperty(“webdriver.chrome.driver”,“/applications/google/chrome.app”);WebDriver driver=new ChromeDriver(); driver.get(“http

  • 我正在处理Spring Boot项目,突然遇到应用程序无法加载MySQL jdbc的问题。(我编译了一次这个项目,没有改变任何东西) 这是我的pom.xml: 这是我的application.properties: Logcat: MySQL数据库最初是使用hibernate创建的。这些配置工作正常,但我不确定这里的真正问题是什么 编辑:我删除了。m2文件夹并从一开始安装所有依赖项。