在尝试访问使用 postgresql 数据库的网站时,甚至在使用 psql 实用程序或 pgadmin3 时,我突然收到此错误。
我的数据库设置为处理 150 个最大连接数:
# SHOW max_connections;
max_connections
-----------------
150
(1 row)
Run Code Online (Sandbox Code Playgroud)
重新启动我的网站所在的 ubuntu 服务器(这实际上是唯一使用连接的东西)后,我看到当前的连接量为 140:
# select count(*) from pg_stat_activity;
count
-------
140
(1 row)
Run Code Online (Sandbox Code Playgroud)
我不明白在重新启动服务器后突然有这么多连接。所以我检查了 postgresql 活动:
# SELECT * FROM pg_stat_activity;
Run Code Online (Sandbox Code Playgroud)
我看到 100 多列具有相同的精确查询,如下所示:
SELECT "reports".* FROM "reports" WHERE (("reports"."time" < '2014-06-28 13:30:42.000000' AND "reports"."unit_id" = 3192)) ORDER BY "reports"."id" DESC LIMIT 1
Run Code Online (Sandbox Code Playgroud)
更重要的是它们都具有相同的客户端地址(我的 Web 服务器)。
该 Web 服务器使用 ruby on rails,连接池为 50。即使连接池为 50,Passenger 进程/prefork apache 配置是单线程的,因此每个进程不能产生 50 个线程和 50 个数据库连接。更重要的是,这是在系统重新启动后发生的,这将所有用户都从我的 …
是否有 PostgreSQL 查询或命令返回查询、表或视图的字段名称和字段类型?
例如,如果应用于简单的 SELECT 查询的解决方案SELECT * from person应该返回如下列表:
Column Name | Column Type
===========================
First Name | character
Last Name | character
Age | integer
Date of Birth | date
Run Code Online (Sandbox Code Playgroud)
我查看了information_schema下面的答案中描述的视图,它似乎很好地涵盖了表格,我怀疑它也涵盖了视图,但我还没有检查过。
最后一个是任意但有效的 SELECT 查询,例如涉及数据库中的JOINS、 UNIONS等。是否有内置过程或其他存储过程或脚本可以为任何有效的 QUERY 返回相同的结果?
我正在开发一个程序来创建数据和查询表单,数据验证和对返回的数据执行函数需要这些信息。
这是对上一个问题的评论的衍生:
使用 PostgreSQL 9.4,Recheck Cond:在EXPLAIN.
就像在EXPLAIN引用问题的输出中一样:
Run Code Online (Sandbox Code Playgroud)-> Bitmap Heap Scan on table_three (cost=2446.92..19686.74 rows=8159 width=7) Recheck Cond: (("timestamp" > (now() - '30 days'::interval)) AND (client_id > 0)) -> BitmapAnd (cost=2446.92..2446.92 rows=8159 width=0) -> Bitmap Index Scan on table_one_timestamp_idx (cost=0.00..1040.00 rows=79941 width=0) Index Cond: ("timestamp" > (now() - '30 days'::interval)) -> Bitmap Index Scan on fki_table_three_client_id (cost=0.00..1406.05 rows=107978 width=0) Index Cond: (client_id > 0)
或者在EXPLAIN ANALYZE一个简单的大表(很少work_mem)的输出中:
EXPLAIN ANALYZE …Run Code Online (Sandbox Code Playgroud) 我想编写一个检查 PostgreSQL 表中使用的排序规则的脚本,但谷歌搜索Postgresql detect collation对我来说效果不佳,而且文档并没有让搜索变得容易。
谁能告诉我如何检查这个?
我有两张桌子employee和phones. 一个员工可以有 0 到 n 个电话号码。我想列出员工姓名及其电话号码。我正在使用以下运行良好的查询。
SELECT empname,array_agg(phonenumber) AS phonenumbers
FROM employee LEFT OUTER JOIN phones ON employee.empid = phones.empid
GROUP BY employee.empid
Run Code Online (Sandbox Code Playgroud)

员工表可能包含大量行。我想一次只取一些员工。例如,我想用他们的电话号码获取 3 名员工。我正在尝试运行此查询。
SELECT empname,array_agg(phonenumber) AS phonenumbers
FROM
(SELECT * FROM employee ORDER BY empname LIMIT 3 OFFSET 0) AS employee
LEFT OUTER JOIN phones ON employee.empid = phones.empid
GROUP BY employee.empid
Run Code Online (Sandbox Code Playgroud)
但我收到这个错误。ERROR: column "employee.empname" must appear in the GROUP BY clause or be used in an aggregate function
两个查询之间的唯一区别是我在后者中使用子查询来限制加入之前的行。我该如何解决这个错误?
我在一些时间序列数据上有一个简单的选择:
SELECT DISTINCT user_id
FROM events
WHERE project_id = 6
AND time > '2015-01-11 8:00:00'
AND time < '2015-02-10 8:00:00';
Run Code Online (Sandbox Code Playgroud)
它需要112秒。这是查询计划:
http://explain.depesz.com/s/NTyA
我的应用程序必须执行许多不同的操作并像这样计数。有没有更快的方法来获取这种数据?
postgresql performance optimization postgresql-9.3 amazon-rds query-performance
例如,当我使用返回记录 ID 的查询时
INSERT INTO projects(name)
VALUES (name1), (name2), (name3) returning id;
Run Code Online (Sandbox Code Playgroud)
产生输出:
1
2
3
Run Code Online (Sandbox Code Playgroud)
这个 ids 会指向相应的插入值吗?
1 -> name1
2 -> name2
3 -> name3
Run Code Online (Sandbox Code Playgroud) 我有我认为的时间序列数据集(如果我错了,请纠正我),它有一堆相关的值。
一个例子是对汽车进行建模并在旅途中跟踪它的各种属性。例如:
时间戳 | 速度 | 距离旅行| 温度 | 等等
存储这些数据的最佳方法是什么,以便 Web 应用程序可以有效地查询字段以查找最大值、最小值并随时间绘制每个数据集?
我开始了一种解析数据转储并缓存结果的幼稚方法,这样它们就永远不必存储。然而,在玩了一会儿之后,由于内存限制,该解决方案似乎无法长期扩展,如果要清除缓存,则需要重新解析和重新缓存所有数据。
另外,假设每秒跟踪一次数据,很少有可能出现 10 小时以上的数据集,是否通常建议每 N 秒采样一次来截断数据集?
尝试删除包含无效时间戳的元组
DELETE FROM comments WHERE date > '1 Jan 9999' OR date < '1 Jan 2000' OR date_found > '1 Jan 9999' OR date_found < '1 Jan 2000';
Run Code Online (Sandbox Code Playgroud)
结束于
ERROR: attempted to delete invisible tuple
Run Code Online (Sandbox Code Playgroud)
有一个 2009 年的邮件列表讨论了完全相同的错误消息,OP 修复了它,但我没有找到关于他是如何做到的或可能导致此错误的原因的解释。
由于谷歌搜索量不足以及我对 PostgreSQL 的了解有限,我很无助。
我在 Debian 8 上运行了 PostgreSQL 9.5.5 服务器(~4TB 数据,所有默认设置,内存限制除外),当时操作系统内核崩溃了——可能是在重建 /dev/md1 时交换所在的位置。在此之前,PostgreSQL 用一个 400GB 的日志文件吃光了几乎所有的磁盘空间。操作系统再也没有启动过,磁盘检查没问题,所以我从 LiveCD 启动并将每个块设备备份到映像,以防万一。我已经成功地从 /dev/md2 重建了 / 目录,fsck 显示了一个干净的文件系统,并且我已经将 PGDATA 文件夹备份到了一个外部硬盘上。
在我格式化 md 设备并重新安装操作系统和新的 postgresql-9.5 之后,我停止了 PostgreSQL 服务器,将 PGDATA 文件夹移动并更改为 …
postgresql recovery corruption disaster-recovery postgresql-9.5
postgresql ×10
aggregate ×1
amazon-rds ×1
architecture ×1
catalogs ×1
collation ×1
corruption ×1
datatypes ×1
ddl ×1
dml ×1
fields ×1
group-by ×1
index ×1
insert ×1
optimization ×1
order-by ×1
performance ×1
permissions ×1
recovery ×1
subquery ×1
windows ×1