【DB吐槽大会】第65期 - PG 没有内置进程池

简介: 大家好,这里是DB吐槽大会,第65期 - PG 没有内置进程池

背景


1、产品的问题点

  • PG 没有内置进程池

2、问题点背后涉及的技术原理

  • PG 是进程模型, 每个新建的连接在PG数据库端都会fork一个新的进程来进行对接.
  • Oracle也是进程模型的数据库, 这种模式较dedicate server模式.

3、这个问题将影响哪些行业以及业务场景

  • 互联网类的高并发业务
  • 大量连接, 小事务, 写操作
  • 高并发短连接

4、会导致什么问题?

  • 性能急剧下降

5、业务上应该如何避免这个坑

  • 可以在业务和数据库中间增加1个连接池, 例如pgbouncer. 使用事务级别的连接池复用模式.

6、业务上避免这个坑牺牲了什么, 会引入什么新的问题

  • 使用连接池时, 业务与数据库的连接会多1跳, 使得SQL的RT可能增加
  • 由于使用事务级别的连接池复用模式, 每个事务结束后, 后端数据库连接可能切换给其他会话使用, 下次发起请求时, 用到的也可能是不一样的后端数据库连接. 因此在业务层无法使用绑定变量等含会话层属性的特性, 无法使用绑定变量可能导致高并发性能下降, CPU使用率上升.

7、数据库未来产品迭代如何修复这个坑

  • 希望支持内核层面的连接池。 类似oracle的shared server模式. 并且要支持会话变量多进程共享的能力, 避免出现无法支持会话变量或属性(例如绑定变量)的功能.
  • 连接池考虑支持多个分组,用户可以自定义使用哪个分组,或者默认根据QUERY的读写特性区分分组,或者根据QUERY的时长区分分组。
  • 例如olap业务可以使用ap分组(这样的话资源之间可以做到很好的隔离) , TP业务使用TP分组. 分组之间的后端连接区分开来, 相互不干扰.
相关文章
|
关系型数据库
PG的wal receiver进程如何启动
PG的wal receiver进程如何启动
366 0
|
SQL 关系型数据库 数据库
PG 数据库锁表问题解决方案:查询pg数据库锁表的语句和进程,通过进程pid杀掉进程进行批量表解锁
PG 数据库锁表问题解决方案:查询pg数据库锁表的语句和进程,通过进程pid杀掉进程进行批量表解锁
1667 0
PG 数据库锁表问题解决方案:查询pg数据库锁表的语句和进程,通过进程pid杀掉进程进行批量表解锁
|
关系型数据库 数据库 PostgreSQL
pg 进程
BGW
380 0
|
关系型数据库 数据库 PostgreSQL
pg 进程
postmaster
250 0
|
关系型数据库
pg 进程
ps -ef | grep postgres
290 0
|
Web App开发 运维 监控
深入探索Linux命令pwdx:揭秘进程工作目录的秘密
`pwdx`命令在Linux中用于显示指定进程的工作目录,基于`/proc`文件系统获取实时信息。简单易用,如`pwdx 1234`显示PID为1234的进程目录。结合`ps`和`pgrep`等命令可扩展使用,如查看所有进程或特定进程(如Firefox)的目录。使用时注意权限、进程ID的有效性和与其他命令的配合。查阅`man pwdx`获取更多帮助。
1129 118
|
Linux 数据库 Perl
【YashanDB 知识库】如何避免 yasdb 进程被 Linux OOM Killer 杀掉
本文来自YashanDB官网,探讨Linux系统中OOM Killer对数据库服务器的影响及解决方法。当内存接近耗尽时,OOM Killer会杀死占用最多内存的进程,这可能导致数据库主进程被误杀。为避免此问题,可采取两种方法:一是在OS层面关闭OOM Killer,通过修改`/etc/sysctl.conf`文件并重启生效;二是豁免数据库进程,由数据库实例用户借助`sudo`权限调整`oom_score_adj`值。这些措施有助于保护数据库进程免受系统内存管理机制的影响。
|
Linux Shell
Linux 进程前台后台切换与作业控制
进程前台/后台切换及作业控制简介: 在 Shell 中,启动的程序默认为前台进程,会占用终端直到执行完毕。例如,执行 `./shella.sh` 时,终端会被占用。为避免不便,可将命令放到后台运行,如 `./shella.sh &`,此时终端命令行立即返回,可继续输入其他命令。 常用作业控制命令: - `fg %1`:将后台作业切换到前台。 - `Ctrl + Z`:暂停前台作业并放到后台。 - `bg %1`:让暂停的后台作业继续执行。 - `kill %1`:终止后台作业。 优先级调整:
1649 5
|
运维 关系型数据库 MySQL
掌握taskset:优化你的Linux进程,提升系统性能
在多核处理器成为现代计算标准的今天,运维人员和性能调优人员面临着如何有效利用这些处理能力的挑战。优化进程运行的位置不仅可以提高性能,还能更好地管理和分配系统资源。 其中,taskset命令是一个强大的工具,它允许管理员将进程绑定到特定的CPU核心,减少上下文切换的开销,从而提升整体效率。
掌握taskset:优化你的Linux进程,提升系统性能
|
弹性计算 Linux 区块链
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)
800 4
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)