问题标签 [postgresql-11]
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.
postgresql - PostgreSQL 11 对索引应该足够的分区表进行并行 seq 扫描
问题是我不断在一个相当简单的查询上进行 seq 扫描,以进行非常简单的设置。我究竟做错了什么?
- Windows Server 2016 上的 Postgres 11
- 配置更改完成:
constraint_exclusion = partition
- 单表分区为 200 个子表,每个分区数千万条记录。
- 有问题的字段的索引(假设一个也被分区)
这是创建语句:
有问题的查询:
这总是会进行需要几分钟的序列扫描,而很明显根本不需要表数据,因为日期字段已被索引,我只是要求其 B 树的第一叶和最后一叶。
最初索引是打开的(K, Date)
,它很快就向我展示了 Postgres 在我认为它正在使用的任何查询中都不会尊重一个。(Date)
其他查询起到了作用,似乎 Postgres 声称自动分区索引。然而,这个特定的简单查询总是用于 seq 扫描。
任何想法表示赞赏!
更新
查询计划(analyze, buffers)
如下:
更新 2只是为了避免未来的评论,如“你应该索引(K,日期)”:
具有两个索引的查询计划完全相同,分析数量相同,甚至缓冲区命中/读取也几乎相同。
postgresql - 获取分区表的表大小(Postgres 10+)
我每周在 Postgres上遇到这个查询,它显示了表格、它们的大小、toast 大小和索引大小(以字节为单位):
我知道 Postgres 正在为每个分区创建一个表,所以我分别为每个分区获取条目,但是有没有办法让每个表有一行,不管这个表是否分区?
postgresql - 致命:用户“postgres”的密码验证失败(带有 pgAdmin 4 的 postgresql 11)
我最近安装了 Postgresql 11,在安装过程中,没有为 Postgres 输入密码和用户名的步骤。现在在 pgAdmin 4 中,我想将数据库连接到服务器,它要求我输入密码,而我一开始没有输入任何密码。任何人都知道发生了什么。谢谢!
postgresql - 删除我用“ALTER SYSTEM SET”输入的错误参数
我正在输入一堆ALTER SYSTEM SET
命令,其中一个我打错了。现在我不断得到:
无法识别的配置参数
如何删除该配置参数?
我正在使用PostgreSQL 11,并且在输入这些 set 命令时正在使用psql,因此它不在PostgreSQL.conf
文件中。
postgresql - 如何让 pg_ctl reload 工作?要求 postgres 用户的密码,但不接受
yum
我已经按照网站上的 Postgres 说明在CentOS 7 VM 上安装了 PostgreSQL 11 。安装后,我做到了
然后去配置postgresql.conf
文件。
现在我需要重新加载数据库以使这些更改生效。
我尝试sudo pg_ctl reload
使用该postgres
帐户,然后提示我输入postgres
密码。据我了解,此帐户是在初始化时创建的,并且没有密码,但不接受仅按 Enter 键。
然后,我尝试通过su -u postgres psql postgres
从 root 执行并在 shell 执行中更改密码,ALTER USER postgres PASSWORD 'myPasswordHere';
这确实ALTER ROLE
作为确认返回。如上重试重新加载,新密码仍然不被接受。
然后我尝试systemctl restart postgres-11
以 root 身份进行操作,但这似乎完全破坏了数据库,不允许我执行任何涉及数据库的进程,甚至无法访问 Postgres shell。
我不得不删除数据目录并重新运行initdb
上面的命令以重新启动一切(pg_ctl
命令仍然不接受我的密码)。
如何正确重新加载数据库以便postgresql.conf
实施我的更改?
postgresql-11 - 在 pgAgent 中设置文件导出
我是 pgAgent 的新手,并试图设置一个每 5 分钟导出一次文件的作业(仅用于测试;一旦我掌握了语法,它将分散到许多作业中)。当我在查询编辑器中运行以下测试代码时,它可以正常工作,但是 pgAgent 似乎不喜欢它。对我需要更改的内容有什么帮助吗?
就正在发生的事情而言,我找不到任何类型的错误;相反,当我手动运行作业或让计划运行时,文件不会出现。
xml - 如何在 Postgres 11 和 Postgres 9.1.2 中解析 XML
在 Postgres 9.1.2 中,下面的脚本会产生正确的结果:
在 Postgres 11 中,它会产生错误的结果:
如何使它也可以在 Postgres 上的较新版本中工作?
postgresql - hotstandby postgresql 服务器具有主服务器的密码
主服务器:有一个名为“test”的 postgresql 用户,密码为“mytest-password-formaster”
从服务器:一个名为“test”的 postgresql 用户在那里,密码为“mytest-password-forslave”
现在,我创建了 HA 设置,如下所示:
修改了 master 上的 postgresql.conf 和 pg_hba.conf 需要充当“master”
在从服务器上:清理 data_dir,修改 postgresql.conf,使用“pg_basebackup”从 master 备份 data_dir,并创建 reconvery.conf 以在 hotstandby 模式下启动 postgresql。
现在,上述步骤工作正常,我的 HA 设置也正常工作。现在,当我使用 'pg_promote' 提升从服务器时,它使 postgresql 写入启用。现在'test'用户的密码是master。即'mytest-password-formaster'。
我想要的是,当我使用“pg_promote”提升备用节点时,它应该有其用户的旧密码,即“mytest-password-forslave”。
如何做到这一点?当我在设置备用配置时清理从站上的 data_dir 时,它正在发生吗?
postgresql - 无法运行 Postgres 存储过程
我有一个非常简单的存储过程:
我正在尝试使用以下方法运行 SP:
我得到的错误如下:
错误:查询没有结果数据的目的地 提示:如果要丢弃 SELECT 的结果,请改用 PERFORM。CONTEXT:PL/pgSQL 函数 delivery.get_assets(integer) 第 3 行在 SQL 语句 SQL 状态:42601
我正在使用 PostgresQL 11。
在 SQL Server 中,我所要做的就是调用 SP。我在 Postgres 中读到过,你不需要像使用函数那样的 return 语句。任何帮助表示赞赏!
***根据下面的评论,我已将 SP 更改为函数(谢谢 JSpratt 和没有名字的马)。
我快到了,但是现在当我调用该函数时,它以以下格式返回:
如何让它作为网格中的普通数据集返回?