Quantcast
Channel: ウィリアムのいたずらの、まちあるき、たべあるき
Viewing all articles
Browse latest Browse all 7273

Redshiftの分散スタイルとソートキーの決定方法を聞いてきた

$
0
0
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使えるか



 

Viewing all articles
Browse latest Browse all 7273

Trending Articles