首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

服务控制(7)

配置连接池

连接池是一个用于减低连接和重连开销的一组已经连接好的会话的术语。

提供连接池的方法有很多种,这取决于你所使用的软件框架。也许最好的方案是使用服务端连接池软件,因为它支持所有的连接类型,而不是限定在某个软件框架中。

我们将介绍一款非常轻量级的连接池P过Bouncer。它的名字起源于这个池可以在服务器重启或拒绝服务时暂停/回复,或者说反弹(bounced)。

准备

首先,规划好Pgbouncer参数配置文件、日志文件和PID文件的存放位置。Pgbouncer可以同时管理多个数据库连接,但这并不明智。如果你将Pgbouncer的配置文件和数据库服务对应起来,那么Pgbouncer会更容易维护。

该如何做???

执行以下步骤来配置Pgbouncer:

(1)建立pgbouncer.ini文件,如下:

;

; pgbouncer configuration example

;

[databases]

postgres = port = 5432 dbname=postgres

[pgbouncer]

listen_port = 6432

listen_addr = 127.0.0.1

admin_users = postgres

;stats_users = monitoring userid

auth_type = trust

; put these files somewhere sensible

auth_file = user.txt

logfile = pgbouncer.log

pidfile = pgbouncer.pid

; required for 9.0

ignore_startup_parameters = application_name

server_reset_query = DISCARD ALL;

; default values

pool_mode = session

default_pool_size = 20

log_pooler_errors = 0

(2)创建users.txt文件。文件内必须包含admin_users和

stats_users提及的用户。其格式非常简单:包含用户名和密码的多行记录。下面为一个示例:

"postgres" ""

(3)Pgbouncer也支持MD5认证。如果想使用这种功能,你需要从数据库里复制出加密后的密码。

(4)你可能希望通过直接从服务器中复制数据出来生成users.txt文件。这可以使用下面的psql脚本实现:

postgres=> \o users.txt

postgres=> \t

postgres=> SELECT ' " '||rolname||' " " '||rolpassword||' " '

postgres=> FROM pg_authid;

postgres=> \q

(5)启动Pgbouncer:

pgbouncer -d pgbouncer.ini

(6)测试连接——它应该响应reload操作:

psql -p 6432 -h 127.0.0.1 -U postgres pgbouncer -c "reload"

(7)最后,检查下Pgbouncer的max_client_conn参数不要超过PostgreSQL的max_connections参数。

如何实现的???

Pgbouncer是一款非常不错的软件,它配置简单、结构健壮、运行高效。Pgbouncer不是多线程的,因此每个连接占用一个进程,也就是一个CPU。它非常高效,然而在对大数据量传输时将占用更多的时间并减少并发性,因此这种数据的传输应该使用直接连接方式。Pgbouncer不支持SSL连接。假设它支持,那么加密/解密操作需要在一个进程中完成,这将使该解决方案的性能降低。如果你需要安全通信,那么你应该使用stunnel。

Pgbouncer支持连接池模式。如果设置了pool_mode = transaction,则Pgbouncer会提供连接集中管理功能。这样只需几个服务器的连接,即可管理成千上万的接入连接。

当新连接、事务或语句到达是,连接池将逐渐增大直到达到预设的最大值。这些连接将被保持到最多不超过server_idle_timeout设置的值,之后连接池会释放这些连接。

Pgbouncer也会在每个server_lifetime周期到达后释放回话,即允许服务轮流释放后端的服务,以避免非常长的会话引起的连接问题。

开头的查询会建立user.txt文件,其中只包含有密码的数据库用户。其他所有的用户将使用一个空的rolpassword字段,因此整个字段的值为NULL,对应的行会被忽略。这是有意这样设计的;没有密码的用户会带来安全风险,除非它们收到严密保护。例如,postgres系统用户通过本机进行连接,这会绕过Pgbouncer,而设置这个用户本意只为让可靠的负责人便于维护工作。

SHOW命令

###参考文献:PostgreSQL 9 Administration Cookbook(第2版)中文版###

53.快速进行单元格之间的切换

在Excel中,可以用以下方法实现在一个区域内的快速输入而不用鼠标来进行单元格之间的切换。方法如下:用鼠标圈定一定区域后,按Tab键可使目标单元格向后移,按“Shift+Tab”可向前移。这样就可以在键盘上连续输入一组数据而不需用鼠标,从而提高输入速度。 提示:事实上,采用此方法最大的好处是,在一行的最后一个单元格,继续按Tab,则可以转到下一行开始的单元格;在选定区域最后一行的最后一个单元格继续按Tab则会回到选定区域第一行第一个单元格。同样用Enter可以按列输入数据。

54.在同一单元格内连续输入多个测试值

一般情况下,当我们在单元格内输入内容后按回车键,鼠标就会自动移到下一单元格,如果我们需要在某个单元格内连续输入多个测试值以查看引用此单元格的其他单元格的动态效果时,就需要进行以下操作:单击“工具→选项→编辑”,取消选中“按Enter键后移动”选项(),从而实现在同一单元格内输人多个测试值。

55.输入数字、文字、日期或时间

单击需要输入数据的单元格,键入数据并按Enter或Tab键即可。如果是时间,用斜杠或减号分隔日期的年、月、日部分,例如,可以键入 9/5/96 或 Jun-96。如果按12小时制输入时间,请在时间数字后空一格,并键入字母 a(上午) 或 p(下午),例如,9:00 p。否则,如果只输入时间数字,Excel将按 AM(上午)处理。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190107G16Y7M00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券