我在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. 火炬:張量與表:磁盤空間
- 5. 如何檢查iPhone上使用的緩存磁盤空間量
- 6. 使用R的磁盤空間預測
- 7. 在iPhone上保留磁盤空間
- 8. 如何獲取PhoneGap中的可用磁盤空間量?
- 9. 概念上,Oracle表空間是否與磁盤空間相同?
- 10. 廣告磁盤空間vs實際磁盤空間
- 11. 增加Docker Toolbox上的磁盤空間
- 12. `pod setup`消耗大量磁盤空間
- 13. 表使用過多的磁盤空間
- 14. 表使用的Oracle磁盤空間
- 15. 如何監視可用磁盤空間
- 16. 如何檢查可用磁盤空間?
- 17. 如何在Windows機器上使用perl查找磁盤空間?
- 18. 如何確保批量使用足夠的磁盤空間?
- 19. MySQL回收磁盤空間,優化表
- 20. OpenFeint磁盤空間佔用空間
- 21. Powershell磁盤空間檢查
- 22. 分析SVN磁盤空間
- 23. Solr保留磁盤空間
- 24. Docker增加磁盤空間
- 25. 清除MySQL磁盤空間
- 26. 磁盤空間錯誤
- 27. VirtualBox磁盤空間擴展
- 28. MongoDB磁盤空間回收
- 29. Kamon,Statsd,Grafana磁盤空間
- 30. Neo4j,磁盤空間不足
喜diemacht,請檢查我的答案,如果您的塊大小配置不是默認的答案,那麼接受的答案會有錯誤。也許這會影響你而不知道。 – Diego