专栏首页dylanliu资源的有限性与任务的复杂性之间的矛盾

资源的有限性与任务的复杂性之间的矛盾

看了一篇文章How to Manage Connections Efficiently in Postgres, or Any Database, 文章讨论了如何管理Postgres数据库连接,列举了几种方式:

  1. 每个请求一个连接
  2. 连接复用
    1. 连接池
    2. 连接池管理工具

连接池作者提出了三种分别是Session pooling,Transaction pooling,Statement pooling,我们一般常用的是事务连接池,最开始是每个工程自行创建维护与数据库的连接池,但是在工程部署多了之后,部署工程数N,每个工程连接池的连接数量M,所需的总连接数 N*M 会超过数据库所允许的最大连接数,这种情况下我们需要一个总的连接池代理,工程不再直接连接到数据库中,由连接池管理工具来承接所有的连接请求,再请求到数据库中。

其实很多工具的出现都是由于资源的有限性与任务的复杂性之间的矛盾引起的,如果连接是无限的,那我们不需要讨论使用连接池技术,每个连接进来保持一个数据库连接就可以了,还有著名的 C10K 问题。我们使用复杂度更低的算法,优化各种场景下的参数,本质上都是由于计算资源的有限性导致的。

对于这个矛盾我们可用的工具有:

  • 算法优化
  • 异步
  • 就近原则(皓哥提到过的边缘计算)
  • 池(对象池,连接池等)
  • 局部性原理(缓存,JIT等)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Vagrant 安装centos7

    总的来说还是很好用的,两三个命令就可以启动一台虚拟机,比用virtualbox启动快多了,不过也存在一个问题,box很不好找,找到之后不好下。

    Dylan Liu
  • js 闭包

    看js闭包,有人出了这个问题, http://www.jb5...

    Dylan Liu
  • Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVersion' has value '1.8', but '1.7'

    Error: Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVersion'...

    Dylan Liu
  • 走进JavaWeb技术世界3:JDBC的进化与连接池技术

    本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看

    Java技术江湖
  • 牛逼哄哄的数据库连接池,底层原理是个啥?

    这次我们采取技术演进的方式来谈谈数据库连接池的技术出现过程及其原理,以及当下最流行的开源数据库连接池jar包。

    Java技术栈
  • JDBC秒变C3P0连接池——再加连接解耦

          ①加载数据库驱动程序(Class.forName("数据库驱动类");)       ②连接数据库(Connection con  = Driver...

    泰斗贤若如
  • 数据库连接池极简教程

    一,常规数据库连接 ? 常规数据库连接一般由以下六个步骤构成: 装载数据库驱动程序; 建立数据库连接; 创建数据库操作对象 访问数据库,执行sql语句; 处理返...

    架构师小秘圈
  • 用了这么久的数据库连接池,你知道原理吗?

    原文 | blog.csdn.net/shuaihj/article/details/14223015

    用户1516716
  • 用了这么久的数据库连接池,你知道原理吗?

    这次我们采取技术演进的方式来谈谈数据库连接池的技术出现过程及其原理,以及当下最流行的开源数据库连接池jar包。

    好好学java
  • JDBC(九)数据库连接池

    ①、普通的JDBC数据库连接使用 DriverManager 来获取,每次向数据库建立连接的时候都要将 Connection 加载到内存中,再验证用户名和密码(...

    leeqico

扫码关注云+社区

领取腾讯云代金券