Slick 3.0 reactive/asynchronous 是数据库驱动级别的吗?适用于哪些数据库?
Is Slick 3.0 reactive/asynchronous at the database driver level? For which databases?
Slick 历来依赖 JDBC 驱动程序,这些驱动程序在内部阻止等待套接字 I/O 以响应查询。每个未完成的数据库调用都需要一个线程阻塞在一个套接字上;因此,它并不像 ReactiveMongo、postgresql-async 和 mysql-async 那样真正具有反应性,它们一直是异步的。
Slick 3.0在这方面有什么变化吗?还是我对此感到困惑?
它不是异步到驱动程序级别,但这不是问题。在良好的设置中,等待数据库连接的阻塞线程数应该很小。因此,它们不会消耗大量资源。 Slick 管理它们并将阻塞线程安排到它们自己的线程池中,因此它们不会妨碍计算。 "native" 异步驱动程序可能会增加一个小的加速,但不是主要的。 Slick 可能会在未来的某个时候支持它。 "reactive" 的主要优势来自于 Slick 已经在 3.0 中实现的功能。可以在此处找到更广泛的解释:https://www.parleys.com/tutorial/reactive-slick-database-programming
Slick 历来依赖 JDBC 驱动程序,这些驱动程序在内部阻止等待套接字 I/O 以响应查询。每个未完成的数据库调用都需要一个线程阻塞在一个套接字上;因此,它并不像 ReactiveMongo、postgresql-async 和 mysql-async 那样真正具有反应性,它们一直是异步的。
Slick 3.0在这方面有什么变化吗?还是我对此感到困惑?
它不是异步到驱动程序级别,但这不是问题。在良好的设置中,等待数据库连接的阻塞线程数应该很小。因此,它们不会消耗大量资源。 Slick 管理它们并将阻塞线程安排到它们自己的线程池中,因此它们不会妨碍计算。 "native" 异步驱动程序可能会增加一个小的加速,但不是主要的。 Slick 可能会在未来的某个时候支持它。 "reactive" 的主要优势来自于 Slick 已经在 3.0 中实现的功能。可以在此处找到更广泛的解释:https://www.parleys.com/tutorial/reactive-slick-database-programming