スロー・クエリーの収集

低パフォーマンスのクエリーを簡単に見つけて調整するために、DSE Performance Service(DSEパフォーマンス・サービス)を使用して、クラスター上のスロー・クエリーを特定する手順。

node_slow_logテーブルは、ノード上のスロー・クエリーに関する情報を収集し、時間のかかるCQL文のクエリー情報を保持して、低パフォーマンスのクエリーを見つけて調整するためにクラスター上のスロー・クエリーを特定しやすくします。

スロー・クエリーは、OpsCenterで表示、トラブルシューティング、および追跡することもできます。

保留になっているnode_slow_logへの挿入は、このサービスが無効になった後でも処理されます。このサービスは有効にも無効にもできます。サービスが無効になった後、指定されたしきい値よりも時間のかかるクエリーのロギングは停止されます。ただし、ロギングの無効化によって、保留中の書き込みキューはフラッシュされず、バックグラウンドのスレッドが最終的にすべてを処理します。

dse.yaml

dse.yamlファイルの場所は、インストールのタイプによって異なります。
パッケージ・インストール /etc/dse/dse.yaml
tarボール・インストール installation_location/resources/dse/conf/dse.yaml

手順

  1. デフォルトでは、クエリーが指定の時間しきい値を超えたときに発行される文に対して収集が有効になります。
    • スロー・クエリーに関する情報の収集を恒久的に有効にするには、dse.yaml ファイルを編集します。cql_slow_log_optionsパラメーターをコメント解除して、CQLのスロー・ログ設定の値を定義します。
      cql_slow_log_options:
         enabled: true
         threshold: 200.0
         minimum_samples: 100
         ttl_seconds: 259200
         skip_writing_to_db: true
         num_slowest_queries: 5
    • dse.yamlを変更したり、DSEを再起動したりすることなくcqlslowlog設定を一時的に変更するには、dsetool perfサブコマンドを使用します。
      • しきい値を超えるスロー・クエリーに関する情報の収集を一時的に無効にするには:
        dsetool perf cqlslowlog disable
      • スロー・クエリーをインメモリーにのみ保存します。
        dsetool perf cqlslowlog skip_writing_to_db
      • スロー・クエリーをデータベースに書き込みます。
        dsetool perf cqlslowlog write_to_db
    • インメモリーに保持するスロー・クエリーの数を設定します。たとえば、「5」のように設定します。
      dsetool perf cqlslowlog set_num_slowest_queries 5
      最新のスロー・クエリーを取得します。
      dsetool perf cqlslowlog recent_slowest_queries
    • 最も遅いスロー・クエリーの5%に関する情報を収集するためのしきい値を一時的に変更するには:
      dsetool perf cqlslowlog 95.0
      この一時的なしきい値設定を使用して情報を収集した後、スクリプトを実行し、このしきい値を使用して、以前に設定されたしきい値よりも時間のかかるクエリーを表示できます。例を次に示します。
      cqlsh -e "SELECT * FROM dse_perf.node_slow_log;"
  2. CQL COPY TOコマンドを使用して、スロー・クエリーをエクスポートできます。
    cqlsh -e "COPY dse_perf.node_slow_log ( date, commands, duration ) TO 'slow_queries.csv' WITH HEADER = true;"