【发布时间】:2021-07-07 00:06:48
【问题描述】:
我正在实施基于数据库模式的多租户策略。我使用 PostgreSQL for db,HikariCP for pool,它是一个 SpringBoot 应用程序。获得连接后,我需要设置架构,如下面的代码。 (this.ds 是一个光池)
@Override public Connection getConnection() throws SQLException {
Connection connection = this.ds.getConnection();
// reset target schema to...
String schema = determineSchema();
connection.createStatement().execute("SET search_path to "+schema);
return connection;
}
所以我的问题是,假设与tenant1 和tenant2 的两个API 调用几乎同时访问getConnection() 函数并设置模式。我想知道代码将如何处理它?理想情况下,我希望 Hikari 会给他们 2 个不同的连接,并且模式集中不会有冲突。但这是真实的情况吗?我们这里需要读/写锁吗?先谢谢了。
【问题讨论】:
标签: spring-boot concurrency schema multi-tenant hikaricp