了解 PostgreSQL 的扩展查询协议

本文详细介绍了PostgreSQL的扩展查询协议,包括其与简单查询的区别。扩展查询分为Parse、Bind、Execute和Sync四个步骤,允许客户端更精细地控制查询处理,减少重复解析,并能节省资源。此外,文章还探讨了命名和未命名的prepared statement及portal的使用和管理。
摘要由CSDN通过智能技术生成

1.介绍

本篇博客用于解释扩展协议的工作原理以及它与简单查询的区别。

2.简单查询

在PostgreSQL中,客户端连接能够发起两种类型的查询:简单查询扩展协议查询

简单查询顾名思义。

当启动 psql 客户端连接到pg服务器时,几乎所有发送的sql命令会被视为简单查询。

包括使用 begin 和 commit 包起来的显式事务;使用分号分割的多语句查询;执行或定义函数等等。

简单查询自动遵循标准查询处理流程,其中包括以下阶段:

  • Parser
  • Analyzer
  • Rewriter
  • Planner
  • Executor

这些具体含义这里不再赘述。网上的资料很多。

客户端和服务器之间的通信也非常简单。

case 1, insert

客户端将查询发送到服务器进行处理,服务器响应一个 CommandComplete 消息(比如 INSERT 0 1,接一个ReadyForQuery(IDLE)消息),表示现在服务器已经完成了查询,目前是闲置状态,客户端可以发送另一个查询,新的查询遵循同样的逻辑。

case 2, select

在 SELECT 查询的情况下,服务器将先发送结果 row 的行结构描述,然后发送满足查询的实际行数据,直到没有更多行可返回为止。

最后,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aiky哇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值