标签: postgresql

你能减慢对 postgres 数据库中特定用户的查询吗

我假设可以减慢 postgres 数据库中特定用户的查询访问速度。你会怎么做?有没有办法让用户看到这样的设置已经被放置在他们身上,以及用户可以做些什么来克服它,如果有的话。

基本上我有兴趣在每个用户的基础上限制资源以防止不良行为者滥用系统。

postgresql performance postgresql-performance

6
推荐指数
1
解决办法
1459
查看次数

Postgresql:当在 postgresql 中删除临时表时

我正在将数据插入临时表并且它工作正常。下面是相同的 psedo sql 代码

with cte as(

)
select * 
into temp_table
from cte
Run Code Online (Sandbox Code Playgroud)

使用这种方法,数据可以非常快地插入临时表中。根据我的知识,一旦会话关闭,临时表就会被删除。但是即使关闭了我的 pgadmin 连接,我的临时表也不会被删除。

我的问题是 postgresql 中的临时表是自动删除还是保留在磁盘空间上,直到我们删除它们。

问候,

桑杰·萨伦赫

postgresql temporary-tables

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

PostgreSQL 中的慢查询从两列中定义的范围之间选择单行

我导入了ip2location_db11 lite 数据库的副本,其中包含 3,319,097 行,并且我希望优化数字范围查询,其中低值和高值位于表 ( ip_from, ip_to) 的不同列中。

导入数据库:

CREATE TABLE ip2location_db11
(
  ip_from bigint NOT NULL, -- First IP address in netblock.
  ip_to bigint NOT NULL, -- Last IP address in netblock.
  country_code character(2) NOT NULL, -- Two-character country code based on ISO 3166.
  country_name character varying(64) NOT NULL, -- Country name based on ISO 3166.
  region_name character varying(128) NOT NULL, -- Region or state name.
  city_name character varying(128) NOT NULL, -- City name. …
Run Code Online (Sandbox Code Playgroud)

postgresql performance execution-plan query-performance

6
推荐指数
1
解决办法
689
查看次数

Ubuntu 17.10 的 postgresql 10 有技巧吗?

PostgreSQL 10 在 Ubuntu 17.10 上可用吗?

我检查了 APT 上的文件夹是否确实存在:http : //apt.postgresql.org/pub/repos/apt/dists/artful-pgdg/10/

但是在我这样做之后:

sudo add-apt-repository "deb http://apt.postgresql.org/pub/repos/apt/ artful-pgdg main"
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install postgresql-10
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package postgresql-10
Run Code Online (Sandbox Code Playgroud)

上述步骤适用于 Ubuntu 16.04(带有xenial-pgdg),但不适用于 17.10。

任何指针?

postgresql ubuntu postgresql-10

6
推荐指数
1
解决办法
5003
查看次数

一组表上的同时更新和删除是否会导致使用 AccessExclusiveLock?

我正在使用 Postgres 9.3。

我有 2 个表 :authn_sessioncustomer. 每个都authn_session属于 a customer(因此有 acustomer_id作为列,这是客户的 FK id)。

注意:这些表包含对其他表和索引的额外 FK 引用。

现在,我开始 2 个不同的事务,它们按照下面提到的顺序执行以下操作:

发送:1

BEGIN; 
UPDATE customer 
    SET customer__created_by = 
            (case when customer__created_by = 1 then 5 
             else customer__created_by end), 
        customer__modified_by = 
            (case when customer__modified_by = 1 then 5 
             else customer__modified_by end);
UPDATE authn_session 
    SET authn_session__created_by = 
            (case when authn_session__created_by = 1 then 5
             else authn_session__created_by end),
        authn_session__modified_by = 
            (case when authn_session__modified_by = 1 …
Run Code Online (Sandbox Code Playgroud)

postgresql deadlock locking postgresql-9.3

6
推荐指数
1
解决办法
611
查看次数

如何检查数组的多维数组包含数组?

我有一组数组 [ID, TYPE]。

所有值都是整数。数组可以是integer[]jsonb类型。

SELECT array[[442,2],[443,2]]

SELECT to_jsonb(array[[1,2],[3,4]])
Run Code Online (Sandbox Code Playgroud)

如何检查此数组是否包含数组 [443,2]?

编辑 这里描述的检查方法之一。

1# SELECT array[[442,2],[443,2]] @> array[443,2] -- returns True
2# SELECT array[[442,2],[443,2]] @> array[2,443] -- returns True too
Run Code Online (Sandbox Code Playgroud)

对于我的情况,我想得到 False 2#

postgresql array

6
推荐指数
1
解决办法
1906
查看次数

数字与字符串的查找性能

我正在处理一个使用instagram 密钥格式的项目

TL;DR 64 位整数 ID。

它们将用于查找,我们也喜欢它们用于排序和批处理,因为它们会自然地按创建时间排序。

这些值介于 2^63 和 2^64 之间,因此(只是)太大而无法放入BIGINT.

因此,我们的存储选项似乎是numeric(20)varcharvarchar不是那么理想,因为我们必须将它们归零才能进行排序才能工作,但是使用数字进行查找会影响性能吗?

postgresql index datatypes unique-constraint

6
推荐指数
2
解决办法
3326
查看次数

如何禁用 Postgres 侦听 IPv6?

由于一堆奇怪的跟踪文件不断写入系统日志,我试图禁用 Postgres 侦听 IPv6。

我不想在操作系统本身中禁用 IPv6,因此在看到提及跟踪消息并找到博客文章Disable IPv6 Postgres 和 PGBouncer 后,我已按照第 2 步进行更新postgresql.conf(将“*”更改为“0.0.0.0 ”):

# grep listen postgresql.conf
listen_addresses = '0.0.0.0'
Run Code Online (Sandbox Code Playgroud)

我也在里面找到了这个条目pg_hba.conf并注释掉了它:

# IPv6 local connections:
#host    all             all             ::1/128                 trust
Run Code Online (Sandbox Code Playgroud)

我重新启动了 Postgres。netstat似乎表明它不再监听 IPv6:

# netstat -ntl | grep 5432
tcp        0      0 0.0.0.0:5432                0.0.0.0:*                   LISTEN
Run Code Online (Sandbox Code Playgroud)

似乎lsof有不同的想法:

# lsof -i6 | grep postgres
postmaste 37921 postgres    8u  IPv6 39125550      0t0  UDP 
localhost:38892->localhost:38892
postmaste 37944 postgres    8u  IPv6 39125550      0t0  UDP …
Run Code Online (Sandbox Code Playgroud)

postgresql configuration tcpip postgresql-9.3

6
推荐指数
1
解决办法
8966
查看次数

如何将 PostgreSQL 10 标识列添加到带有行的现有表中?

我有一个包含一些行的表,我尝试使用以下命令添加一个标识列:

ALTER TABLE sourceTable 
    ADD COLUMN ogc_fid int                
        GENERATED BY DEFAULT AS IDENTITY;
Run Code Online (Sandbox Code Playgroud)

建议使用上面的命令来回答这个问题:

但我得到:

错误:“ogc_fid”列包含空值
SQL 状态:23502

看起来表的现有行没有自动生成标识,但会导致此错误(如果表没有行,该命令可以正常工作)。有任何想法吗?我是否必须首先为我添加的列生成值DEFAULT nextval('some_sequence')?或者在 PostgreSQL 10 中有更好的方法吗?

postgresql alter-table identity postgresql-10

6
推荐指数
1
解决办法
1344
查看次数

如果可以删除孩子,如何建模父 -> 子 -> 孙

我正在处理一组可以移除孩子的关系,但我显然不想失去孙子和父母之间的联系。我确实考虑过将孩子标记为“已故”(在这篇文章中使用相关术语),但后来我最终会被困在我的数据库中的一堆已故孩子,谁想要这样(只是为了保持关系)?

关系的 ERD

如果删除父项,则删除其所有后代。此外,它的工作方式类似于“正常”关系,其中孙子和子项始终具有相同的顶级父级。层次结构固定为 3 个级别(如上所示)。最后,Parent、Child 和 Grandchild 都是不同的类型(例如,我们不是在谈论 3 个“人类”,他们没有相同的基础)。

然而,让孙子跟踪父母感觉有点奇怪,因为这种关系通常可以从父子关系中推导出来。虽然,我想不出另一种方法。

这个模型有效吗?或者有不同的方法吗?

postgresql erd foreign-key database-design orm

6
推荐指数
3
解决办法
2486
查看次数