标签: postgresql

在 Postgres 复制中查询 master

我试图找出是否有办法从已设置服务器复制的从属 PostgreSQL 服务器查询主服务器。

从奴隶,我可以:

SELECT pg_is_in_recovery()
Run Code Online (Sandbox Code Playgroud)

如果我在从站上,这会给我一个“t”结果,而在主站上给我一个“f”结果,这是第一步。

接下来,我想运行一个查询,该查询为我提供有关它正在复制的主节点的一些信息。最好是 IP 地址或主机名。

作为记录,我可以使用以下命令查询 master:

SELECT * from pg_stat_replication
Run Code Online (Sandbox Code Playgroud)

这会给我关于奴隶的信息。我希望有一种查询奴隶的互惠方法。

这可能吗?如果是这样,如何?

postgresql

8
推荐指数
1
解决办法
1万
查看次数

为瞬态数据优化 PostgreSQL

我有几个表,每个表有 100-300 列整数类型,它们保存高度易变的数据。数据集由一两个主键作为键,刷新时删除整个数据集,并在一个事务中插入新数据。数据集大小通常是几百行,但在极端情况下可以达到几千行。每秒刷新一次,不同键的数据集更新通常是脱节的,因此删除和重新创建表是不可行的。

我如何调整 Postgres 来处理这样的负载?如果这有什么不同,我可以使用最新和最好的版本。

postgresql optimization database-tuning

8
推荐指数
1
解决办法
1613
查看次数

来自 pgadmin3 的 pg_restore 错误 - Postgresql

我已经使用 pgadmin3 工具从 system1 备份了 postgresql 数据库。创建的备份文件的扩展名为“.backup”

我试图在安装了 postgresql 9.0 和 pgadmin3 1.8 的另一个系统 2 上恢复它,但我收到错误

无法执行查询:错误:无法识别的配置参数“lock_timeout” 命令为:SET lock_timeout = 0;

两个系统的配置

system1 win7-64 位 postgresql 9.0.13-1 - 64 位 pgadmin 1.8

system2 win7-32​​bit postgresql 9.0.13-1 - 32bit pgadmin 1.8

postgresql pgadmin

8
推荐指数
1
解决办法
2万
查看次数

postgres 版本之间的 pg_dump 自定义格式

我想知道自定义 pg_dump 格式在 Postgres 版本之间有多稳定。例如,我可以在 postgres 9.x 中恢复使用 Postgres 8.x 创建的自定义格式转储吗?

背景:

我正在构建一个虚拟设备,其中包含 PostgreSQL 数据库中的所有配置。我必须决定是使用 SQL 格式还是自定义格式进行备份。随着设备随着时间的推移(几年)不断发展,我将使用更新的 PostgreSQL 版本,并且仍然需要能够轻松恢复旧备份。

postgresql backup restore

8
推荐指数
1
解决办法
6895
查看次数

在多插入事务中引用 ID 的方法?(postgres)

假设表“entity.eid”是自动递增的,我希望能够引用稍后在同一事务中分配的自动递增值。我一直这样做的方式是进行我认为不是最佳的多个交易。

START TRANSACTION;
INSERT INTO entity ...;
INSERT INTO t2 (eid, ...) VALUES (?NEW EID REF HERE?, ...), (...), (...);
COMMIT;
Run Code Online (Sandbox Code Playgroud)

postgresql

8
推荐指数
2
解决办法
1万
查看次数

PostgreSQL - 使用自动增量列创建视图

我有一个 PostgreSQL 表,我需要创建一个带有新列的视图。此列需要是从 1 开始到 N 的自动增量列。

这是否可以在不影响遗留数据结构的原始模式的情况下完成?

postgresql view postgresql-9.2

8
推荐指数
2
解决办法
1万
查看次数

为什么我的表包含重复的主键?

令我大吃一惊(而且令人担忧)的是,我刚刚意识到我的表有数百万行,只有几行,其中主键 (ID) 是重复的!我不明白这怎么会发生,以及我将来如何防止它?

保存主键的列是,并且一直受制于 CONSTRAINT fruits_pkey PRIMARY KEY(id);

我在 ubuntu 上运行 postgreql 9.3.4。

更新

@Mat:数据类型是integer

@ypercube:是的,select count(*) from (select count(*) from fruits group by id having count(*) > 1) as t1返回41

@Craig:是的,我之前做过故障转移,我的slave实际上是9.3.3

postgresql postgresql-9.3

8
推荐指数
1
解决办法
6157
查看次数

PostgreSQL,整数数组,相等索引

我有一个巨大的整数数组列表(300,000,000 条记录)存储在 Postgres 9.2 DB 中。我想有效地搜索这些记录以获得完全匹配(仅相等)。我听说过 intarray 模块和相应的 gist-gin 索引。我想问以下问题:

  • PostgreSQL 是否使用哈希函数来检查整数数组的相等性,还是执行一个比较数组元素的蛮力算法?
  • 如果 PostgreSQL 使用哈希函数,是否有一些 PostgreSQL 函数代码来实际获取特定数组的哈希函数结果?
  • 哪个索引最适合这样的任务?B-tree,还是 intarray 模块提供的 gist - gin 索引?数据集将是静态的,即,一旦插入所有记录,就不会再插入。所以,建立索引/更新索引的时间对我来说并不重要。

postgresql btree gist-index

8
推荐指数
2
解决办法
3077
查看次数

将多个数组取消嵌套到行中

我已经看到了使用此示例进行批量插入的好方法

WITH p AS (
    INSERT INTO parent_table (column_1) 
    SELECT $1 
    RETURNING id) 
INSERT INTO child_table (parent_table_id, column_a) 
SELECT p.id, a 
FROM   p, unnest($2::text[]) AS a
Run Code Online (Sandbox Code Playgroud)

但是,我需要从多个数组中插入多行,所以我尝试了以下语法:

WITH p AS (
    INSERT INTO parent_table (column_1) 
    SELECT $1 
    RETURNING id) 
INSERT INTO child_table (parent_table_id, column_a, column_b) 
SELECT p.id, a, b 
FROM   p, unnest($2::text[]) AS a, unnest($3::bigint[]) AS b
Run Code Online (Sandbox Code Playgroud)

我在parent_table_idand上有一个主键column_a,当我尝试执行此查询时,Postgres 抱怨重复键冲突。

应该如何解开数组以便它们形成单独的行?

换句话说,如果$2$3都有两个条目,那么第一个条目如何$2只插入第一个条目,$3并且对于各自的第二个条目都相同?

如果这是不可能的,我可以构造一个多维数组吗?如果是这样,它应该如何与多种数组类型一起传递,多维数组语法是什么?

postgresql array set-returning-functions bulk-insert

8
推荐指数
1
解决办法
2万
查看次数

string_agg 没有记录时返回空字符串

我正在尝试在格式为 PostgreSQL 查询中返回一个文本字段

'stringOne' || string_agg(field, ',') || 'stringTwo'
Run Code Online (Sandbox Code Playgroud)

对于 group 子句中的某些元素, wherefield始终为 null。我想要并期望stringOnestringTwo在这种情况下结束,但我得到NULL.

为什么会这样,我如何完成我想要做的事情?

例子

假设我有桌子

foo                 bar
+----+--------+     +----+-------+--------------+
| id | name   |     | id | fooid | baz          |
+----+--------+     +----+-------+--------------+
|  1 | FooOne |     |  1 |     1 | FooOneBazOne |
|  2 | FooTwo |     |  2 |     1 | FooTwoBazTwo |
+----+--------+     +----+-------+--------------+
Run Code Online (Sandbox Code Playgroud)

我运行查询

SELECT
  foo.name AS foo,
  'Bazzes: ' || string_agg(bar.baz, ', ') AS bazzes …
Run Code Online (Sandbox Code Playgroud)

postgresql null aggregate concat

8
推荐指数
1
解决办法
1万
查看次数