标签: postgresql

如果查询在逻辑上相似,为什么计划不同?

我写了两个函数来回答七周内七个数据库中第 3 天的第一个作业问题。

创建一个存储过程,您可以在其中输入您喜欢的电影名称或演员的名字,它会根据演员主演的电影或类似类型的电影返回前五名的建议。

我的第一次尝试是正确的,但速度很慢。返回结果最多可能需要 2000 毫秒。

CREATE OR REPLACE FUNCTION suggest_movies(IN query text, IN result_limit integer DEFAULT 5)
  RETURNS TABLE(movie_id integer, title text) AS
$BODY$
WITH suggestions AS (

  SELECT
    actors.name AS entity_term,
    movies.movie_id AS suggestion_id,
    movies.title AS suggestion_title,
    1 AS rank
  FROM actors
  INNER JOIN movies_actors ON (actors.actor_id = movies_actors.actor_id)
  INNER JOIN movies ON (movies.movie_id = movies_actors.movie_id)

  UNION ALL

  SELECT
    searches.title AS entity_term,
    suggestions.movie_id AS suggestion_id,
    suggestions.title AS suggestion_title,
    RANK() OVER (PARTITION BY searches.movie_id ORDER BY …
Run Code Online (Sandbox Code Playgroud)

postgresql optimization postgresql-9.3

21
推荐指数
2
解决办法
2519
查看次数

Get WAL files from AWS RDS PostgreSQL instance

We have a Postgres RDS instance on Amazon Web Services. We have automatic backups enabled, and we take snapshots on a daily basis. We would like to generate a local 'up-to-date' backup of the RDS instance that we can manage ourselves. Running pg_dump against the instance is not sufficient because we want to be able to restore the database to any point in time. We would prefer to have a local backup of RDS and all WAL files since that …

postgresql amazon-ec2

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

PostgreSQL 最大化性能 SSD

我将拥有一个巨大的 PostgreSQL 9.3 数据库,其中包含许多表,每个表有超过 1 亿个条目。该数据库将基本上是只读的(一旦我填写了所有必要的表并构建了索引,不再对 DB 进行写操作)和单用户访问(从 localhost 运行和基准测试多个查询),因为将使用 DB仅用于研究目的。查询将始终在整数 DB 字段上使用 JOIN。

为此,我可能会购买 SSD (256-512GB)。我以前没有用过 SSD 做数据库,所以有什么我应该害怕的吗?我可以将整个数据库放在 SSD 上,还是只放在索引上?为 SSD 调整 PostgreSQL 是否需要任何特别的建议/教程?请注意,我有一个配备 i7 和 32Gb 内存的不错的工作站,所以也许您也可以提供一些建议。

postgresql postgresql-9.3

21
推荐指数
2
解决办法
3万
查看次数

交易中的交易

例如,如果调用下面的脚本,PostgreSQL 会显示什么行为

BEGIN;
SELECT * FROM foo;
INSERT INTO foo(name) VALUES ('bar');
BEGIN; <- The point of interest
END;
Run Code Online (Sandbox Code Playgroud)

PostgreSQL 会丢弃第二个BEGIN还是隐式决定提交,然后BEGIN END在最后将块作为单独的事务运行?

postgresql transaction postgresql-9.3

21
推荐指数
3
解决办法
3万
查看次数

大表中的慢索引扫描

2020-08-04 更新:

由于显然仍在定期查看此答案,因此我想提供有关情况的最新信息。我们目前正在使用带有表分区的 PG 11,timestamp并且可以轻松处理表中的数十亿行。仅索引扫描可以挽救生命,没有它就不可能。


使用 PostgreSQL 9.2,我在相对较大的表(200 多万行)上进行慢速查询时遇到问题。我没有尝试任何疯狂的事情,只是增加了历史价值。下面是查询和查询计划输出。

我的表布局:

                                   Table "public.energy_energyentry"
  Column   |           Type           |                            Modifiers
-----------+--------------------------+-----------------------------------------------------------------
 id        | integer                  | not null default nextval('energy_energyentry_id_seq'::regclass)
 prop_id   | integer                  | not null
 timestamp | timestamp with time zone | not null
 value     | double precision         | not null
Indexes:
    "energy_energyentry_pkey" PRIMARY KEY, btree (id)
    "energy_energyentry_prop_id" btree (prop_id)
    "energy_energyentry_prop_id_timestamp_idx" btree (prop_id, "timestamp")
Foreign-key constraints:
    "energy_energyentry_prop_id_fkey" FOREIGN KEY (prop_id) REFERENCES gateway_peripheralproperty(id) DEFERRABLE INITIALLY DEFERRED
Run Code Online (Sandbox Code Playgroud)

数据范围从2012-01-01至今,新数据不断增加。prop_id外键中大约有 2.2k 个不同的值,均匀分布。

我注意到行估计值相差不远,但成本估计值似乎大了 …

postgresql performance index optimization postgresql-performance

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

Postgresql 不接受复制连接

普通的旧流复制。PostgreSQL:9.2.7 Windows 8.1 64 位

我的主要和次要集群在同一台Windows 机器上。我已经完成了pg_start_backup()和所有事情,所以两个节点都有完全相同的数据。

现在复制的问题是从服务器的“复制连接”无法连接到主服务器,但我可以使用 psql shell 使用相同的参数进行连接。我认为罪魁祸首是 slave 的 recovery.conf 中的连接字符串:

primary_conninfo = 'host = 127.0.0.1 port = 5432 user = postgres password = postgres'
Run Code Online (Sandbox Code Playgroud)

我尝试了 localhost, 0.0.0.0, lan IP 除了 pg log 之外的所有内容:

 FATAL:  could not connect to the primary server: FATAL:  no pg_hba.conf entry for replication connection from host "127.0.0.1", user "postgres", SSL off
Run Code Online (Sandbox Code Playgroud)

现在看看我的Master的pg_hba.conf:

host     all     all     0.0.0.0/0   trust
host    all             postgres             127.0.0.1/0               trust
# IPv6 local connections:
host …
Run Code Online (Sandbox Code Playgroud)

postgresql replication

21
推荐指数
2
解决办法
4万
查看次数

有没有好的免费工具来管理 PostgreSQL 数据库?

之前用phpmyadmin管理过一个MySQL数据库,现在想管理一个PostgreSQL数据库。PostgreSQL 数据库在服务器上,而不是网络服务器上,所以我不使用 PHP。

有没有好的免费工具来管理 PostgreSQL 数据库?

我曾尝试使用 pgAdmin III,但与我以前使用过的 phpmyadmin 相比,它远非直观的应用程序。PostgreSQL DBA 通常使用什么?他们使用像 pgAdmin III 这样的图形工具还是主要是命令行工具?

postgresql tools management

20
推荐指数
4
解决办法
2万
查看次数

如何使用 Postgres 在 jsonb 列上使用全文搜索?

所以我有一jsonb列有这样的条目:https : //pastebin.com/LxJ8rKk4

有没有办法对整个jsonb列实现全文搜索?

postgresql full-text-search json

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

PostgreSQL - 在级联上截断表并用 1 重置所有层次序列

在级联上截断表时,有什么方法可以重置所有表序列。

我已经阅读了这篇文章如何在 postgres 中重置序列并用新数据填充 id 列?

ALTER SEQUENCE seq RESTART WITH 1;
UPDATE t SET idcolumn=nextval('seq');
Run Code Online (Sandbox Code Playgroud)

它仅适用于一个序列,但我的问题是重新启动截断表的所有序列。

考虑当我使用TRUNCATE sch.mytable CASCADE;它影响3个相关表,这意味着三个序列,是否有任何解决方案可以一次性重新启动此序列。

postgresql sequence truncate

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

在 DBeaver 中如何查看 PostgreSQL 消息(例如 RAISE NOTICE)?

我认为这是一个 DBeaver UI/配置问题,但是在执行脚本 (Alt-X) 时我看不到消息的位置。

在 PGAdminIII 中,我会执行一个脚本并查看NOTICE输出: 在此处输入图片说明

在 DBeaver 中,相同的脚本不会在“统计”选项卡中输出。但我不确定这是否是我应该寻找消息的地方:
在此处输入图片说明

postgresql dbeaver

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