【问题标题】:What is the difference between database caching and pooling数据库缓存和池有什么区别
【发布时间】:2020-05-30 02:46:43
【问题描述】:

我最感兴趣的是一般概念,但具体来说,我需要了解这个概念才能学习使用 Swift/Vapor 进行服务器端编程。但即使您不了解 Swift/Vapor,也可以得到一个通用的答案。

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

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

func requestCachedConnection<Database>(to database: DatabaseIdentifier<Database>) -> Future<Database.Connection>

现在我从文档中了解到的(来源:https://docs.vapor.codes/3.0/database-kit/overview/#pools)是:

  • 通过池化,我可以重用现有连接,如果不存在则创建一个新连接
  • 使用池连接不会在事件循环之间共享,以防止出现竞争条件
  • 通常每个事件循环每个数据库有一个池
  • 使用缓存,每个数据库 ID 获得一个连接

现在这有点令人困惑,特别是“通常”一词,我还尝试搜索有关一般概念的更多文档(例如https://en.wikipedia.org/wiki/Connection_pool),看起来“缓存”和“池化”这两个词可以互换使用有时。现在我有兴趣了解差异,因为这对于正确优化我的 Web 服务很有用。但在我看来——至少就我如何理解 Vapor 的文档而言——它们是非常相似的概念,我不明白其中的区别。有人可以澄清一下吗?

【问题讨论】:

    标签: database sqlite vapor


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-28
      • 2011-04-11
      • 2021-04-28
      • 2017-07-15
      • 2015-12-16
      • 2016-02-27
      • 2016-09-10
      • 2011-09-22
      相关资源
      最近更新 更多