我在RedShift中有一个表。 如何查看它使用了多少磁盘空间?如何在RedShift/ParAccel中测量磁盘上的表空间
回答
从该演示使用查询:http://www.slideshare.net/AmazonWebServices/amazon-redshift-best-practices
分析磁盘空间使用情况集群:
select
trim(pgdb.datname) as Database,
trim(pgn.nspname) as Schema,
trim(a.name) as Table,
b.mbytes,
a.rows
from (
select db_id, id, name, sum(rows) as rows
from stv_tbl_perm a
group by db_id, id, name
) as a
join pg_class as pgc on pgc.oid = a.id
join pg_namespace as pgn on pgn.oid = pgc.relnamespace
join pg_database as pgdb on pgdb.oid = a.db_id
join (
select tbl, count(*) as mbytes
from stv_blocklist
group by tbl
) b on a.id = b.tbl
order by mbytes desc, a.db_id, a.name;
分析节点之间的表分配:一个模式过滤器
select slice, col, num_values, minvalue, maxvalue
from svv_diskusage
where name = '__INSERT__TABLE__NAME__HERE__' and col = 0
order by slice, col;
嘿,检查我的评论,你的查询存在潜在的错误。 – Diego
添加所有者和到以上查询:
select
cast(use.usename as varchar(50)) as owner,
trim(pgdb.datname) as Database,
trim(pgn.nspname) as Schema,
trim(a.name) as Table,
b.mbytes,
a.rows
from
(select
db_id,
id,
name,
sum(rows) as rows
from stv_tbl_perm a
group by db_id, id, name
) as a
join pg_class as pgc on pgc.oid = a.id
left join pg_user use on (pgc.relowner = use.usesysid)
join pg_namespace as pgn on pgn.oid = pgc.relnamespace
-- leave out system schemas
and pgn.nspowner > 1
join pg_database as pgdb on pgdb.oid = a.db_id
join
(select
tbl,
count as mbytes
from stv_blocklist
group by tbl
) b on a.id = b.tbl
order by mbytes desc, a.db_id, a.name;
count应该是count(*) –
或count(blocknum) – rohitkulky
刚想过我会扩大这个,因为我面临着一个不均匀分布的问题。我添加了一些链接和字段,以便按节点和切片分析空间。同时添加的最大/最小值,并且每片价值数0列
select
cast(use.usename as varchar(50)) as owner,
trim(pgdb.datname) as Database,
trim(pgn.nspname) as Schema,
trim(a.name) as Table,
a.node,
a.slice,
b.mbytes,
a.rows,
a.num_values,
a.minvalue,
a.maxvalue
from
(select
a.db_id,
a.id,
s.node,
s.slice,
a.name,
d.num_values,
d.minvalue,
d.maxvalue,
sum(rows) as rows
from stv_tbl_perm a
inner join stv_slices s on a.slice = s.slice
inner join (
select tbl, slice, sum(num_values) as num_values, min(minvalue) as minvalue, max(maxvalue) as maxvalue
from svv_diskusage
where col = 0
group by 1, 2) d on a.id = d.tbl and a.slice = d.slice
group by 1, 2, 3, 4, 5, 6, 7, 8
) as a
join pg_class as pgc on pgc.oid = a.id
left join pg_user use on (pgc.relowner = use.usesysid)
join pg_namespace as pgn on pgn.oid = pgc.relnamespace
-- leave out system schemas
and pgn.nspowner > 1
join pg_database as pgdb on pgdb.oid = a.db_id
join
(select
tbl,
slice,
count(*) as mbytes
from stv_blocklist
group by tbl, slice
) b on a.id = b.tbl
and a.slice = b.slice
order by mbytes desc, a.db_id, a.name, a.node;
我知道这个问题是旧的,已经接受了答案,但我必须指出的是,答案是错误的。 查询以“mb”输出的内容实际上是“块数”。只有块大小为1MB(这是默认值),答案才是正确的。
如果块大小不同(在我的情况下,例如是256K),则必须将块数乘以其大小(以字节为单位)。我建议如下修改您的查询,我的块大小相乘以字节为单位(262144个字节)块的数量,然后通过(1024 * 1024),以MB为单位的总分为输出:
select
trim(pgdb.datname) as Database,
trim(pgn.nspname) as Schema,
trim(a.name) as Table,
b.mbytes as previous_wrong_value,
(b.mbytes * 262144)::bigint/(1024*1024) as "Total MBytes",
a.rows
from (
select db_id, id, name, sum(rows) as rows
from stv_tbl_perm a
group by db_id, id, name
) as a
join pg_class as pgc on pgc.oid = a.id
join pg_namespace as pgn on pgn.oid = pgc.relnamespace
join pg_database as pgdb on pgdb.oid = a.db_id
join (
select tbl, count(blocknum) as mbytes
from stv_blocklist
group by tbl
) b on a.id = b.tbl
order by mbytes desc, a.db_id, a.name;
是否可以在redshift中更改块大小?我一直在寻找这方面的信息,但没有找到任何方法。 –
我相信你可以。在以前的Paraccel(实际Actian Matrix - redshift的前身)上,您可以通过更改padb.conf中的block_size的值来控制它。在红移上应该是同一行上的东西 – Diego
- 1. 在linux中测试出磁盘空间
- 2. 如何测量Mercurial存储库的磁盘空间增长率?
- 3. 如何测量Postgres索引占用的磁盘空间?
- 4. 如何检查iPhone上使用的缓存磁盘空间量
- 5. 使用R的磁盘空间预测
- 6. 在iPhone上保留磁盘空间
- 7. 如何获取PhoneGap中的可用磁盘空间量?
- 8. 概念上,Oracle表空间是否与磁盘空间相同?
- 9. 广告磁盘空间vs实际磁盘空间
- 10. 增加Docker Toolbox上的磁盘空间
- 11. `pod setup`消耗大量磁盘空间
- 12. 表使用的Oracle磁盘空间
- 13. 表使用过多的磁盘空间
- 14. 如何检查可用磁盘空间?
- 15. 如何在Windows机器上使用perl查找磁盘空间?
- 16. OpenFeint磁盘空间占用空间
- 17. 清除MySQL磁盘空间
- 18. Powershell磁盘空间检查
- 19. 扩展磁盘空间EC2
- 20. 分析SVN磁盘空间
- 21. Eclipse .metadata \ .plugins磁盘空间
- 22. iPhone:可用磁盘空间
- 23. Neo4j,磁盘空间不足
- 24. MongoDB磁盘空间回收
- 25. AllegroGraph占用磁盘空间
- 26. Solr保留磁盘空间
- 27. Kamon,Statsd,Grafana磁盘空间
- 28. 如何在磁盘上表示NSNumber?
- 29. 如何获取服务器上的磁盘空间?
- 30. Linux服务器中的磁盘空间
喜diemacht,请检查我的答案,如果您的块大小配置不是默认的答案,那么接受的答案会有错误。也许这会影响你而不知道。 – Diego