Fork me on GitHub

daydayup863

人生就像一杯茶,不会苦一辈子,但总会苦一阵子。

0%

什么是pgbouncer

PgBouncer是PostgreSQL的数据库提供的一个轻量级连接池工具,PgBouncer在数据库和应用端建立连接,由PgBouncer处理与后端数据库连接关系。
通过对应用端的连接限流,减少对数据库的连接请求,避免恶意连接。其工作是每一个数据节点对数据的存取,pgbouncer只是提供给客户端数据节点的
分配和链接以及限制客户端连接的数量。整体上实现了对数据的负载均衡。能够缓存和PostgreSQL的连接,当有连接请求进来的时候,直接分配空闲进程,
而不需要PostgreSQL fork出新进程来建立连接,以节省创建新进程,创建连接的资源消耗。能够有效提高连接的利用率,避免过多的无效连接,导致数据库消耗资源过大,CPU占用过高。

目前支持以下3中连接池模型:

Session:会话级别,在session生命周期内,连接池分配给该会话一个数据库连接,断开会话后,数据库连接会放回连接池中;
Transaction:事务级别,开启一个事务,从连接池中获取一个连接,事务结束后,连接会释放到连接池中;
Statement:语句级别,执行一个SQL,开启一个连接,SQL执行完成,连接会释放到连接池中。

阅读全文 »

名字

pg_hint_plan – 在注释中使用特殊格式的 hint 语句来控制查询计划.

语法

PostgresQL 使用查询规划器计算开销,查询规划器是基于数据统计的而不是静态的规则。对于一个 SQL 语句查询规划器估计每一种可能执行方法的开销,然后使用开销最低的执行方法。查询规划器使用它认为最好的执行计划,而并非真正最优的,因为它不考虑一些数据的属性,例如,列之间的关系。

pg_hint_plan 使用所谓的 “hint” 来调整执行计划,它可以在 SQL 注释中使用特殊的格式来简单的描述。

阅读全文 »