问题标签 [postgres-9.6]
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 - 双 Postgres 实例 config_file 问题
我有一个服务器,它有一个我正在使用的 postgres 9.4 实例。我安装了另一个版本的 postgres (9.6),但遇到了一个问题。
为了初始化新的数据库,我跑了
sudo -u postgres /usr/pgsql-9.6/bin/initdb -D /var/lib/pgsql/9.6/data/
但是当我检查 sql 时,我得到以下信息。
我可以看到它正在使用我的 9.4,但我不确定如何纠正这个问题,也没有设法找到任何指示如何这样做的资源。
任何帮助,将不胜感激。
postgresql - 为什么通过 Postgres file_fdw 从二进制文件查询比文本文件使用更多的主内存空间?
我正在使用 Postgres 文件数据包装器(file_fdw)从远程文件执行查询。有趣的是,我看到如果 Postgres 对二进制文件执行查询,它使用的主内存空间比文本文件(如 .csv)多。谁能确认为什么会这样?有没有办法优化这个?
我的文件包含两列(id | geometry),这里几何表示多边形。所以,我的外表由两列组成。我已经在 CSV 文件和 Postgres 兼容的二进制文件上使用 ST_Overlaps() 和 ST_Contains() 等连接查询进行了测试。
SELECT COUNT(*) FROM ftable1 a, ftable2 b WHERE ST_Overlaps(a.geom, b.geom);
我使用htop检查了 PostgreSQL 的内存使用情况,我看到如果 Postgres 对二进制文件执行查询,它使用的主内存空间比 CSV 文件多。例如,如果 CSV 为 500MB,那么二进制文件几乎为 1GB。为什么?
postgresql - Postgres中的默认值和设置默认值有什么区别?
我是 Postgres 的新手,我正在尝试在 Postgres 中使用以下查询:
alter table tablename add column col1 enum('r', 'g', 'b') not null set default 'r';
它给了我一个错误。当我将其更改为default
而不是 时set default
,它工作正常。
只是想知道可能是什么原因!
postgresql - psql:符号查找错误:psql:未定义符号:PQsetErrorContextVisibility
我将我的 postgres 版本从 9.2.24 切换到 9.6,因为我需要 jsonb 兼容性以及其他最近的功能。我在centos 7上运行一个虚拟机。
我决定擦除所有现有的 postgres 实例(因为它正在暂存,它们几乎是空的),然后安装了 9.6。但是,一旦我进入 postgres shell,我在输入时收到以下错误psql
:
psql: symbol lookup error: psql: undefined symbol: PQsetErrorContextVisibility
我假设我需要更改 psql 正在寻找的路径,以便它正确连接,但我不确定指向它的位置。
注意:ls
在 postgres bash 中显示 2 个目录和 1 个文件9.6 data and initdb.log
。
sql - postgres SQL 使用返回值来更新另一个表
抱歉,如果这是重复的(和/或微不足道的) - 由于一般不熟悉 SQL,我无法很好地搜索。
用简单的英语我想做什么:
我有一个表table1
,其中matched_id
列的一部分是NULL
. 对于这些行,我希望在table2
使用值val1
和val2
从行中创建table1
一行,然后返回id
新创建的行的 s以table2
更新.matched_id
table1
到目前为止,我的查询尝试table2
为我需要的条目创建了新行,但是matched_id
行的值table1
都设置为相同的值(我相信的第一次插入的值),而不是它们对应的行table2
:
arrays - 从 JSONB 插入 uuid 会导致 `error: invalid input syntax for uuid: `
我正在尝试将 jsonb 数组中的一系列值插入到 postgres 中。但是,我得到了错误error: invalid input syntax for uuid:
。
我的数据看起来像这样
我的功能的相关部分如下。@codes 是传递给函数的参数。
即使铸造似乎也不能解决问题。
如果我不投,我会收到此错误error: column "column_name" is of type uuid but expression is of type text
。
sql - 优化 Postgres 表中的存储空间、查询速度、JSON 列数据
考虑下表,该表记录了属于不同类别的不同公司的不同产品的价格变化。
要明确的列值将是:
category_id
- 一个单独的表将 id(唯一的 bigint 值)映射到类别名称 - 100 个类别
(电子、时尚、健康、运动、玩具、书籍)
industry_id
- 一个单独的表将 id(唯一的 bigint 值)映射到行业名称 - 一个类别中的数千个行业
(诺基亚、苹果、微软、PeterEngland、Rubik、Nivia、中远)
product_id
- 一个单独的表格将 id(唯一的 bigint 值)映射到产品名称 - 一个行业中的数百万种产品
time
(unix time as bigint) - 价格被修改的时间,
price
- 数千个不同的值 - (200, 10000, 14999, 30599, 450)
product_info
- 包含产品额外详细信息的 json(键/值对的数量可能会有所不同)
以多种方式查询该表以分析产品价格在一天/周/月作为小时/天/周/月范围内变化的趋势,作为图表。趋势可能基于否。的产品,正在修改的独特产品。
例如谷歌样本趋势
按原样(as string
)存储 JSON 会占用更多存储空间。因此,我尝试在 json 中存储键值,并在单独的表中使用递增的序列 ID,并使用这些 ID。
喜欢
{seller:"ABC Assured", discount:10, model:XYZ, EMIoption:true, EMIvalue:12, festival_offer:28, market_stat:comingsoon, curreny: rupees}
变成
{"1":1, "2":2", "3":3, "4":4, "5":5, "6":6, "7":7, "25":107}
{seller:"Prime seller", discount:10, model:XYZ, EMIoption:true, EMIvalue:12, festival_offer:28, market_stat:comingsoon, curreny: "canadian dollars"}
变成
{"1":110, "2":2", "3":3, "4":4, "5":5, "6":6, "7":7, "25":109}
对于大约 20M 的数据集,它减少了大约 1.5GB。
增加键值基数,增加序列号。所以我尝试将十进制存储为十六进制。
{"1":1, "2":2", "3":3, "4":4, "5":5, "6":6, "7":7, "25":107}
变成
{"1":1, "2":2", "3":3, "4":4, "5":5, "6":6, "7":7, "19":"6B"}
{"1":110, "2":2", "3":106, "4":4, "5":5, "6":6, "7":7, "25":109}
变成
{"1":, "2":2", "3":"6A", "4":4, "5":5, "6":6, "7":7, "19":"6D"}
将这些十进制整数存储为十六进制整数也是如此。
- 进一步节省存储空间?(因为在视觉上它似乎被压缩了)
- JSON是保留key-value的数据类型,还是存储为字符串?
- 使数据压缩?
- 提高读取性能?
- 或者无论如何它可以改进?(索引,或任何?)
在普通的 psql 应用程序中,查询需要几分钟才能完成。由于它符合时间序列数据,我们使用 TimescaleDB 扩展,它的分片机制提高了查询执行,但我们需要亚秒级的结果。
查询样本: 每天检查给定类别中的所有产品的价格更改为 500 的次数,按月分组。
检查在过去 10 个月中按月分组的给定类别中的所有产品的价格更改为 (100,200,300,400,500,600,700,800,900,1000) 中的任何一个的次数。
在给定的类别中选择在给定时间范围内价格已更改的产品详细信息
在给定类别中选择价格在给定时间范围内发生变化的行业和产品 ID 详细信息
选择产品价格变化详情,在折扣 10% 的时间范围内,在特定类别中
选择产品价格变化详情,在特定卖家销售的时间范围内,在特定类别中
在大多数情况下,查询不会包含category_id
在选择列中。
ubuntu-16.04 - 在 Ubuntu 16.04 上正确启动和停止 pgAdmin4
我正在开展一个项目,该项目涉及创建用于询问 Zabbix 的仪表板(SpringBoot + angular.js webapp)。为了测试的目的,我安装了 Ubuntu 16.04 LTS (VirtualBox)、PostgreSQL 9.6,在其中我通过命令行导入了客户制作的数据库转储 (pg_dump),还安装了 GUI pgAdmin4 并将其连接到我恢复的数据库。
现在我以这种方式安装了 pgAdmin4:
作为根:
启动后
我看到以下输出:
现在,如果我在上面的地址启动 Firefox,我会看到 GUI,并且我已经导入了我的 postgres db
问题是:
1)如何正确停止服务?我的意思是 pgAdmin GUI 不是 postgres DBMS
2)要重新开始,我做了这个程序:
这是对的吗??
3)有时,在一段时间不活动后,ubuntu 冻结,无法活动,我只能通过 virtualbox 菜单关闭机器。你知道为什么吗?
你能帮助我吗??
非常感谢
postgresql - Postgres 光标目标
对于创建 pg9.6 结构以保存来自多个连接表的多行作为游标目标的最佳实践,我将不胜感激。文档对此并不清楚,其他搜索似乎表明使用临时表,如下所示。
postgresql - 查询中的 PostgreSQL 稳定函数
我有一些由几个表组成的数据模型,我需要过滤它们。
它是两个函数funcFast
和funcList
。funcFast
可以快速返回结果是表是否需要过滤funcList
。funcList
返回允许的 ID 列表。我将函数标记为 STABLE,但它们的运行速度没有我预期的那么快:)
我创建了几个示例函数:
和测试。
案例 1. 仅按快速功能工作正常过滤:
查询计划为:
案例 2. 仅按慢功能过滤也可以:
查询计划为:
案例 3。但是结合了两个函数,我希望最好的情况应该接近 [案例 1],最坏的情况应该接近 [案例 2],但是:
查询计划为:
我在这里缺少什么?为什么使用两个一起查询的函数运行时间更长,如何解决?