『Amazon Redshift&Tableau パフォーマンスチューニング』に関するホワイトペーパーの改訂版を読んでみた(Amazon Redshift と Tableauのパフォーマンスの計測編)

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

Tableau Software社が公開しているホワイトペーパーの改訂版『Tuning your Amazon Redshift and Tableau Software Deployment for Better Performance v2』が公開されていますので、数回に分けてそのポイントについて紹介します。今回はテーマは、「Amazon Redshift と Tableauのパフォーマンス計測」です。

ドキュメントのダウンロードは、以下のリンクをクリックして、ログインした後ダウンロードできます。

Optimizing your Amazon Redshift and Tableau Software Deployment for Better Performance v2

Amazon Redshift と Tableauのパフォーマンスを計測する

Amazon RedshiftとTableauをうまくデプロイするための最良の方法は、デプロイメントのパフォーマンス(クエリとダッシュボードの読み込み時間)を測定し、それぞれとその変更の影響を追跡することです。 Tableauには、ワークブックの実行方法と読み込み時間が最も長い2つの簡単なオプションが用意されています。

Tableau Desktop パフォーマンスの記録

Tableauには内蔵のパフォーマンスレコーダーが付属しています。

ワークブック内のシートに関するさまざまな詳細をレポートします。合計ロード時間と、クエリの実行に費やされた時間と正しい表示レイアウトの計算が含まれます。

Tableauパフォーマンスレコーダーの詳細なドキュメントについては、Tableauのヘルプページのパフォーマンスセクションを参照してください。

Tableau Server 管理ビュー

Tableau Serverのバージョン9.0以降、各ビューのロード時間を経時的に報告するビルトインの管理ダッシュボードが付属しています。具体的には、[ステータス]の下にある[読み込み時間の統計]ビューを使用できます。

[ステータス] ページには、さまざまな管理ビューを備えた埋め込みの Tableau ワークブックがあります。これらのビューは、サーバーまたはサイトのさまざまな種類のアクティビティを監視するのに役立ちます。詳細については管理ビューを参照してください。

Amazon Redshiftコンソールからカーソルとクエリテキストデータの表示

パフォーマンスの測定をさらに深めたい場合、Amazon Redshiftには、クライアントがAmazon Redshiftに送信する実際のクエリを表示できるコンソールが付属しています。ただし、TableauはAmazon Redshiftでカーソルを使用するため、プレーンテキストSQLではなくカーソルの実行のみが表示されます。 Amazon RedshiftでTableauがカーソルを使用する方法の詳細については、「その他のヒント」の「カーソルの詳細」を参照してください。

Tableau Data Customization(TDC)ファイルを使用すると、カーソルをオフにすることができますが、これにより、すべての行が同時にTableauに渡され、潜在的にマシンのRAMが最大になります。

TDCファイルを作成してカーソルをオフにするには、テキストエディタを使用してワークブックまたはデータソースを開いて、データソースのXMLを開きます。次のようなセクションが表示されます:

<named-connections>
  <named-connection caption=’foo.foo.ap-southeast-1.Amazon Redshift.amazonaws.com’ name=’Amazon Redshift.1foo’>
    <connection class=’Amazon Redshift’ dbname=’tpchdslitev1’ odbc-connect-string-extras=’’ one-time- sql=’’ port=’5439’ schema=’public’
server=foo.foo.ap-southeast-1.Amazon Redshift.amazonaws.com’ single-node=’no’ sslmode=’’ username=’foo’ />
  </named-connection> 
</named-connections>

以下の項目(主にcustomization)を追加します:

<named-connections>
  <named-connection caption=’foo.foo.ap-southeast-1.Amazon Redshift.amazonaws.com’ name=’Amazon Redshift.lfoo’>
    <connection class=’Amazon Redshift’ dbname=’tpchdslitev1’ odbc-connect-string- extras=’UseDeclareFetch=0’ one-time-sql=’’ port=’5439’
schema=’public’ server=’foo.foo.ap-southeast-1.Amazon Redshift.amazonaws.com’ single-node=’no’ sslmode=’’ username=’root’>
      <connection-customization class=’Amazon Redshift’ enabled=’false’ version=’10.1’>
        <vendor name=’Amazon Redshift’ />
        <driver name=’Amazon Redshift’ />
        <customizations>
          <customization name=’odbc-connect-string-extras’ value=’UseDeclareFetch=0’ />
        </customizations>
      </connection-customization>
    </connection>
  </named-connection>
</named-connections>

その変更を行ってカーソルを削除すると、AWSコンソールでTableauのクエリが表示され、それに従って適切な調整を行うことができます。詳細は、以下のブログを御覧ください。

Tableau Desktop から Amazon Redshift に送信するクエリのカーソル定義を無効化する

最後に

Tableauは、Amazon Redshiftに対してどのようなクエリーを実行して、どれだけの時間を要したのかをTableauによって可視化できます。実行されたクエリを確認することで、データソースに指定したテーブルの最適化や、データマートの作成に役立てることが可能です。Tableauは、カーソルを無効化するTDCファイルを配置することで、実行したクエリをRedshiftコンソールから参照することが可能するTipが紹介されています。このTipsについては私も以前にブログで紹介していますのでそちらも合わせて御覧ください。次回のテーマは、「Redshiftクラスタのチューニング編」です。

関連ブログ