问题标签 [postgresql-14]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
39 浏览

postgresql - 为什么 CTE 和临时表并行的扫描受到限制?

PostgreSQL 手册

以下操作始终受到并行限制:

  • 公用表表达式 (CTE) 的扫描。

  • 扫描临时表。

为什么限制 CTE 和临时表的并行扫描?

0 投票
0 回答
58 浏览

perl - 使用 PostgreSQL 14 运行 Ora2Pg

我有PostgreSQL v14服务器,可以使用ora2pg工具版本 22.1从旧 Oracle 服务器迁移数据。

当我尝试执行时出现问题ora2pg -c properties.conf,这给了我以下输出:

[========================>] 2/2 表 (100.0%) 扫描结束。DBI connect('dbname=postgres;host=hostname;port=5432','username',...) 失败:C:/Strawberry/perl/site/lib/Ora2Pg.pm 第 2100 行不支持身份验证方法 10。 FATAL: 1 ... 身份验证方法 10 不支持 Aborting export ...

当我做了一些研究时,我知道这authentication method 10可能是一种SCRAM 身份验证方法,这是 PostgreSQL 14 的默认设置。

我尝试使用 安装 perl 包Authen::SCRAMcpan但我不熟悉 perl 编程,这对我没有帮助。

问题是:

  • 有没有办法authentication method 10在 ora2pg 中启用?
  • 如果是这样,我该怎么做?
0 投票
1 回答
106 浏览

java-11 - 我该如何解决这个问题,它说'queryForObject(java.lang.String,java.lang.Object [],java.lang.Class)' 已弃用

我不知道如何解决这个问题,因为我上周四才开始做 Spring Boot 项目。不幸的是,今天是我项目的截止日期,坦率地说,我现在很恐慌:/

这是我的示例问题代码:

下面是 Java 类的整体代码:

}

0 投票
2 回答
274 浏览

postgresql - PostgreSQL 中的高效全文搜索,在另一列上排序

在 PostgreSQL 中,如何有效地对一列进行全文搜索,对另一列进行排序?

假设我有一个tbl包含列a, b, c, ... 和许多(> 一百万)行的表。我想对列进行全文搜索a并按其他列对结果进行排序。

所以我va从 column创建一个 tsvector a

为此创建一个索引iva

ib和列的索引b

然后我像这样查询

现在 Postgres 明显的执行策略是:

  1. ib使用、过滤va @@ 'test'::tsquery和在 100 次匹配后停止对常用词进行索引扫描,

  2. 而对于稀有词使用ivawith condition 进行(位图)索引扫描va @@ 'test'::tsquery,然后b手动排序

但是,Postgres 的查询规划器似乎没有考虑词频:

  • 对于低LIMIT(例如100),它总是使用策略 1(正如我检查过的EXPLAIN),并且在我的情况下,对于稀有(或不出现)的单词需要一分钟以上的时间。但是,如果我通过设置 large (或 no) 来欺骗它使用策略 2 LIMIT,它会在一毫秒内返回!

  • 反之亦然,对于较大的LIMIT(例如200),它总是使用策略 2,该策略适用于稀有词,但对于常用词非常慢

那么如何让 Postgres 在每种情况下都使用一个好的查询计划呢?

由于目前似乎没有办法让 Postgres 自动选择正确的计划,

  • 如何获得包含特定词位的行数,以便决定最佳策略?

    SELECT COUNT(*) FROM tbl WHERE va @@ to_tsquery('english', 'test')非常慢(对于 10000 行中出现的词位约 1 秒),而且ts_stat似乎也无济于事,除了建立我自己的词频列表)

  • 然后我如何告诉 Postgres 使用这个策略?


这里有一个具体的例子

我有一个items包含 150 万行的表,其中有一个 tsvector 列v3,我在其中进行文本搜索,还有一个列rating进行排序。在这种情况下,如果 LIMIT 小于或等于 135,我确定查询规划器始终选择策略 1,否则选择策略 2

这里是对 LIMIT 135 的稀有词“aberdeen”(出现在 132 行中)的 EXPLAIN ANALYZE:

并使用 LIMIT 136:

这里是 LIMIT 135 的常用词“游戏”(出现在 240464 行中):

并使用 LIMIT 136:

0 投票
1 回答
128 浏览

postgresql - 在 Windows 10 上使用 createdb 命令 postgresql 时出错

我是 PostgreSQL 的新用户,我正在学习它以便可以将它与 Django 一起使用,所以我尝试使用该createdb命令创建一个新数据库,但即使我为我的帐户输入了正确的密码,我收到此错误。我重新安装了所有东西并检查了我能想到的所有东西,但我无法解决这个错误。所以,如果我能在这个问题上得到一些帮助,那就太好了。

即使使用 commandpsql并提交正确的密码,也会出现同样的错误。

我正在使用 Windows 10。

据我检查,我需要输入安装 PostgreSQL 时使用的密码。

顺便说一句,我使用的是最新版本的 PostgreSQL 14.1

我使用的命令:

0 投票
1 回答
51 浏览

postgresql - PostgreSQL 崩溃:由于 postmaster 意外退出而终止连接

我正在使用 Python 线程执行从 Python 运行 60 个并行进程的数据迁移任务。

过了一会儿,PG崩溃了,看PG日志文件的结尾:

有没有人知道问题是什么?我正在使用本地磁盘的物理 Windows 服务器上运行它。PG 版本 14。

感谢您的任何意见。谷歌搜索这个问题并没有给我任何有用的提示。

上面的 SQL 代码(“......”)是

我浏览了我的 PG 日志文件以查找此错误,结果发现,每次都在相同的代码上崩溃。

安装的扩展:

  • pg_routing
  • plpgsql
  • 地理信息系统
  • postgis_sfcgal
  • uuid-ossp
0 投票
1 回答
35 浏览

postgresql - SQL 状态函数的 Postgres 错误:42601

显示的错误消息并且我没有看到错误,因为我以多种方式进行了探测,同样继续显示的是斐波那契数列

0 投票
0 回答
19 浏览

postgresql - 建议对查询进行存储修改以更有效地运行?

假设我有一个查询返回属性 R:a 具有第二高的不同值(返回表名和属性名)。我的任务是:

对于相同属性 R:a 的每个不同值,将不同值返回为 val,并将 R 中具有此值的元组数返回为计数。显示这些不同值的结果,例如 20% 的 R 元组具有等于或低于 R:a 值,20% 的 R 元组具有更高或等于 R:a 值。

建议对存储进行修改,以便查询尽可能高效地运行。

我编写了一个查询来返回不同的值和计数,但是我如何显示 20% 的结果以及在这种情况下存储修改意味着什么?

0 投票
1 回答
170 浏览

postgresql - PostgreSQL:“refcursor”处或附近的语法错误

当我使用 Microsoft SQL Server 数据库时,我有时会从存储过程返回多个结果集。我经常返回这么多,以至于很难理解哪个是哪个。为了解决这个问题,我遵循从同事那里学到的约定:第一个结果集是一个“地图”,它定义了第二个和其他结果集的名称。它有一条记录,其中每个字段名称是结果集的名称,相应的字段值是它在返回的结果集数组中的索引。客户端代码通过首先按名称查找索引来访问特定的结果集。

下面的简单示例展示了这个想法:

在此示例中,第一个结果集(索引:0)给出了另外 2 个结果集:一个称为“结果”(索引:1),另一个称为“错误”(索引:2)。两者都只包含一条记录:分别是除法的结果和错误代码。


示例调用 #1:

JSON 格式的结果集:


示例调用 #2:

JSON 格式的结果集:


我尝试使用官方文档,尤其是这个页面将这种技术移植到PostgreSQL 14。我想出了这个:

不幸的是,我收到一个错误:syntax error at or near "refcursor",指的是refcursor之后的第一行中的declare

0 投票
1 回答
151 浏览

postgresql - PostgreSQL 14.2:内存不足 - 在内存上下文“TupleSort main”中请求大小为 24576 时失败

我最近在我的 RedHat 服务器上安装了一个 PostgreSQL 14.1,与我的旧 12.9 并行。两个实例都在运行它们的默认配置。服务器本身有 48 个 CPU 和 188 GB RAM,对于 12.9 来说似乎绰绰有余

一切都按预期工作,但我不断收到错误消息。

SQL 表:pos 有 18 584 522 行 // orderedposteps 有 18 行 // posteps 有 18 行

我能看到的唯一区别是内存利用率,由 htop 显示。虽然 12.9 只消耗最多 10 GB 的 RAM,但 14.1 增长到 62 GB 并在达到或多或少 62 GB 时崩溃。

我已经尝试通过增加 work_mem

也使用 pgtune 来更改其他一些值,但没有任何显着影响。

我很确定可以简化和调整 SQL,我可以这样做,但我想了解 12.9 和 14.1 之间的区别在哪里,或者要明智地更改配置,而不是重构一个函数以使用最新版本。