我假设可以减慢 postgres 数据库中特定用户的查询访问速度。你会怎么做?有没有办法让用户看到这样的设置已经被放置在他们身上,以及用户可以做些什么来克服它,如果有的话。
基本上我有兴趣在每个用户的基础上限制资源以防止不良行为者滥用系统。
我正在将数据插入临时表并且它工作正常。下面是相同的 psedo sql 代码
with cte as(
)
select *
into temp_table
from cte
Run Code Online (Sandbox Code Playgroud)
使用这种方法,数据可以非常快地插入临时表中。根据我的知识,一旦会话关闭,临时表就会被删除。但是即使关闭了我的 pgadmin 连接,我的临时表也不会被删除。
我的问题是 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 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。
任何指针?
我正在使用 Postgres 9.3。
我有 2 个表 :authn_session和customer. 每个都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) 我有一组数组 [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#
我正在处理一个使用instagram 密钥格式的项目。
TL;DR 64 位整数 ID。
它们将用于查找,我们也喜欢它们用于排序和批处理,因为它们会自然地按创建时间排序。
这些值介于 2^63 和 2^64 之间,因此(只是)太大而无法放入BIGINT.
因此,我们的存储选项似乎是numeric(20)或varchar。varchar不是那么理想,因为我们必须将它们归零才能进行排序才能工作,但是使用数字进行查找会影响性能吗?
由于一堆奇怪的跟踪文件不断写入系统日志,我试图禁用 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) 我有一个包含一些行的表,我尝试使用以下命令添加一个标识列:
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 中有更好的方法吗?
我正在处理一组可以移除孩子的关系,但我显然不想失去孙子和父母之间的联系。我确实考虑过将孩子标记为“已故”(在这篇文章中使用相关术语),但后来我最终会被困在我的数据库中的一堆已故孩子,谁想要这样(只是为了保持关系)?
如果删除父项,则删除其所有后代。此外,它的工作方式类似于“正常”关系,其中孙子和子项始终具有相同的顶级父级。层次结构固定为 3 个级别(如上所示)。最后,Parent、Child 和 Grandchild 都是不同的类型(例如,我们不是在谈论 3 个“人类”,他们没有相同的基础)。
然而,让孙子跟踪父母感觉有点奇怪,因为这种关系通常可以从父子关系中推导出来。虽然,我想不出另一种方法。
这个模型有效吗?或者有不同的方法吗?
postgresql ×10
performance ×2
alter-table ×1
array ×1
datatypes ×1
deadlock ×1
erd ×1
foreign-key ×1
identity ×1
index ×1
locking ×1
orm ×1
tcpip ×1
ubuntu ×1