LoginSignup
6
5

More than 5 years have passed since last update.

Redshiftのnode毎のデータ量の偏りを調べる

Last updated at Posted at 2016-01-04

はじめに

Redshiftのデータはnode毎に分散されており、distkeyが不適切だとnode間でデータ量が偏ることがある。
データが偏るとディスクを圧迫するだけでなくパフォーマンスにも影響する。

nodeとslice

  • データはnode毎に分散して保存されている。
  • さらにnode内で複数のsliceに分かれて保存されている。

node情報取得

以下のテーブルを使ってrowsの偏りを求める事ができる。
ディスク使用量(byte)は取ることはできない。

  • stv_tbl_perm
    • slice毎のテーブルのrows数を取得できる。
  • stv_slices
    • nodeとsliceのマッピング情報を取得できる。

調査クエリ

node毎の使用量を取得

select node, sum(rows)
  from stv_slices m
  join stv_tbl_perm s on s.slice = m.slice
  group by node;

テーブルを指定してnode毎の使用量を取得

select node, max(name) as name, sum(rows) as rows
  from stv_slices m
  join stv_tbl_perm s on m.slice = s.slice
  where name = '$TABLE_NAME'
  group by node;

テーブル毎のrows数取得

select name, sum(rows) as rows
  from stv_tbl_perm
  group by name;

追記

svv_table_info というテーブルもある。
http://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_SVV_TABLE_INFO.html

skew_rowsカラムが、「最も多くの行を含むスライスの行数と、最も少ない行を含むスライスの行数の比率。」を表しており、大きいほど偏りが大きいことを表している。

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5