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-188386

Sotis's questions

Martin Hope
Sotis
Asked: 2025-01-17 16:28:08 +0800 CST

数据类型“numeric(p,s)”准确吗?

  • 7

我知道这是一种“精确”的数据类型,尽可能准确地表示数字,以便不会出现诸如或数据类型numeric之类的浮点错误。floatreal

但是呢numeric(p,s)?由于固定比例,它必须近似于一个数字,但它是否存在浮点不准确性,或者它是“安全的”?我找不到有关它的任何信息。也许这是显而易见的,但我想更好地理解这方面。

postgresql
  • 1 个回答
  • 76 Views
Martin Hope
Sotis
Asked: 2023-12-17 23:09:48 +0800 CST

为什么用户在执行触发器时使用所有者权限?

  • 6

我遇到了一个奇怪的情况,让我很头疼,解决之后我也想了解为什么。
基本上,用户拥有执行“触发器”所需的所有权限(它实际上是具有关联的 ON DELETE CASCADE 的外键约束)以及触发器本身触及的所有对象的所有权限,但是当他执行触发器时,他实际上使用了对象的所有者权限,而不是他自己的权限。所有者的权限比用户的权限少,因此它给出了一个非常神秘的错误。

我知道理解我的意思很复杂,所以我创建了一个希望能够澄清的工作示例。我创建的模式是一个 Spotify 类型的玩具示例,其中有用户和艺术家,并且用户有他们关注的艺术家列表。

使用超级用户执行以下所有操作(仅为简单起见)

-- ALL DATA
create schema website;

create table public.artists (
    id_artist serial primary key,
    name text not null unique
);

insert into public.artists (name)
values ('Heilung'), ('Rammstain'), ('Iron Maiden');

create table website.users (
    id_user serial primary key,
    email text not null unique
);

insert into website.users (email)
values ('[email protected]'), ('[email protected]');

create table website.users_list (
    id_user int not null,
    id_artist int not null,
    CONSTRAINT user_fk FOREIGN KEY (id_user) REFERENCES website.users (id_user),
    CONSTRAINT artist_fk FOREIGN KEY (id_artist) REFERENCES public.artists (id_artist) ON DELETE CASCADE);

insert into website.users_list (id_user,id_artist)
values (1,1), (1,2), (1,3), (2,1), (2,3);

-- USERS AND PRIVILEGES

create user jenny with password '123';

create user tommy with password '123';

-- tommy is owner but has zero privileges
alter table website.users_list owner to tommy;

-- jenny is not owner but has all privileges
grant usage, create on schema website to jenny;

grant all on all tables in schema website,public to jenny;

grant usage on all sequences in schema website to jenny;

然后使用用户 Jenny 逐一运行这些查询。

--1)
select *
from website.users_list ul;

--2)
select *
from artists a;

--3)
delete from artists 
where id_artist = 3;

第一个和第二个查询正常工作,因为 Jenny 可以在 website.users_list 和 public.artists 上执行 SELECT。她显然拥有模式网站的使用权限。但第三个她却做不到。它给出了这个看似毫无意义的错误。

ERROR: permission denied for schema website

当她对 public.artists 执行 DELETE 操作时,她实际上触发了 website.users_list 的外键约束,因此必须从 website.users_list 中删除与 id_artist = 3 的艺术家相关的所有行。但在那一刻,她正在使用汤米(website.users_list 的所有者)的权限,正如我们上面所看到的,汤米没有模式网站上的使用权限,从而出现了奇怪的错误。

有人可以向我解释为什么会发生这种情况吗?当用户拥有所有必要的权限时,表所有者与运行触发器有什么关系?我发现这非常令人困惑,坦率地说调试是一场噩梦(不幸的是,我是根据个人经验发言的)。

postgresql
  • 1 个回答
  • 28 Views
Martin Hope
Sotis
Asked: 2023-04-17 21:17:40 +0800 CST

如何轻松删除引用流量很大的表的表?

  • 5

假设我有这两张桌子

CREATE TABLE users (
    id_user serial primary key,
    name text NOT NULL
);
CREATE TABLE useless_table (
    id serial primary key,
    id_user int4 NOT NULL,
    CONSTRAINT useless_table_id_user_fk FOREIGN KEY (id_user) REFERENCES users(id_user)
);

users是所有数据库中最拥挤的表,查询不停,甚至是长而重要的查询,所以我无法杀死所有这些。useless_table正如您所见,我想放弃它,它有一个外键引用users,每次我启动DROP命令时,它都会获得一个锁,即使是最简单的SELECT(users没有任何查询正在进行useless_table)。我什至试图删除外键,useless_table但它获得了与删除表相同的锁。

也许我是梦想家,但有没有办法让它不锁定所有东西而只是掉落useless_table?

我正在考虑NOT VALID外键、禁用触发器、可延迟约束或此类问题,但我对它们不是很了解,也不想使用它们弄得一团糟。

有什么建议吗?

postgresql
  • 1 个回答
  • 39 Views
Martin Hope
Sotis
Asked: 2020-10-21 10:06:28 +0800 CST

如何监控数据库的总体性能和健康状况?

  • 0

我已经阅读了@Mike 对如何判断数据库调整是否富有成效(PostgreSQL)的回答,这就是我正在考虑的用于监控我的数据库(Web 应用程序、许多连接、大量写入和一直在读取,非常动态的数据)。

该方法总结如下:我想知道我的数据库是否能够跟上工作负载,随着时间的推移它是否具有相同的准备状态,以及最终我的调整和清理是否有用。因此,对于一般的健康指标,监控查询时间(对于 Web 应用程序和数据流使用的代表性查询)对我来说是明智和紧凑的(查询时间增加而没有实质性变化 => 性能正在下降)。但我的问题是,是吗?除了链接的问题之外,我还没有找到这种方法的其他来源,而且我在如何实现所有这些方面还有一些漏洞,因此从其他示例/经验或手册中了解更多信息将非常有用。即使知道这种方法不值得做也会很有趣。

仅供参考,我读过pgbench,但它对我来说似乎很无菌,我的意思是,它确实提供了一个参考点,但它对我的表、我的索引、关于我的数据库的活动环境说了什么?(我希望你能理解我的意思)也许我pgbench看错了,但这正是我想知道的!

注意:我与 Postgres 一起工作,所以我对 Postgres 的特定答案会很棒......但不是必需的!

postgresql performance
  • 1 个回答
  • 50 Views
Martin Hope
Sotis
Asked: 2020-01-29 08:19:48 +0800 CST

使用节点进行死锁调试:记录负责任的查询

  • 0

我有一个由许多节点脚本组成的系统,它们一直在 Postgres 数据库上自动读取和/或写入。其中一个脚本随机陷入僵局。我想对此进行调试,但问题是我不知道哪个其他查询导致死锁。(我使用pg)

所以我的问题是:

如果我发现这样的错误

{ error: deadlock detected
at Connection.parseE (/data/jenkins/workspace/03-10-Lotti-watcher-lotti-mod/import/node_modules/pg/lib/connection.js:604:13)
at Connection.parseMessage (/data/jenkins/workspace/03-10-Lotti-watcher-lotti-mod/import/node_modules/pg/lib/connection.js:403:19)
at Socket.<anonymous> (/data/jenkins/workspace/03-10-Lotti-watcher-lotti-mod/import/node_modules/pg/lib/connection.js:123:22)
at Socket.emit (events.js:197:13)
at addChunk (_stream_readable.js:288:12)
at readableAddChunk (_stream_readable.js:269:11)
at Socket.Readable.push (_stream_readable.js:224:10)
at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:150:17)
  name: 'error',
  length: 336,
  severity: 'ERROR',
  code: '40P01',
  detail:
   'Process 2376 waits for ShareLock on transaction 55837412; blocked by process 22585.\nProcess 22585 waits for ShareLock on transaction 55837411; blocked by process 2376.',
  hint: 'See server log for query details.',
  position: undefined,
  internalPosition: undefined,
  internalQuery: undefined,
  where: 'while locking tuple (226684,50) in relation "lotti"',
  schema: undefined,
  table: undefined,
  column: undefined,
  dataType: undefined,
  constraint: undefined,
  file: 'deadlock.c',
  line: '1146',
  routine: 'DeadLockReport' }

我可以获取其他进程的查询和/或用户以隔离和识别问题吗?或者类似的东西,如果它有意义的话。

postgresql deadlock
  • 1 个回答
  • 352 Views
Martin Hope
Sotis
Asked: 2019-08-27 01:06:29 +0800 CST

Postgres 中整数列与布尔列的磁盘使用情况

  • 8

我看到了这个问题Bit vs. Boolean columns。

对于 Postgres,我问自己同样的问题:单个数字整数列是否占用与布尔值相同的磁盘空间?在大表(约 50 列 x 约 5000 万行)中,哪一个表现最好?我怎样才能找到这个?

database-design postgresql
  • 1 个回答
  • 2016 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