PostgreSQL Replication之第八章 与pgbouncer一起工作(1)
当您在使用大规模的设施工作,可能有时候,您必须处理许多并发打开的连接。没有人会使用十台服务器来为两个并发用户提供服务--在许多情况下,这根本没有意义。大量的设施通常会处理成百上千的并发连接。引入连接池,例如pgbouncer,会有助于挤出您的系统的更多的性能。
通常创建成千上万个连接可以说是一笔相当的开销,因为每次一个连接到PostgreSQL的连接被创建需要调用fork()。如果一个连接仅使用较短的时间,这可是昂贵的事。这是需要使用pgbouncer的时候。基本上,pgbouncer不是一个复制相关的工具—但是,我们已经决定把它列入本书,因为它经常和复制联合使用来使它更有效地工作。
在本章中,我们将深入地学习pgbouncer,看看 它是如何被安装的,怎样加速您的设施。这并不意味着pgbouncer的一个全面的指导,不能替代官方文档。
本章将讲述如下主题:
• pgbouncer的目的
•连接池的基本概念
•安装pgbouncer
•配置和管理pgbouncer
•性能调优
•使pgbouncer与Java一起工作
8.1 理解pgbouncer的基本概念
如前所述,pgbouncer的基本思想是节省连接相关的成本。当用户创建一个新的数据库连接,通常意味着用掉几百KB内存。这由20Kb左右的共享内存组成,这些内存由提供连接服务的进程自己使用。尽管内存消耗本身可能不是问题,但是,实际连接的创建过程较为耗时。耗时意味着什么呢?如果您创建一个连接并使用它,您可能不会注意到PostgreSQL需要分配出来一个连接的时间。但是,让我们考虑一下,一个典型的网站做什么。它打开一个连接,发出几个简单的语句,断开连接—即便创建一个连接不能被注意到,和所有剩下的工作相比它仍然是相当大量的工作。查找几个手机号码或者其它琐碎的信息花费多久?因此,在一个连接的生命周期中一个连接做的工作越少,实际创建连接的时间就变得越重要。
pgbouncer通过把它自己置于实际数据库服务器与频繁使用的应用程序之间来解决这个问题。对于应用程序来说,pgbouncer看起来像一个PostgreSQL服务器。在pgbouncer内部会保存保存一组开放的连接,并把它们集中起来。无论应用什么时候请求一个连接,pgbouncer将给请求一个池化的连接。从某种程度上说,它的行为像一个代理。
这里的主要要点是:pgbouncer可以快速地给应用提供一个连接,因为真正的数据库连接已经在幕后存在了。另外可以观察到非常低的内存占用。用户报告一个占用空间为每个连接占用2KB。这使得pgbouncer成为一个理想的大连接池。
PostgreSQL Replication之第八章 与pgbouncer一起工作(1)的更多相关文章
- PostgreSQL Replication之第八章 与pgbouncer一起工作(5)
8.5 维护 pgbouncer 除了我们在本章已经说明的,pgbouncer有一个很好的能够执行基本管理和监控任务的交互式管理界面. 它是如何工作的呢?pgbouncer提供给您一个虚假的称为pgb ...
- PostgreSQL Replication之第八章 与pgbouncer一起工作(4)
8.4 提升性能 从一开始考虑pgbouncer的时候,性能就是一个关键的因素.为了确保高性能,有些问题必须认真对待.首先,确保参与您设置的所有节点相互之间的距离较近.这对于降低网络往返时间有很多的帮 ...
- PostgreSQL Replication之第八章 与pgbouncer一起工作(3)
8.3 配置您的第一个pgbouncer设置 一旦我们已经完成了pbouncer的编译与安装,我们可以容易地启动它.要做到这一点,我们已经在一个本地实例(p0和p1) 建立了两个数据库.在本例中,执行 ...
- PostgreSQL Replication之第八章 与pgbouncer一起工作(2)
8.2 安装pgbouncer 在我们深入细节之前,我们将看看如何安装pgbouncer.正如PostgreSQL一样,您可以采取两种途径.您可以安装二进制包或者直接从源代码编译.在我们的例子中,我们 ...
- PostgreSQL Replication之第九章 与pgpool一起工作(1)
在前面的章节中,我们已经能够深入地理解了pgbouncer,同时也学会了如何使用它来尽可能地优化复制设置.在本章我们将了解一个经常被称作与pgbouncer相对应的工具.尽管pgpool的思想与pgb ...
- PostgreSQL Replication之第九章 与pgpool一起工作(7)
9.7 处理故障转移和高可用 可以使用pgpool来解决的一些明显的问题是高可用性和故障转移.一般来讲,有使用pgpool或者不使用pgpool可以用来处理这些问题的各种方法. 9.7.1 使用Pos ...
- PostgreSQL Replication之第九章 与pgpool一起工作(6)
9.6 运行pgpool和流复制 pgpool也可以和除了语句级别的复制之外的流复制一起使用.一个完美的方案是使用PostgreSQL的板载复制和仅仅使用pgpool的负载均衡与连接池. 实际上,这样 ...
- PostgreSQL Replication之第九章 与pgpool一起工作(4)
9.4 设置复制和负载均衡 要配置pgpool,我们可以简单地使用一个包含一种典型的配置信息的已经存在的样本文件,将它拷贝到我们的配置目录并修改之: $ cp /usr/local/etc/pgpoo ...
- PostgreSQL Replication之第九章 与pgpool一起工作(3)
9.3 理解pgpool的架构 一旦我们安装了pgpool,是时候来讨论软件架构了.从一个用户的角度看,pgpool就像一个 正常的数据库服务器,您可以想连接任何其他服务器一样连接到它: pgpool ...
随机推荐
- UVA - 10229 Modular Fibonacci 矩阵快速幂
Modular Fibonacci The Fibonacci numbers (0, 1, 1, 2, 3, 5, 8, 13, 21, 3 ...
- servlet修改后无效,仍然还是修改之前的效果
注意servlet的路径是否正确,默认是java resources文件夹中的src.当在webcontent->web-inf->classses->data中时,注意添加路径.否 ...
- Binary operations #1
https://www.codewars.com/kata/binary-operations-number-1/train/csharp Your work is to write a method ...
- 去除iframe滚动条1
主页面的IFRAME中添加:scrolling="yes" 子页面程序代码: 让竖条消失: <body style='overflow:scroll;overflow-x:a ...
- ubuntu 搜狗输入法的安装
本文主要解决的是,通过安装搜狗网站提供的*.deb安装文件,使用ctrl+shift/space无法切换搜狗输入法的问题. 搜狗输入法 for linux:搜狗输入法 for linux,这还不算完: ...
- WIN7使用VisualSVN建立SVN服务器
使用SVN开发十分的方便,这样就不用每次都拷贝粘贴来备份了,网上看到一篇给自己的windows电脑安装SVN服务器的使用非常方便. 1.下载安装文件(服务器端和客户端) 服务器端采用VisualSVN ...
- mysql表空间传输(ERROR 1808) row_format设置
文章结构如下: 从MYSQL5.6版本开始,引入了传输表空间这个功能,可以把一张表从一个数据库移到另一个数据库或者机器上.迁移的时候很方便,尤其是大表. 由于本次达到测试使用版本5.6.38传到5.7 ...
- xBIM 实战04 在WinForm窗体中实现IFC模型的加载与浏览
系列目录 [已更新最新开发文章,点击查看详细] WPF底层使用 DirectX 进行图形渲染.DirectX 能理解可由显卡直接渲染的高层元素,如纹理和渐变,所以 DirectX 效率更高. ...
- vue中router-link的click事件失效的解决办法
title: vue中router-link的click事件失效的解决办法 toc: false date: 2018-12-04 16:28:49 categories: Web tags: vue ...
- Xshell调整终端显示的最大行数(缓冲区)
1 选择会话,按顺序点击文件->属性 ,打开"会话属性"窗口 如下 在"会话属性"窗口中选择“终端” 修改缓冲区大小的值:其范围为0~2147483647 ...