PostgreSQL 前后端协议中的查询方式:Simple Query、Extended Query

PostgreSQL 前后端协议中的查询方式:Simple Query、Extended Query

1、简单查询(Simple Query)

简单地把 SQL 语句发送给 backend,backend 也只是简单地执行该 SQL 语句并把结果回复给 client。

client 发送 SQL 语句 insert into guestbook values(11,'off');

backend 回复结果

 

2、扩展查询(Extended Query)
首先解释一下 prepared-statement:需求是用户有一条 A 语句,需要被反复执行;数据库为这类语句设置了对应的捷径,避免了反复执行类似语句造成的资源浪费。

扩展查询可以理解为简单查询被拆分为几个步骤:
– Parse 指定 SQL 语句,可能含有类似 ($1,$2,$3,$4) 这种参数
– Bind 指定捷径的名字,填入变量的具体参数值
– Execute 执行该语句

其他的 Describe、Sync 等命令详解可参考官网文档。

参考示例
连到备端执行 insert into test values(trunc(random()*1000), 'abcdefg');

backend 回复执行失败

3、默认方式说明
经过测试发现,psql 默认使用简单查询方式,JDBC、ODBC、Npgsql默认使用扩展查询方式。
其中,JDBC 内提供了 preferQueryMode 参数,可通过此参数将 JDBC 修改为使用简单查询方式。

其他参考链接:

https://www.postgresql.org/docs/current/protocol-flow.html#PROTOCOL-COPY

PostgreSQL 源码解读

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值