![]() |
1
7
看来我的理解错了。 假设平滑线程池大小为1。我们有一个事务1,它运行两个查询a和B。 首先,Slick打开连接1,使用占用线程池中的单个线程运行查询a。同时,事务2排队,只有一个查询C要运行。由于所有线程都被占用,查询C被放入队列。 同时,查询A完成,一些Scala代码异步运行以处理结果(使用另一个线程池)。加工螺纹返回到光滑螺纹池。但由于事务1仍在运行,数据库连接1仍在使用中。 所以,当运行查询C时,Slick发现没有可用的连接,因此创建了一个新的数据库连接2来运行它。这正是文档中提到的情况——我们有2个打开的连接,而线程池大小只有1。 这就是为什么默认连接池设置如下所示:
因此,如果您在一个事务中不运行多个查询,那么Slick永远不会打开超过线程数的连接。 |
![]() |
lennsa · 光滑的纹理加载器。getTexture无法解析为类型 7 年前 |
![]() |
ps0604 · 避免在Slick 3中使用MySQL显式声明。x个 7 年前 |
![]() |
ps0604 · 三个表的左外连接,有两个条件,每个条件都不工作 7 年前 |
![]() |
Benjamin · 错误:值<>不是的成员。滑溜的 7 年前 |
![]() |
Felipe · Play+Scala测试Slick数据库 7 年前 |