PostgreSQL 前后端协议中的查询方式:简单查询、扩展查询

简单查询(Simple Query)

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

参考示例

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

backend 回复结果

扩展查询(Extended Query)

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

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

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

参考示例

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

backend 回复执行失败

默认方式

经过测试发现,psql 默认使用简单查询方式,JDBCODBCNpgsql默认使用扩展查询方式。

其中,JDBC 内提供了 preferQueryMode 参数,可通过此参数将 JDBC 修改为使用简单查询方式。

参考链接

如无特殊说明,文章均为本站原创,转载请注明出处
源自: 王明军的博客
本文链接地址: PostgreSQL 前后端协议中的查询方式:简单查询、扩展查询
广告

发表评论

This site uses Akismet to reduce spam. Learn how your comment data is processed.