首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Dropwizard @UnitOfWork:大量设置的自动提交=1/0;在没有要运行的事务的情况下提交调用

Dropwizard @UnitOfWork:大量设置的自动提交=1/0;在没有要运行的事务的情况下提交调用
EN

Stack Overflow用户
提问于 2019-08-28 11:53:41
回答 1查看 121关注 0票数 0

My (https://github.com/atulsm/config-service)是一个简单的配置服务,它从db存储/检索配置键/vals,由以下内容组成。

  1. Dropwizard
  2. Hibernate
  3. Hibernate EHCache
  4. Mysql

我启用了Mysql一般日志,当我在运行一个简单的get()的负载试验时查看它,这是我在日志中看到的唯一一件事,它填充了整个日志。

2019-08-28T11:36:12.003158Z295查询集autocommit=0

2019-08-28T11:36:12.003318Z 295查询提交

2019-08-28T11:36:12.003425Z295查询集autocommit=1

2019-08-28T11:36:12.003834Z295查询集autocommit=0

2019-08-28T11:36:12.004005Z 295查询提交

2019-08-28T11:36:12.004105Z295查询集autocommit=1

2019-08-28T11:36:12.004481Z295查询集autocommit=0

2019-08-28T11:36:12.004646Z295查询提交

2019-08-28T11:36:12.004762Z295查询集autocommit=1

问题:

  1. 由于没有执行查询,而且数据是从第二级缓存中提供的,我的期望是不会与Mysql进行交互。
  2. 知道为什么会这样吗?有没有办法让它失效。
  3. 我的QPS目前是800。我希望,如果我可以禁用这些提交调用,它将大大改善。

编辑

问题似乎在于@UnitOfWork。我删除了整个DAO调用,并将其替换为一个虚拟对象,但我仍然看到DB操作!

代码语言:javascript
运行
复制
Bucket dummy = new Bucket();
@GET
@Produces(MediaType.APPLICATION_JSON)
@Timed
@UnitOfWork
public Bucket getBucket(@PathParam("bucketName") String bucketName){
    //return BucketService.INSTANCE.getBucket(bucketName);
    return dummy;
}
EN

回答 1

Stack Overflow用户

发布于 2019-08-29 05:29:08

通过禁用使用@UnitOfWork( transaction = false)的get操作中的事务来解决这一问题。

代码语言:javascript
运行
复制
@GET
@Produces(MediaType.APPLICATION_JSON)
@Timed
@UnitOfWork(transactional = false)
public Bucket getBucket(@PathParam("bucketName") String bucketName){
    return BucketService.INSTANCE.getBucket(bucketName);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57691810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档