首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将现有应用程序从PostgreSQL迁移到YugabyteDB时需要重新启动读取

将现有应用程序从PostgreSQL迁移到YugabyteDB时需要重新启动读取
EN

Stack Overflow用户
提问于 2022-04-11 07:02:23
回答 1查看 69关注 0票数 0

[用户在YugabyteDB社区板上发布的问题]

我正在尝试使用带有3个节点的集群将现有的应用程序从PostgreSQL迁移到YugabyteDB。烟雾测试运行良好,但当我使用多个并发用户时,立即收到以下错误:

代码语言:javascript
复制
com.yugabyte.util.PSQLException: ERROR: Query error: Restart read required at: { read: { physical: 1648067607419747 } local_limit: { physical: 1648067607419747 } global_limit: <min> in_txn_limit: <max> serial_no: 0 }
at com.yugabyte.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2675)
at com.yugabyte.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2365)
at com.yugabyte.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:355)
at com.yugabyte.jdbc.PgStatement.executeInternal(PgStatement.java:490)
at com.yugabyte.jdbc.PgStatement.execute(PgStatement.java:408)
at com.yugabyte.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:162)
at com.yugabyte.jdbc.PgPreparedStatement.execute(PgPreparedStatement.java:151)
at com.zaxxer.hikari.pool.ProxyPreparedStatement.execute(ProxyPreparedStatement.java:44)
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.execute(HikariProxyPreparedStatement.java)
at org.jooq.tools.jdbc.DefaultPreparedStatement.execute(DefaultPreparedStatement.java:219)
at org.jooq.impl.Tools.executeStatementAndGetFirstResultSet(Tools.java:4354)
at org.jooq.impl.AbstractResultQuery.execute(AbstractResultQuery.java:230)
at org.jooq.impl.AbstractQuery.execute(AbstractQuery.java:340)
at org.jooq.impl.AbstractResultQuery.fetch(AbstractResultQuery.java:284)
at org.jooq.impl.SelectImpl.fetch(SelectImpl.java:2843)
at org.jooq.impl.DefaultDSLContext.fetch(DefaultDSLContext.java:4749)

我使用的版本是11.2-YB-2.13.0.1-b0

它是一个使用Spring和JOOQ实现的临床数据仓库。该应用程序公开一个REST以在数据库中存储和查询临床文档。我尝试执行一个JMeter测试计划,在固定时间(5分钟)内使用10个并发用户创建和查询随机文档。

到目前为止,我们使用的是PostgreSQL,它似乎已经将提交作为默认的隔离级别。因此,我假设必须在应用程序级别更改隔离,因为Spring默认使用数据库定义的隔离。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-11 07:02:23

请注意,PostgreSQL和YugabyteDB的默认隔离级别并不相同。只有当g标志yb_enable_read_committed_isolation设置为true时,才支持读提交隔离。默认情况下,此g标志为false,在本例中,Yugabyte事务层的读提交隔离级别回到了更严格的快照隔离(在这种情况下,YSQL的读取、提交和读取未提交也会使用快照隔离)。

您能更改YugabyteDB的隔离级别吗?请参阅此文档链接以获得更多详细信息- https://docs.yugabyte.com/latest/explore/transactions/isolation-levels/

在改变之后,它应该会运行得更好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71823816

复制
相关文章

相似问题

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