小编Nei*_*gan的帖子

如何获取用户所属的所有角色(包括继承的角色)?

假设我有两个 Postgresql 数据库组,“authors”和“editors”,以及两个用户,“maxwell”和“ernest”。

create role authors;

create role editors;

create user maxwell;

create user ernest;

grant authors to editors; --editors can do what authors can do

grant editors to maxwell; --maxwell is an editor

grant authors to ernest; --ernest is an author
Run Code Online (Sandbox Code Playgroud)

我想编写一个高性能函数,它返回 maxwell 所属的角色列表(最好是他们的 oid),如下所示:

create or replace function get_all_roles() returns oid[] ...
Run Code Online (Sandbox Code Playgroud)

它应该返回 maxwell、authors 和 editors(但不是 ernest)的 oid。

但是当有继承时,我不知道该怎么做。

postgresql role access-control users postgresql-9.3

32
推荐指数
4
解决办法
7万
查看次数

什么限制了连接数?

根据https://devcenter.heroku.com/articles/heroku-postgres-legacy-plans,连接限制为 500

根据https://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server “通常,良好硬件上的 PostgreSQL 可以支持几百个连接”

这个限制的决定因素是什么?#CPU核心?内存?操作系统?

postgresql linux max-connections unix

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

如何在 Postgres 中每小时做一次增量备份?

尝试对单个 Postgres 服务器(Win7 64)进行每小时增量备份。

我有以下设置postgresql.conf

max_wal_senders = 2
wal_level       = archive
archive_mode    = on
archive_command = 'copy "%p" "c:\\postgres\\foo\\%f"'
Run Code Online (Sandbox Code Playgroud)

(重新开始)

我做了一个基本备份 pg_basebackup -U postgres -D ..\foo -F t -x

它在base.tar文件foo夹中创建了一个大文件并添加了一些 16,384 KB 的文件,我认为这些文件是 WAL。

我不明白的是为什么 WALfoo不会改变data/pg_xlog变化中的 WAL 。pg 不应该复制它们吗?它是如何决定这样做的?

也许我需要设置archive_timeout=3600

我见过几个站点(pg 的邮件列表、bacula 的 postgres 页面)说您需要调用 pg_start_backup() 和 pg_stop_backup(),但我相信这些不是必需的。真的吗?

次要问题:

  1. 多久data/pg_xlog写入一次 WAL ?什么触发写入?

    如果我\q在 psql 中执行一些 DML,它似乎会更新 WAL 。或者在 pgAdmin 中编辑一个表,然后关闭窗口。我认为它会在提交时写入。

  2. 最佳实践?pg_basebackup 每周一次?将 …

postgresql backup windows postgresql-9.4

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

我可以有一个 InnoDB master 和 MyISAM slaves with Full-Text 进行搜索吗?

我想在 master 上使用 InnoDB,因为它的事务能力,但 MyISAM 在 slaves 上使用全文搜索能力。这可能吗?

mysql innodb myisam replication full-text-search

8
推荐指数
1
解决办法
2989
查看次数

如何在 Postgres 函数中使用环境变量?

假设我有一个 Windows 用户环境变量 SOME_STRING。

是否可以在 PL/pgSQL 函数中使用它的值?

如果没有,我是否需要使用不受信任的语言(如 PL/pythonu),或者我可以使用受信任的语言吗?

我在 PG 9.2

postgresql plpgsql environment-variables

8
推荐指数
1
解决办法
3718
查看次数

PostgreSQL中获取两个文本数组交集长度的最快方法

这是我目前正在使用的:

CREATE FUNCTION array_intersect(a1 anyarray, a2 anyarray)
RETURNS anyarray AS
$$ 
  SELECT ARRAY(
    SELECT unnest($1)
    INTERSECT SELECT unnest($2)
    ORDER BY 1
  );
$$ LANGUAGE sql
IMMUTABLE STRICT;


--get the length:
select array_length ( array_intersect(array[...], array[...]), 1);
Run Code Online (Sandbox Code Playgroud)

有没有更快的方法?

postgresql performance array postgresql-9.3

8
推荐指数
1
解决办法
2671
查看次数

如何实现软删除?

您在数据库中实现软删除的方法是什么?

理想情况下,该解决方案将允许

  • 在大桌子上表现不错
  • 考虑关系
  • 考虑唯一键
  • 用户应该能够找到并恢复他删除的项目。

谢谢!

mysql database-design delete

7
推荐指数
1
解决办法
6426
查看次数

在 Postgres 中获取当前用户 OID 的最快方法?

我正在考虑将用户的 OID 存储在表的“所有者”列中,因此如果他们更改了用户名,我无需执行任何操作。

我知道可以将 pg_has_role() 与 OID 一起使用,这很好。

是否有一种快速简便的方法来获取当前用户的 OID,而无需将其与系统表之一进行匹配?

postgresql users postgresql-9.3

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

如何将数据库与外部全文引擎同步?

您如何使外部全文引擎(Lucene、Solr 等)与数据库数据保持同步?例如,跟踪插入、删除、更新。

我当前的解决方案涉及对修改记录的大联合所有查询,Lucene 每隔几分钟轮询一次。

有什么更好的解决方案吗?

谢谢!

full-text-search

5
推荐指数
1
解决办法
1695
查看次数

如何在 Postgres 文本搜索中使用 Ispell 字典?

Postgres 可以在文本搜索中使用 Ispell 兼容的字典,但不提供所需的文件。

postgresql windows full-text-search

5
推荐指数
2
解决办法
4901
查看次数

这种类型的查询的名称是什么,一个有效的例子是什么?

目的是找到父母,因为它是孩子。例如,假设您有一个营销包(又名“组合”),并希望根据其中的产品进行匹配。示例表/数据:

create table marketing_package_product (
  package_id int not null references marketing_package(id),
  product_id int not null references product(id),
  primary key (package_id, product_id)
);

insert into marketing_package_product values 
(1,1),
(1,2),
(1,3),
(2,1),
(2,5);
Run Code Online (Sandbox Code Playgroud)

给定产品 1,2,3,我想获得 marketing_package 1。但只给定产品 1,2,我不想要 marketing_package 1。

这种类型的查询是否有名称,最有效的方法是什么?

performance query-performance

4
推荐指数
1
解决办法
502
查看次数

以旧换新是自己的采购订单,还是对销售订单的调整?

假设您是汽车经销商,销售汽车。

当客户购买新车时,他经常以现有的汽车进行交易。

什么数据模型更有意义?

A) 为销售创建一个销售订单记录,为以旧换新创建一个采购订单记录,并将它们链接在一起(related_order_id)?

B) 为销售创建销售订单记录,并为以旧换新的销售订单调整?

C) 还有什么?

database-design

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

别名列名

我正在尝试select在 PostgreSQL 中运行基本查询,但在使用列别名时遇到问题。我试图创建别名,randomfield As [Space In Name]但它给出了一个错误

错误:“[”处或附近的语法错误
第 2 行:randomfield As [Space In Name]

而且我还尝试使用不带括号的别名,但这也出现了错误。你如何用空格别名Postgresql

Select randomfield As [Space In Name]
From saledata
Run Code Online (Sandbox Code Playgroud)

postgresql

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