6月1日 AWS Summit Tokyo 2017に行ってきた!
次は
Amazon Redshift テーブル設計詳細ガイド –分散スタイルとソートキーの決定方法–
をメモメモ
・クエリ性能をさらに向上させたい
・大切なことは何か→書いてある
最良のソートキー
最適な分散スタイル
・分散スタイルとソートキーに関する悩み
そもそも、メリット・デメリットが・・・
統一感ない
・分散スタイル
・分散スタイルとは何か
1万枚の注文書 5人の名前が書かれたお客様
10人で抽出
・3つの分散スタイル
EVEN
1万枚を、1000枚ずつ10人
KEY
注文者名が あではじまるひと、 かで始まる人
ALL
10部コピーする
・最適な分散スタイルの例
EVEN分散された注文書とALL分散された名簿
10人ほぼ等しく終える
・最適じゃない
KEY分散された注文書とALL分散された名簿
あ行にくらべ、ワ行の人が早く終わる
ALL分散注文書、ALL分散名簿
・EVEN分散とEVEN分散
→再分散が起きる
KEY分散された名簿
・現実はさらに難しい
さまざまなクエリに対応する必要がある
分散キーは1テーブルに1個しか選べない
フローチャートで機械的に判断
・分散キーの候補となる列の抽出
公開された資料を印刷して貼っておいてね!
均一に分散している
あ行 VS わ行
NULLの割合が大きい列
調べ方 countで
その列のカーでぃなりてぃは高い?
スライスの数に対して相対的に高いか?
→4~5倍以上
調べ方 approximate count distinct 誤差2%だけど、高速
その列でフィルターされているか Noなら向いている YESなら保留
SQLは資料を見てね!
その列は第一ソートキー
→ ゾーンマップが聞く可能性
1Mごとのデータブロックの最大値と最小値
その列でマージジョインしている?
一番高速なジョイン
・分散スタイルの決定
結合に使用されているか
→ALL分散の結合子からなくなる
分散キー候補があるか
追加ストレージを許容できるか
→コピーされる:容量
並列性能を犠牲にできるか
ALL分散が不向き
大きなファクトテーブル
結合しない単一テーブル
複雑な集計
頻繁に書き換えられる
分散キー候補があるか
結合条件で分散キー候補を使用するか?
・どのクエリを優先すべきか
いろいろ
・ソートキー
ソートするメリット
ディスクIO削減
クエリー実行時のソート処理
まーじJOIN
・種類
COMPOUND(順番重要)
INTERLEAVED:メンテナンスコストが高い
→一般的にはCOMPOUNDで十分
・ソート形式の決定
ソートはMERGE JOINを有効にしますか
実行時のSORT処理を削減しますか
ソートはゾーンマップで改善するか
さまざまな列でフィルターしますか?
必要に応じてVACUUM REINDEXできますか?
データに8バイト以上のプリフィックスがありますか?
http://www→全部同じ:事実上ソートされない
・最良のソートキー列の決定
マージジョイン:DISTKEYとおなじ
ORDER BY
フィルタ
・まとめ
分散スタイル
1.KEY分散
2.ALL分散
・結合に注目
ソートキー
interleave使えるか
次は
Amazon Redshift テーブル設計詳細ガイド –分散スタイルとソートキーの決定方法–
をメモメモ
・クエリ性能をさらに向上させたい
・大切なことは何か→書いてある
最良のソートキー
最適な分散スタイル
・分散スタイルとソートキーに関する悩み
そもそも、メリット・デメリットが・・・
統一感ない
・分散スタイル
・分散スタイルとは何か
1万枚の注文書 5人の名前が書かれたお客様
10人で抽出
・3つの分散スタイル
EVEN
1万枚を、1000枚ずつ10人
KEY
注文者名が あではじまるひと、 かで始まる人
ALL
10部コピーする
・最適な分散スタイルの例
EVEN分散された注文書とALL分散された名簿
10人ほぼ等しく終える
・最適じゃない
KEY分散された注文書とALL分散された名簿
あ行にくらべ、ワ行の人が早く終わる
ALL分散注文書、ALL分散名簿
・EVEN分散とEVEN分散
→再分散が起きる
KEY分散された名簿
・現実はさらに難しい
さまざまなクエリに対応する必要がある
分散キーは1テーブルに1個しか選べない
フローチャートで機械的に判断
・分散キーの候補となる列の抽出
公開された資料を印刷して貼っておいてね!
均一に分散している
あ行 VS わ行
NULLの割合が大きい列
調べ方 countで
その列のカーでぃなりてぃは高い?
スライスの数に対して相対的に高いか?
→4~5倍以上
調べ方 approximate count distinct 誤差2%だけど、高速
その列でフィルターされているか Noなら向いている YESなら保留
SQLは資料を見てね!
その列は第一ソートキー
→ ゾーンマップが聞く可能性
1Mごとのデータブロックの最大値と最小値
その列でマージジョインしている?
一番高速なジョイン
・分散スタイルの決定
結合に使用されているか
→ALL分散の結合子からなくなる
分散キー候補があるか
追加ストレージを許容できるか
→コピーされる:容量
並列性能を犠牲にできるか
ALL分散が不向き
大きなファクトテーブル
結合しない単一テーブル
複雑な集計
頻繁に書き換えられる
分散キー候補があるか
結合条件で分散キー候補を使用するか?
・どのクエリを優先すべきか
いろいろ
・ソートキー
ソートするメリット
ディスクIO削減
クエリー実行時のソート処理
まーじJOIN
・種類
COMPOUND(順番重要)
INTERLEAVED:メンテナンスコストが高い
→一般的にはCOMPOUNDで十分
・ソート形式の決定
ソートはMERGE JOINを有効にしますか
実行時のSORT処理を削減しますか
ソートはゾーンマップで改善するか
さまざまな列でフィルターしますか?
必要に応じてVACUUM REINDEXできますか?
データに8バイト以上のプリフィックスがありますか?
http://www→全部同じ:事実上ソートされない
・最良のソートキー列の決定
マージジョイン:DISTKEYとおなじ
ORDER BY
フィルタ
・まとめ
分散スタイル
1.KEY分散
2.ALL分散
・結合に注目
ソートキー
interleave使えるか