模式大小

来自 PostgreSQL 维基
跳转到导航跳转到搜索

管理片段

模式和数据库大小

适用于 PostgreSQL

任何版本

plpgsql

依赖于

作者:Emanuel Calvo


模式大小

此函数提供了一种简单的方法来获取一个模式的大小。请注意,如果指定的模式不存在,此脚本将返回 0。

CREATE OR REPLACE FUNCTION pg_schema_size(text) returns bigint AS $$
select sum(pg_total_relation_size(quote_ident(schemaname) || '.' || quote_ident(tablename)))::bigint from pg_tables where schemaname = $1
$$ language sql;

一种执行方法

general_base=# select pg_size_pretty(pg_schema_size('public'));
-[ RECORD 1 ]--+--------
pg_size_pretty | 4782 MB


以下是一个修改后的脚本版本,它允许您提供一个区分大小写的正则表达式,以仅考虑模式中的一部分表名

CREATE OR REPLACE FUNCTION pg_schema_size_filter(text, text) returns bigint AS $$
select sum(pg_total_relation_size(quote_ident(schemaname) || '.' || quote_ident(tablename)))::bigint from pg_tables where schemaname = $1 and tablename ~ $2
$$ language sql;

数据库大小

有时我们需要快速了解我们数据库的大小,如果你很懒,只需在你拥有的每个数据库中编译这个函数并执行它!

CREATE OR REPLACE FUNCTION sizedb() RETURNS text AS $$
SELECT pg_size_pretty(pg_database_size(current_database()));
$$ LANGUAGE sql;