标签: postgresql

如何在 Postgresql 中列出当前用户拥有的所有模式中的所有表?

我可以使用列出所有模式中的所有表

> \dt *.*
Run Code Online (Sandbox Code Playgroud)

但这也列出了远远超过我关心的表的系统表。我想要我在公共模式和我定义的任何模式中创建的所有表(可能还有视图)。

我希望找到一种方法来做到这一点,而不必在我创建它们时将模式显式添加到搜索路径中,如下所述:

/sf/answers/903144861/

编辑:

根据接受的答案,我创建了以下视图:

create view my_tables as 
select table_catalog, table_schema, table_name, table_type 
from information_schema.tables 
where table_schema not in ('pg_catalog', 'information_schema');
Run Code Online (Sandbox Code Playgroud)

现在下面的命令给了我我想要的:

select * from my_tables;
Run Code Online (Sandbox Code Playgroud)

postgresql postgresql-9.1

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

真空/自动真空操作需要多长时间?

我管理一个大型(数百个演出)数据库,其中包含具有各种角色的表,其中一些包含数百万条记录。一些表只接收大量插入和删除,其他一些插入和大量更新。

数据库在 Debian 6.0 amd64 系统上的 PostgreSQL 8.4 上运行,具有 16 GB 的 RAM。

问题有时是桌子上的 autovacuum 过程,需要很长时间(几天)才能完成。我希望能够粗略地判断一个特定的vacuum 命令需要多长时间,以便能够决定是否取消它。此外,如果有 postgres 真空操作的进度指示器,那将非常有帮助。

编辑:

我不是在寻找防弹解决方案。对死元组的数量或必要的 I/O 字节数的粗略提示就足以决定。不知道什么时候VACUUM结束真的很烦人,无论如何。

我已经看到pg_catalog.pg_stat_all_tables有一个列表示死元组的数量。所以有可能有一个估计,即使这意味着一个人必须ANALYZE在之前的桌子上。在另一方面,autovacuum_vacuum_thresholdautovacuum_vacuum_scale_factor设置单独证明Postgres的本身知道一些有关变化对表的数量,并可能将其放在了DBA手中了。

我不确定要运行什么查询,因为当我运行时VACUUM VERBOSE,我看到不仅表,而且它们的索引也在被处理。

postgresql vacuum

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

在 ubuntu 服务器上从 postgres 9.1 升级到 9.3

我的生产服务器(ubuntu 13.10)在 postgresql 9.1 上运行。

我想使用 9.3 的一些功能,因此想升级。

有人可以帮助我从 9.1 升级到 9.3,以便停机时间不超过 30 分钟。或者?

主要关注的是防止数据丢失或文件冗余。

postgresql postgresql-9.1

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

为什么 pg_restore 忽略 --create ?错误:失败:致命:数据库“new_db”不存在

我正在尝试运行以下命令:

sshpass  -p "pass" ssh  x@1.2.3.4 "pg_dump -Fc -U foo some_db" | pg_restore --create --dbname=new_db
Run Code Online (Sandbox Code Playgroud)

我得到:

failed: FATAL:  database "new_db" does not exist
Run Code Online (Sandbox Code Playgroud)

postgresql psql postgresql-9.3

27
推荐指数
3
解决办法
3万
查看次数

如何创建索引以加速对表达式的聚合 LIKE 查询?

我可能在标题中问错了问题。以下是事实:

在我们基于 Django 的站点的管理界面上进行客户查询时,我的客户服务人员一直抱怨响应速度慢。

我们使用的是 Postgres 8.4.6。我开始记录慢查询,并发现了这个罪魁祸首:

SELECT COUNT(*) FROM "auth_user" WHERE UPPER("auth_user"."email"::text) LIKE UPPER(E'%deyk%')
Run Code Online (Sandbox Code Playgroud)

此查询的运行时间超过 32 秒。下面是 EXPLAIN 提供的查询计划:

QUERY PLAN
Aggregate  (cost=205171.71..205171.72 rows=1 width=0)
  ->  Seq Scan on auth_user  (cost=0.00..205166.46 rows=2096 width=0)
        Filter: (upper((email)::text) ~~ '%DEYK%'::text)
Run Code Online (Sandbox Code Playgroud)

因为这是 Django ORM 从 Django Admin 应用程序生成的 Django QuerySet 生成的查询,所以我无法控制查询本身。索引似乎是合乎逻辑的解决方案。我尝试创建一个索引来加快速度,但没有任何区别:

CREATE INDEX auth_user_email_upper ON auth_user USING btree (upper(email::text))
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我怎样才能加快这个查询?

postgresql performance index pattern-matching postgresql-8.4

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

pg_stat_user_tables中n_live_tup和n_dead_tup是什么意思

n_live_tupand n_dead_tupin pg_stat_user_tablesor是什么意思pgstattuple

postgresql

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

如何设置 Postgresql 数据库以将日期永久显示为“MDY”

如何在不运行的情况下设置我的数据库以将“日期”视为“MDY”:

SET datestyle = "ISO, MDY";
Run Code Online (Sandbox Code Playgroud)

每次我试图访问它?我使用的是 Postgresql 9.1 版,Ubuntu 12.04。我的系统区域设置,在数据库安装时设置为en_CA.utf8,我最近将其更改为en_US.utf8.

show lc_CTYPE
Run Code Online (Sandbox Code Playgroud)

返回:--> "en_CA.UTF-8"

show LC_CoLLATE
Run Code Online (Sandbox Code Playgroud)

返回:--> "en_CA.UTF-8"

postgresql date-format

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

活动连接数和剩余连接数

我想获得有关一段时间内连接峰值数量的统计信息。

我知道这种pg_stat_activity观点,就像select count(*) from pg_stat_activity,但我认为这种方法不是很聪明。

是否有其他视图或表格可以提供我需要的信息?

postgresql monitoring

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

将多对多连接的右侧转换为数组

在多对多关系上使用 join 时,结果会拆分为多行。我想做的是将连接的右侧转换为数组,因此结果是一行。

包含 3 个表的示例:

CREATE TABLE items (
  id    serial primary key,
  title text
);

CREATE TABLE tags (
  id    serial primary key,
  title text
);

CREATE TABLE items_tags (
  item_id int references items(id),
  tag_id  int references tags(id),
  primary key (item_id, tag_id)
);
Run Code Online (Sandbox Code Playgroud)

选择带有标签的项目时,我可以这样做:

SELECT i.id, i.title, i.title
FROM items i
INNER JOIN items_tags it
ON it.item_id = i.id
INNER JOIN tags t
ON t.id = it.tag_id;
Run Code Online (Sandbox Code Playgroud)

结果将显示为:

(1, "item n1", "sport")
(1, "item n1", "soccer")
(2, "item …
Run Code Online (Sandbox Code Playgroud)

postgresql aggregate array postgresql-9.4

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

postgresql:如何定义具有默认值的 JSONB 列

我无法在文档中找到如何JSONB在 PostgreSQL 中创建一个DEFAULT值为空 json 文档的列。

如何在CREATE TABLE定义中说明上述内容?

postgresql json

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