Database 数据库缓存和池有什么区别

Database 数据库缓存和池有什么区别,database,sqlite,vapor,Database,Sqlite,Vapor,我主要对一般概念感兴趣,但具体来说,我需要理解这个概念,以便学习使用Swift/Vapor进行服务器端编程。但即使你不知道Swift/Vapor,也可以得到一个通用的答案 我发现为了连接到数据库,我可以使用以下两种方法: func requestPooledConnection<Database>(to dbid: DatabaseIdentifier<Database>) -> Future<Database.Connection> func req

我主要对一般概念感兴趣,但具体来说,我需要理解这个概念,以便学习使用Swift/Vapor进行服务器端编程。但即使你不知道Swift/Vapor,也可以得到一个通用的答案

我发现为了连接到数据库,我可以使用以下两种方法:

func requestPooledConnection<Database>(to dbid: DatabaseIdentifier<Database>) -> Future<Database.Connection>

func requestCachedConnection<Database>(to database: DatabaseIdentifier<Database>) -> Future<Database.Connection>
现在,我从文档来源了解到:是:

通过池,我可以重用现有连接,如果不存在连接,也可以创建新连接 使用池时,事件循环之间不共享连接,以防止出现争用情况 每个事件循环中,每个数据库通常有一个池 通过缓存,每个数据库ID可以获得一个连接
现在这有点令人困惑,特别是术语“通常”,我还尝试搜索更多关于一般概念的文档,例如,“缓存”和“池”看起来有时可以互换使用。现在,我对理解差异感兴趣,因为这对于正确优化我的web服务非常有用。但在我看来——至少就我如何理解Vapor的文档而言——它们是非常相似的概念,我不明白其中的区别。有人能澄清一下吗?

缓存是暂时保存数据库SQL,而池是保持与数据库的连接

缓存是暂时保存数据库SQL,池是保持与数据库的连接