Q1. 后端类型为parallel worker是并行吗?
问题描述
在PostgreSQL 中,pg_stat_activity视图中查看的backend_type字段是parallel worker,是开始了并行查询么?

问题解答
值为parallel worker是指并行查询的worker
13版本pg_stat_activity新增leader_pid字段,在并行操作时leader_pid显示并行worker的leader进程的pid,leader进程的该字段为空
例:
maleah_db=# SELECT query, leader_pid,
array_agg(pid) filter(WHERE leader_pid != pid) AS members
FROM pg_stat_activity
WHERE leader_pid IS NOT NULL AND datname = 'maleah_db'
GROUP BY query, leader_pid;
query | leader_pid | members
------------------------------------------------+------------+---------------
vacuum (VERBOSE on,parallel 2) vacparal_test ; | 5193 | {17752,17753}
(1 row)
Q2. 如何定位函数中最耗时的SQL?
问题描述
PostgreSQL中函数执行时间长,有多条SQL,但是pg_stat_activity只能查看调用函数的语句。如何定位函数中是哪条SQL更慢呢?
问题解答

引用文章指路:https://blog.csdn.net/Hehuyi_In/article/details/102855303
Q3. 如何查看当前会话事务的隔离级别?
问题描述
PostgreSQL中,有什么办法能够查看当前事务的隔离级别吗?
问题解答
transaction_isolation参数可以查看当前事务的隔离级别
PostgreSQL中查看某个参数的值有以下三种方法:
- show + 参数 ;
- 从pg_settings 视图中查看
- 使用 current_setting() 函数查看
例如:
postgres=# start transaction isolation level repeatable read;
START TRANSACTION
postgres=*# select current_setting('transaction_isolation');
current_setting
-----------------
repeatable read
(1 row)
Q4. psql命令导入执行文件如何指定schema?
问题描述
在PostgreSQL数据库中,psql -f导入文件时,可以指定schema吗?
问题解答
有以下两种方式:
psql -c "set search_path=abc" -fpsql "dbname=postgres options=-csearch_path=abc"
Q5. pg和openGauss的jdbc驱动对于upsert是否支持?
- PostgreSQL里的upsert场景,都可以正常执行
- 对于openGauss,使用openGauss-jdbc驱动执行insert on duplicate语句时,如果打开了autoGeneratedKeys参数,则会出现如下错误:
ERROR: RETURNING clause is not yet supported whithin INSERT ON DUPLICATE KEY UPDATE statement.
原因是openGauss-jdbc还未实现insert on duplicate场景通过returning返回数据库自动生成的主键。
在执行upsert语句(insert on duplicate)时不能同时使用autoGeneratedKeys参数,需要修改为statement.executeUpdate(sql);
最后修改时间:2023-03-20 09:56:56
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




