AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-5705

guettli's questions

Martin Hope
guettli
Asked: 2021-09-15 03:33:33 +0800 CST

显示所有指向特定行的 ForeignKey

  • 1

如何列出指向给定表中特定行的所有外键(表 + 列 + pk-of-that-row)。

示例:表“用户”具有 PK '1234' 的行。

我想查看所有指向这个 ID 为“1234”的用户的 FK。

我使用 PostgreSQL 12.8。

postgresql foreign-key
  • 1 个回答
  • 37 Views
Martin Hope
guettli
Asked: 2021-03-03 02:12:25 +0800 CST

用于运行测试的 PostgreSQL(持久性并不重要)

  • 1

我们的 Django 测试变得越来越慢,很多时间都花在cursor.execue().

现在大致有两种方法:重写测试以模拟 ORM,或者使 PostgreSQL 更快。

这个问题是关于“让 PostgreSQL 更快”。

如果 ACID 的 D (Durability) 不重要,我能做些什么来提高 PostgreSQL 的速度。一切都可以保存在 RAM 中。

约束:这个问题是关于你可以在不修改 Django/Python/SQL 代码的情况下做什么。

postgresql postgresql-performance
  • 1 个回答
  • 99 Views
Martin Hope
guettli
Asked: 2020-12-22 12:57:46 +0800 CST

膳食计划:允许在上午 9 点之前点餐

  • 1

想象一下,你有一个餐饮服务,每天都有不同的顾客可以点餐。

Mon, Dec 12: Pasta
Tue, Dec 13: Pizza
Wed, Dec 14: Gnocci

上午 9 点前可下单。

这意味着客户可以在周一上午 8 点订购今天的意大利面,但在上午 9 点 15 分,他们不再被允许订购今天的面食。

如何处理这个问题是使用 PostgreSQL。

我看到两种方法:

  1. 创建一个将“orderable”列切换为 False 的 cron 作业。
  2. 创建一个动态计算字段“可订购”的视图。

是否有可行的第三种或第四种方式?

哪种方式简单而健壮?

postgresql datetime
  • 1 个回答
  • 38 Views
Martin Hope
guettli
Asked: 2020-11-13 11:57:42 +0800 CST

锁定:允许 INSERT 但不允许 UPDATE

  • 0

我想锁定一个表:INSERT应该被允许,但UPDATE应该被禁用。

我正在使用当前的 PostgreSQL 版本。

我阅读了咨询锁和显式锁定。也许我是盲人,但我找不到适合我目标的解决方案。

以下是我的用例的详细信息:

有一个表大致类似于日志记录:多个进程同时向表中添加新行。

一个脚本每小时处理一次添加的数据。

现在我想确定这个脚本有一个固定的工作集。不应对脚本正在处理的行进行任何修改。但是如果在脚本运行时添加新行也没关系。这些行通过脚本的下一次调用获取进程。

postgresql locking
  • 2 个回答
  • 480 Views
Martin Hope
guettli
Asked: 2019-02-28 00:45:23 +0800 CST

在 ascii 中表示基数的最常见方式

  • 6

我知道有几种符号可以表示实体之间的基数。

但是有没有一种务实的通用方式来表达 ascii 中的基数?

示例:用户 -- 组。一个用户可以有多个组,一个组可以有多个用户。

我查看了此页面:https://en.wikipedia.org/wiki/Cardinality_(data_modeling)

例如:一对多“订单”←→“订单项”

以下是一些表达基数的图形方式:

https://en.wikipedia.org/wiki/Entity%E2%80%93relationship_model#Cardinalities

表示基数的最常用方法是什么?

这有标准/ rfc吗?

terminology
  • 3 个回答
  • 806 Views
Martin Hope
guettli
Asked: 2018-08-31 06:31:43 +0800 CST

“方向”的列类型是什么?

  • 0

我想创建一个表,其中有一列名为“方向”。

此列是“in”或“out”。它不可为空,并且只能包含这两个值。从来没有其他值。

哪种数据类型最可行?

我在 PostgreSQL 中使用。如果数据类型是特定于 PG 的(仅此数据库实现已知),则 100% 可以。

postgresql datatypes
  • 1 个回答
  • 72 Views
Martin Hope
guettli
Asked: 2018-05-05 04:29:41 +0800 CST

非事务保存操作的术语

  • 7

如果你只看数据库,一切都很好。你有交易,如果出现问题,一切都会回滚。很好-我喜欢这个。

但是:我想发送邮件。现在我有麻烦了,因为我无法回滚。

例子:

  1. 交易开始
  2. 邮件被发送
  3. 其他事情完成(在数据库内)
  4. 出了点问题。
  5. 回滚。

如何解决这个问题是一个不同的问题,而不是这个。

这个问题一般怎么称呼这个。在这个例子中是关于发送邮件。但是,一旦您在事务边界之外的系统中修改某些内容,就会出现同样的问题。

这个问题有名字吗?

如果您想从目录导入文件,则会出现大致相同的问题。如果您在事务中删除文件,则事务可能会失败并且文件已被删除但从未导入。或者您在交易后删除文件。然后文件的删除可能会失败,并且文件会被第二次导入。

我不想为此重新发明解决方案。这就是为什么我需要这个问题的匹配项。然后我可以阅读一些论文并了解 2018 年的“最新技术”。

terminology
  • 7 个回答
  • 157 Views
Martin Hope
guettli
Asked: 2018-05-04 02:23:48 +0800 CST

选择孤立的行(以通用方式)

  • 3

我有一个表my_tables,它在几个表中被引用为外键。

我想选择my_table其他表中未引用的所有行。

AFAIK,应该可以用一种通用的方式来做到这一点(有一些内省的魔法)。

postgresql foreign-key
  • 2 个回答
  • 1821 Views
Martin Hope
guettli
Asked: 2018-04-18 04:25:18 +0800 CST

自动检测“random_page_cost”与“seq_page_cost”

  • 11

我读了这篇关于 PostgreSQL 在 SSD 上的性能的文章:

https://amplitude.engineering/how-a-single-postgresql-config-change-improved-slow-query-performance-by-50x-85593b8991b0

这两种配置似乎很重要random_page_costvsseq_page_cost

由于两个参数都需要匹配特定的硬件,我想知道是否可以自动检测匹配值?

更新

我有这些步骤:

  1. 脚本创建一些虚拟表
  2. 脚本将数据插入到表中
  3. 脚本执行一些查询
  4. 脚本显示 random_page_cost 和 seq_page_cost 的匹配值
  5. 人工或自动化系统获取这些值并更新配置。这一步不是问题的一部分。
postgresql ssd
  • 1 个回答
  • 11044 Views
Martin Hope
guettli
Asked: 2018-04-06 01:05:40 +0800 CST

PostgreSQL:执行顺序扫描的日志语句

  • 3

我使用此代码段来检测丢失的索引:

https://stackoverflow.com/a/12818168/633961

例子:

SELECT
   relname                                               AS TableName,
   to_char(seq_scan, '999,999,999,999')                  AS TotalSeqScan,
   to_char(idx_scan, '999,999,999,999')                  AS TotalIndexScan,
   to_char(n_live_tup, '999,999,999,999')                AS TableRows,
   pg_size_pretty(pg_relation_size(relname :: regclass)) AS TableSize
 FROM pg_stat_all_tables
 WHERE schemaname = 'public'
       AND 50 * seq_scan > idx_scan -- more then 2%
       AND n_live_tup > 10000
       AND pg_relation_size(relname :: regclass) > 5000000
 ORDER BY relname ASC;

结果:

tablename | totalseqscan | totalindexscan | tablerows | tablesize
----------+--------------+----------------+-----------+----------
 mytable  |      112,479 |      2,978,344 | 1,293,536 |   1716 MB

我很好奇 - 我想看看哪些 SQL 语句实际上对表进行了序列扫描mytable。

有没有办法让 PostgreSQL 在对该表进行顺序扫描时发出警告?

postgresql debugging
  • 1 个回答
  • 758 Views
Martin Hope
guettli
Asked: 2018-04-05 00:46:05 +0800 CST

列必须出现在 GROUP BY 子句中或在聚合函数中使用

  • 3

我有一个包含 col1、col2、col3 列的简单表。都不能为空。

我想删除元组 (col1, col2) 有多个条目的所有行。背景:应添加 (col1, col2) 的唯一约束。

drop table mytable;

create table mytable (
    col1 integer not null,
    col2 integer not null,
    col3 integer not null);

-- rows to delete
insert into mytable values (1, 1, 1);
insert into mytable values (1, 1, 2);

-- rows to keep
insert into mytable values (2, 2, 1);
insert into mytable values (2, 3, 2);



delete from mytable where 
(col1, col2) in  (
    select col1, col2 from mytable  
    group by (col1, col2) having  count(distinct col3) >1) ;

select * from mytable;

以上适用于 PostgreSQL 10,但在旧版本上失败。

旧版本告诉我这个错误信息:

错误:列“mytable.col1”必须出现在 GROUP BY 子句中或在聚合函数中使用

如何让它在 PG 9.3 上运行?

postgresql postgresql-9.3
  • 1 个回答
  • 7597 Views
Martin Hope
guettli
Asked: 2018-03-26 23:57:55 +0800 CST

从 N:M 关系中获取给定组的成员

  • 4

我有这个 N:M 关系:

CREATE TABLE auth_user (
    id integer NOT NULL PRIMARY KEY,
    username character varying(150) NOT NULL UNIQUE
);

CREATE TABLE auth_group (
    id integer NOT NULL PRIMARY KEY,
    name character varying(80) NOT NULL UNIQUE
);

CREATE TABLE auth_user_groups (
    id integer NOT NULL PRIMARY KEY,
    user_id integer REFERENCES auth_user(id) NOT NULL,
    group_id integer REFERENCES auth_group(id) NOT NULL,
    CONSTRAINT user_groups UNIQUE(user_id, group_id)
);

INSERT INTO auth_user VALUES (1, 'user1');
INSERT INTO auth_user VALUES (2, 'user2');
INSERT INTO auth_group VALUES (1, 'group1');
INSERT INTO auth_group VALUES (2, 'group2');
INSERT INTO auth_user_groups VALUES (1, 1, 1);
INSERT INTO auth_user_groups VALUES (2, 2, 1);
INSERT INTO auth_user_groups VALUES (3, 2, 2);

如何选择组“group1”中的所有用户名?

我使用 PostgreSQL,但首选可在任何地方使用的 SQL。

postgresql join
  • 5 个回答
  • 367 Views
Martin Hope
guettli
Asked: 2018-01-23 04:01:33 +0800 CST

参见PostgreSQL报错信息中的X-Request-ID

  • 3

在我的环境中,大多数 PostgreSQL 查询都是从 http 请求生成的。

在我的例子中,每个 http 请求都有一个唯一的标头:X-Request-ID

如果 PostgreSQL 日志中有错误或警告,我想查看相关的 X-Request-ID 以查看 sql 查询来自何处。

如何添加额外的消息,如 X-Request-ID 来记录 PostgreSQL 的消息?

相关:https ://serverfault.com/a/797611/90324

postgresql logging
  • 1 个回答
  • 328 Views
Martin Hope
guettli
Asked: 2018-01-04 13:02:30 +0800 CST

在 PostgreSQL 中存储 HTTP 响应

  • 0

我想在 PostgreSQL 数据库行中存储整个 HTTP 响应。

我需要 HTTP 状态、标头和正文。

AFAIK 对此没有本地数据类型。

我如何存储 HTTP 响应?

更新

我一直在思考这个问题。我想我最好遵循这种模式:我不会在 http 响应中搜索任何内容。它就像一个斑点。我想在其中搜索的所有内容都被提取出来并放入不同的列中。到目前为止,只有 http 状态代码会被使用,并且它会得到一个自己的列。

postgresql datatypes
  • 2 个回答
  • 1055 Views
Martin Hope
guettli
Asked: 2017-10-31 02:21:11 +0800 CST

SQL over N 数据库系统

  • 0

我们有一个基于 PostgreSQL 的系统,安装在 20 个客户处。

有时我会在所有系统上运行 SQL 查询。到目前为止,我使用这样的命令行工具来执行parallel此操作:

parallel -q -j0 ssh {} "echo {}; psql -tAc \"select count(*) from auth_user\";echo" ::: $(ssh j list-systems prod)

我缺少对输出进行排序的能力。我想避免肮脏的 shell 脚本,并使用 SQL 智慧。

如何将 N 个 SQL 查询放入 PostgreSQL,以便我可以在其上运行普通 SQL?

(子问题:这种问题有匹配的标签吗?我的意思是 SQL 跨越多个数据库的问题?)

postgresql
  • 1 个回答
  • 66 Views
Martin Hope
guettli
Asked: 2017-09-16 02:54:47 +0800 CST

如何防止更改我的 PostgreSQL 数据库?

  • 9

我的步骤:

  1. pg_dumpall在服务器上运行决赛prod-server-old
  2. 永远关闭prod-server-old。
  3. 将输出复制到不同的服务器 ( prod-server-new)
  4. 在那里恢复数据库。
  5. 所有流量都到prod-server-new现在

如何避免在pg_dumpall(step1 和 step2 之间)对数据库进行修改,使这段时间的修改不会丢失?

在我的情况下,有一小段停机时间是 100% 可以的。

“集群”中有几个数据库(顺便说一句,我不喜欢“集群”这个词。我想大多数人认为“集群”是一组多台计算机,但在这种情况下它意味着一个 Postgres 服务器,它拥有几个数据库)。

我的问题被标记为可能与“使 Postgres 数据库暂时只读(用于执行卷快照)”重复。我不认为它是重复的,因为在我的情况下是不同的,因为我不要求临时只读状态。

postgresql migration
  • 4 个回答
  • 3944 Views
Martin Hope
guettli
Asked: 2017-09-13 23:45:26 +0800 CST

PostgreSQL: ... LIMIT 1 比获取所有行慢得多?

  • 3

如果我只获取一行,则查询需要更长的时间:1433 毫秒对 23 毫秒

有解决办法吗?

减缓:

EXPLAIN (ANALYZE, BUFFERS) SELECT * FROM "modwork_ticket" WHERE 
 "modwork_ticket"."email_sender_id" = '[email protected]' 
 ORDER BY "modwork_ticket"."date_created" ASC limit 1;

--------------------------------------------------------------------------------------------------------------------------------------------
 Limit  (cost=0.43..542.14 rows=1 width=1146) (actual time=1433.128..1433.129 rows=1 loops=1)
   Buffers: shared hit=1466151 read=4661
   ->  Index Scan using modwork_ticket_date_created on modwork_ticket  (cost=0.43..606714.36 rows=1120 width=1146) (actual time=1433.125..1433
         Filter: ((email_sender_id)::text = '[email protected]'::text)
         Rows Removed by Filter: 1705251
         Buffers: shared hit=1466151 read=4661
 Planning time: 2.504 ms
 Execution time: 1433.218 ms

快速地:

EXPLAIN (ANALYZE, BUFFERS) SELECT * FROM "modwork_ticket" WHERE
  "modwork_ticket"."email_sender_id" = '[email protected]' 
  ORDER BY "modwork_ticket"."date_created" ASC;


--------------------------------------------------------------------------------------------------------------------------------------------
 Sort  (cost=4335.83..4338.63 rows=1120 width=1146) (actual time=23.637..23.794 rows=584 loops=1)
   Sort Key: date_created
   Sort Method: quicksort  Memory: 732kB
   Buffers: shared hit=544 read=4
   ->  Bitmap Heap Scan on modwork_ticket  (cost=25.11..4279.11 rows=1120 width=1146) (actual time=20.479..22.595 rows=584 loops=1)
         Recheck Cond: ((email_sender_id)::text = '[email protected]'::text)
         Heap Blocks: exact=538
         Buffers: shared hit=541 read=4
         ->  Bitmap Index Scan on modwork_ticket_email_sender_id_like  (cost=0.00..24.83 rows=1120 width=0) (actual time=20.388..20.388 rows=
               Index Cond: ((email_sender_id)::text = '[email protected]'::text)
               Buffers: shared hit=3 read=4
 Planning time: 0.173 ms
 Execution time: 23.974 ms

版本:

PostgreSQL 9.6.3 on x86_64-suse-linux-gnu, compiled by gcc (SUSE Linux) 4.7.2 20130108 [gcc-4_7-branch revision 195012], 64-bit

我在运行上述查询之前运行“VACUUM ANALYZE”。

postgresql performance
  • 2 个回答
  • 232 Views
Martin Hope
guettli
Asked: 2017-05-18 06:32:53 +0800 CST

在 UPDATE 时将数据添加到第二个表(仅限 PostgreSQL)

  • 3

我有包含这些(和其他)列的表票:

  • ID
  • ticket_type
  • 客户

如果ticket_type或client得到更新,那么表格transfere_table应该被归档。已更改机票的 ticket.id 应插入到转账表中。

这是工作代码:

CREATE FUNCTION add_ticket_to_transfere_table () RETURNS trigger 
       LANGUAGE plpythonu AS $$

plpy.execute(plpy.prepare(
'''INSERT INTO transfere_table (ticket_id) VALUES ($1)''',
     ['int']), [TD['new']['id']])
$$;

CREATE TRIGGER add_ticket_to_transfere_table_trigger 
    AFTER UPDATE OF ticket_type_id, client_id ON ticket
    FOR EACH ROW
    WHEN (OLD.ticket_type_id != NEW.ticket_type_id or 
         OLD.client_id != NEW.client_id)

    EXECUTE PROCEDURE add_ticket_to_transfere_table();

由于我到现在只用过plpythonu,所以就这样解决了。它有效,但我看到有两点需要改进:

  • 去掉 FOR EACH ROW: 如果 N 行被更新,如果只执行一个 INSERT 就好了
  • 不要使用 plpythonu

如何实现这些改进?

还有其他可以改进的地方吗?

我正在使用 PostgreSQL 9.3.13

postgresql trigger
  • 1 个回答
  • 929 Views
Martin Hope
guettli
Asked: 2017-03-25 11:19:49 +0800 CST

确保某些行的 N:ALL 关系

  • 1

我有一个简单的 N:M 关系:

表用户:

  • 列号
  • 列用户名
  • 列 is_superuser(布尔值)

表权限:

  • 列号
  • 列名

表用户权限:

  • 列号
  • 外键用户
  • 外键权限

我想确保如果用户有“is_superuser=True”,那么他应该通过 N:M Table UserPermission 设置所有可用的权限。

典型操作:

  • 更新或插入表“User”:用户设置为“is_superuser”。现在 UserPermission 需要拥有该用户的所有权限
  • 一个新的权限被添加到权限表中。现在 UserPermission 需要获取 N 个新行(对于 is_superuser=True 的每个用户)。

如何使用 Postgres 9.6 确保这一点?

子问题(请留言):这个模式有名字吗?

database-design postgresql
  • 1 个回答
  • 88 Views
Martin Hope
guettli
Asked: 2016-11-22 22:50:07 +0800 CST

数据库数据中的变量以避免冗余?

  • 0

“避免冗余”对我很重要。

我想将用于配置管理的输入数据存储在关系数据库中。

我的输入数据:

  • 项目名称
  • linux_用户
  • 数据库用户
  • 数据库名称

在 95% 的所有情况下,所有属性都是相等的:

  • 项目名称:foo
  • linux_user: foo
  • db_user:foo
  • 数据库名称:foo

如果我将这些数据存储在 YAML 中,那么我可以使用变量来避免重复。

AFAIK 这在关系数据库中不起作用。

我可以将其存储在数据库中,但据我所知,我需要自己对其进行评估:

  • 项目名称:foo
  • linux_user:{project_name}
  • db_user:{project_name}
  • 数据库名称:{项目名称}

如果将其存储在关系数据库中,如何避免冗余?不幸的是,这些值并不总是相等的,只是在大多数情况下。

我使用 PostgreSQL

database-design postgresql
  • 1 个回答
  • 66 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve