标签: postgresql

postgresql 的高可用性

我是 PostgreSQL 数据库的新手。最近我们的开发人员需要对我们的系统进行一些升级。

因此,我们计划实施一些方法来实现数据库故障转移。

根据我在此处阅读 postgresql wiki ,我们正在尝试实现热备用或热备用。所以我的问题是:

  1. 它们之间的主要区别是什么?
  2. 哪一个更好?
  3. 有没有其他方法可以考虑在我们的 Postgres 数据库中实现高可用性?

postgresql linux high-availability

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

在 Postgres 中,如何将不同的字符转换为枚举类型?

我有一个 Postgres 8.4 表,其中包含类型为“字符变化”的列,但我想将它们转换为枚举类型。

尝试更改表格时

ALTER TABLE logs ALTER COLUMN interface_type TYPE interface_types
USING interface_type::text::interface_types;
Run Code Online (Sandbox Code Playgroud)

我收到一个错误

default for column "interface_type" cannot be cast to type interface_types
Run Code Online (Sandbox Code Playgroud)

该列的默认值是枚举类型中值的文本版本。所以这应该是可能的,尽管我没有运气谷歌搜索解决方案。

我假设我需要为它定义一个演员表。如何?

postgresql cast

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

查询 PostgreSQL 9 中分组连续行的总和

我有关于在不同国家旅行的人的数据,如下所示:

country | begintimestamp      | distance    

Germany | 2015-01-01 00:00:00 | 100
Germany | 2015-01-01 01:12:13 | 30
France  | 2015-01-01 02:13:14 | 40
France  | 2015-01-01 03:14:15 | 20
Spain   | 2015-01-01 04:15:16 | 10
France  | 2015-01-01 05:16:17 | 30
France  | 2015-01-01 05:17:18 | 5
Germany | 2015-01-01 06:18:19 | 3
Run Code Online (Sandbox Code Playgroud)

我需要的是能够收到这样的结果 -distance与最早的连续行相加begintimestamp

country | begintimestamp      | distance

Germany | 2015-01-01 00:00:00 | 130  // 100+30, the distance of two first rows summed. …
Run Code Online (Sandbox Code Playgroud)

postgresql window-functions

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

如何高效统计PostgreSQL的部分索引?

这个答案促使我再次思考我的下表,但我仍然不确定如何存储来自数据分析的变量/结果以便在后处理中快速选择。如果存储,我认为它使用部分索引(B 树)做得很好,因为在我这里描述的应用程序中只需要一个数据子集。假设您有三个标准正交表:measurementeventsheaders,其中都有一些静态(以字节为单位的事件大小等)列,但想知道从数据分析中存储一些数字是否有益。

没有名称的表模式测量示例:

SERIAL                     | NOT NULL
INTEGER                    | NOT NULL
INTEGER                    | NOT NULL
TIMESTAMP WITH TIME ZONE   | DEFAULT CURRENT_TIMESTAMP
Run Code Online (Sandbox Code Playgroud)

由于我需要统计数据,我担心通过 INTEGER 字段增加架构大小。我不想将很少使用的变量存储在主表中。我不希望我的索引没有像PostgreSQL Up & Running和这篇文章中描述的那样被使用,为什么我的索引没有被索引?

可能的来源


什么时候应该将静态/动态统计信息存储在表中?PostgreSQL 的部分索引中如何高效地存储静态/动态统计信息?

postgresql performance statistics size index-tuning

8
推荐指数
0
解决办法
136
查看次数

具有两种可能的所有者/父类型的实体的数据库架构?

我使用带有Sequelize 的PostgreSQL作为我的 ORM。

我有一种类型,User。第二种类型是Group,它可以通过一个GroupMemberships表将任意数量的用户与其关联。Users 也可以拥有任意数量的Groups。

我的第三种类型 ,Playlist可以属于 aUser或 a group。为这种类型设计模式以便它可以拥有一种类型的所有者或两者之一的最佳方法是什么?

我的第一遍创建了两个关联,但一次只填充一个。这可能有效,但看起来很笨拙并且使查询变得困难。

附加信息

以下是我对 MDCCL 通过评论发布的澄清请求的回应:

(1)如果一个播放列表是由给定资集团,可以说,这个播放列表是关系到一个一对多的用户,只要他们是会员这样的小组,对不对?

我相信这在技术上是正确的,但这种一对多关联并不明确存在。

(2) 那么,一个特定的播放列表是否有可能同时被一对多的群组拥有?

不, a 应该不可能被Playlist一对多拥有Groups

(3) 特定播放列表是否可能由一对多拥有,同时由不是该成员的一对多用户拥有?

不,因为如 (2) 中的一对多 from PlaylisttoGroup不应该存在。此外,如果 aPlaylist …

schema postgresql database-design subtypes

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

PostgreSQL中具有主键的重复行

假设我有一个名为 的表people,其中id是主键:

+-----------+---------+---------+
|  id       |  fname  |  lname  |
| (integer) | (text)  | (text)  |
+===========+=========+=========+
|  1        | Daniel  | Edwards |
|  2        | Fred    | Holt    |
|  3        | Henry   | Smith   |
+-----------+---------+---------+
Run Code Online (Sandbox Code Playgroud)

我正在尝试编写一个行重复查询,该查询足够健壮,可以解释表的架构更改。每当我向表中添加一列时,我都不想回去修改重复查询。

我知道我可以做到这一点,这将复制记录 ID 2 并为复制的记录提供一个新 ID:

INSERT INTO people (fname, lname) SELECT fname, lname FROM people WHERE id = 2;
Run Code Online (Sandbox Code Playgroud)

但是,如果我添加一age列,则需要修改查询以同时考虑年龄列。

显然我不能执行以下操作,因为它还会复制主键,从而导致duplicate key value violates unique constraint-- 而且,无论如何我都不希望它们共享相同的 ID:

INSERT INTO people …
Run Code Online (Sandbox Code Playgroud)

postgresql dynamic-sql default-value postgresql-9.4

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

在 PostgreSQL 8.3 上备份并在 PostgreSQL 9.4 中还原后,数据库大小减少

pg_dump在 PostgreSQL 8.3 服务器中托管的 JIRA 数据库上做了一个。数据库后的尺寸vacuum full217132652(大约207 MB)。

然后我使用以下命令在 PostgreSQL 9.4 服务器上恢复了 JIRA 数据库:

$ psql -X -v ON_ERROR_STOP=1 -d jira2 -U jira -h localhost < jiradb2017_03_12.sql
Run Code Online (Sandbox Code Playgroud)

我假设自从我使用 以来,任何错误都会退出恢复ON_ERROR_STOP=1,但 SQL 脚本正确完成(尽管有一些与数据恢复无关的警告)。

我最终得到了一个大小为158019348(大约 151 MB)的数据库。

那么,这里有什么故事呢?我是否可以假设数据库已成功恢复并且 PostgreSQL 优化了其存储(介于 8.3 和 9.4 版本之间)引擎并且更有效地使用了空间?

postgresql disk-space restore

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

如何验证 SSL 始终在 Postgresql 9.6 上使用

我在不同的机器上有一个带有应用程序服务器和数据库的敏感应用程序,在从数据库的情况下,在不同的数据中心。

尽管我相信我的 postgresqls 被配置为始终使用 ssl,但我需要一种方法来仔细检查这一点。

是否有一些简单的方法可以检查所有客户端连接是否确实被迫使用 ssl?

postgresql ssl postgresql-9.6

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

我可以在 timescaledb 中使用 hypertables 来获得更好的插入率吗?

我有一个 PostgreSQL 数据库,我运行了大量的负载。我希望这个负载尽可能快。我已经在使用复制命令等。

我一直在阅读关于timescaledb以及它如何提供改进的插入性能。但是,如果我只关心插入性能,我想知道使用 hypertables 而不是常规表是否有任何缺点?

postgresql performance timescaledb postgresql-performance

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

外键列中的 NULL

我一直在学习SIMPLEFULL匹配 PostgreSQL 中的外键,我想知道以下思考过程是否正确:

一旦外键的至少一个引用列包含一个NULL值,就没有指向被引用表的链接。这是因为根据 3VL,aNULL无法与另一个NULL值进行比较。这也意味着在相关列中至少包含一个值的引用行被更新或删除时,定义的级联操作(例如... DO DELETE, ... DO SET NULL, ..)NULL永远不会发生,因为没有指向引用行的链接。更具体地说,假设有一个从表A(x, y)到的外键B(x, y)。如果同时AB包含的行(5, NULL)xy,有没有联系,因为NULL该行A是不是等于NULL在列B

这样对吗?我对 SQL 很陌生,所以我想知道我是否正确理解了这一点。

postgresql foreign-key

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