小编Cra*_*ger的帖子

数据库服务器和数据存储虚拟化技术的优缺点

昨天我们讨论了性能和可恢复性,我意识到虚拟化环境可以给我带来多少好处 - 但由于我对性能有点怀疑,所以我在这里问。它可能是特定于 GIS 的,但是在 gis 用户那里,他们说这是特定于数据库的......;)

数据库服务器是否会因虚拟化而遭受严重的性能损失?我不了解这项技术的最后细节,但不知何故,它更像是一个“黑匣子”,需要通过硬件进行处理。磁盘访问以及 PostGIS 为我们提供的所有技巧是否会被授予?(聚类、索引等) - 碎片聚类就像没有聚类!

最大的优势是可维护性和可扩展性。如果发生严重的硬件故障,我可以在几分钟内甚至实时迁移到另一台物理机器。

谁有经验,可以给我指点关于这个主题的好的网站或文献?我记得上次 fossgis 中的一些事情以及 ESXi 和本机服务器上的一些内部基准测试,不知何故我无法确定它是否好。

postgresql postgis vmware virtualisation

5
推荐指数
1
解决办法
2406
查看次数

PostgreSQL JSON 字段性能与大文档

Postgre JSON 类型针对大型 JSON 文档的优化情况如何?在 JSON 对象大小为多 MB 且太大而无法有效加载的情况下,我特别关注部分检索(例如获取 JSON 数组的最后 N 个项目或在 JSON dict 中查找一个特定项目的成本)在全。

背景:我正在处理一个数据集,其中每条记录都有 10,000 条注释。我不需要这些注释完全索引,但我需要快速插入记录,所以我考虑将它们存储在 JSON 字段中,而不是在映射表中创建数千个额外的行。

这与 PostgreSQL 9.3 有关。

postgresql postgresql-9.3 json

5
推荐指数
1
解决办法
4653
查看次数

Postgres 流复制滞后,使用大量 CPU 和少量 I/O

我们有 2 个专用的数据库服务器。一个是主,另一个是它的流从。
Postgres 版本9.0.17

我们在两台服务器上都有类似的硬件,并在 Raid 10 中使用 15krpm SAS 驱动器用于数据库集群。唯一的区别是在服务器上我们有 128 GB 内存,而在从服务器上我们有 64 GB 内存。

我们面临的问题是我们的流媒体奴隶落后了。

在流式从属设备上,我们有

postgres=# select pg_last_xlog_receive_location();
 pg_last_xlog_receive_location
-------------------------------
 1F7D/DD3BA000


postgres=# select pg_last_xlog_replay_location();
 pg_last_xlog_replay_location
------------------------------
 1F75/5BE08980
Run Code Online (Sandbox Code Playgroud)

wal received 和 replay 之间的这种差异在不断增加。

请让我知道如何解决此问题。

的输出perf top -u postgres

98.30%  postgres          (.) DropRelFileNodeBuffers
0.20%  postgres          (.) 0x000000000008b05b
0.14%  (kernel)          (k) copy_user_generic_string
0.13%  postgres          (.) hash_seq_search
0.07%  postgres          (.) hash_search_with_hash_value
0.05%  (kernel)          (k) _spin_lock
0.05%  (kernel)          (k) apic_timer_interrupt
0.03%  (kernel)          (k) do_timer
0.03%  postgres …
Run Code Online (Sandbox Code Playgroud)

postgresql replication

5
推荐指数
1
解决办法
8434
查看次数

AWS RDS Postgres 逻辑复制

我正在使用 AWS RDS Postgres 和 RDS 的逻辑复制支持

编辑:注意,这与 PostgreSQL 10 中的逻辑复制功能不同。它是基于相同底层逻辑解码功能的 AWS RDS 功能。

我正在复制 Postgres -> Postgres 。基本上将许多数据库合并为一个数据库。

我遇到的问题是,在一段时间内数据库中没有活动磁盘被填满时。我想控制 WAL 可以使用多少存储空间。我调整了 wal_segments 以保留。仍然磁盘正在填满。我可以设置任何参数来控制磁盘使用,而不是对表进行一些虚拟更新。当前参数是

wal_keep_segments =4 
wal_max_size =128 
wal_min_size 16 
Run Code Online (Sandbox Code Playgroud)

穆拉利

postgresql replication aws amazon-rds

5
推荐指数
0
解决办法
3957
查看次数

Postgres JSONB 的一个很好的用例?

我希望创建一个资产管理系统来跟踪资产(笔记本电脑/台式机、显示器、键盘、鼠标、包、软件键等),基本上是可以分配给员工的任何东西。我的问题是,每种类型都需要跟踪不同的属性。我们会跟踪计算机的一组不同的属性/属性,而不是监视器。我读过 EAV 模式(或大多数人所说的反模式),似乎瘟疫应该避免这种情况。创建包含所有列的单个表似乎很荒谬,并且为出现的每个新类型创建一个新表似乎不是最佳选择。我最近在 Postgres 9.4 中读到了 JSONB。存储可由应用程序处理的 JSON 对象似乎是一个不错的妥协。

这是 JSONB 的好用例吗?或者EAV有意义吗?或者制作一张巨大的桌子,或者为每种类型创建一张桌子?

nosql postgresql database-design eav postgresql-9.4

4
推荐指数
1
解决办法
1766
查看次数

PostgreSQL 7.4 数据损坏

我们正在处理以下情况(PG 版本为 7.4.30):不知何故,pg_database 中缺少一个数据库(psql \l 列表不再显示它)。更多,虽然您仍然可以 \c 到它,\d 表列表只显示表的一小部分。现有表上的 \d 也显示丢失的列。但是,所有表(仍然可见或不可见)都可以通过 psql 查询,结果集中的实际数据和列似乎很好。

我们备份了数据文件夹,并在过去 24 小时内尝试将情况恢复到 pg_dump 可以工作的程度。不幸的是,尽管我们在之前的类似帖子中尝试了大量建议,但我们还没有完全成功。Reindex 没有帮助,但是“VACUUM FULL FREEZE [ANALYZE]”确实释放了已用磁盘空间的 70%(14GB 到 4)。当然,数据库并没有像它应该的那样定期清空:

警告:某些数据库在超过 20 亿个事务中没有被清空详细信息:您可能已经遭受了事务环绕数据丢失。

没有冻结选项的完全真空确实使所有数据库、表和用户可见,但会重复,即 \l 然后显示数据库两次,数据库上的 \d 列出所有表两次。postgres 用户在 pg_user 等中出现两次。如果数据库未列出,pg_dump 将不起作用,如果 postgres 用户重复,则 pg_dump 将不起作用。

这对任何人来说听起来都很熟悉吗?遗憾的是,所有数据似乎都在那里,但我们无法将其恢复并还原到干净的数据库中。我们将不胜感激任何建议。

谢谢!

PS:我也在等待来自pgsql-admin邮件列表的反馈。

postgresql

3
推荐指数
1
解决办法
513
查看次数

如何在postgresql中保存年的间隔

我必须保存几年的间隔,例如:

id intervalYears
1  2014/2015
2  2015/2016
3  2016/2017
Run Code Online (Sandbox Code Playgroud)

等等。那些年就像学术年,所以第一年必须小于第二年,但大于或等于实际年份。

那么,如何保存这种数据类型呢?我应该分开日期并添加一些cotraints吗?

postgresql datatypes

3
推荐指数
1
解决办法
913
查看次数