非超级用户如何查看Amazon Redshift数据库大小?
普通用户查看Amazon Redshift数据库大小的可行方案
作为普通用户,确实没法直接访问stv_tbl_perm、stv_blocklist这类仅限超级用户的系统表,你可以试试下面几种方法:
1. 申请系统视图的访问权限
找超级用户给你授予svv_table_info的查询权限,这个视图包含了表的大小信息,授权命令很简单:
GRANT SELECT ON svv_table_info TO your_username;
拿到权限后,就能用这条查询汇总整个数据库的大小了:
SELECT SUM(size) AS total_size_bytes, SUM(size)/1024/1024/1024 AS total_size_gb FROM svv_table_info WHERE database_name = '你的数据库名';
2. 统计自己有权限的表的总大小
如果没法拿到系统视图权限,你可以统计自己能访问的所有表的大小总和,用pg_total_relation_size函数结合information_schema.tables来实现:
SELECT SUM(pg_total_relation_size(quote_ident(table_schema) || '.' || quote_ident(table_name))) AS accessible_tables_size_bytes, SUM(pg_total_relation_size(quote_ident(table_schema) || '.' || quote_ident(table_name)))/1024/1024/1024 AS accessible_tables_size_gb FROM information_schema.tables WHERE table_schema NOT IN ('pg_catalog', 'information_schema') AND table_type = 'BASE TABLE' AND has_table_privilege(quote_ident(table_schema) || '.' || quote_ident(table_name), 'SELECT');
注意:这个方法只能算出你有权限访问的表的总大小,不是整个数据库的完整大小。
3. 找管理员获取官方数据
直接联系超级用户或数据库管理员,让他们定期给你提供数据库大小的汇总报告,或者让他们创建一个只读的自定义视图(基于系统表的汇总结果),然后给你授权访问,这样你就能随时查询了。
内容的提问来源于stack exchange,提问作者Sama Setty
相关产品推荐
相关产品推荐

