sql >> データベース >  >> RDS >> Database

TimescaleDBのパフォーマンス監視

    ClusterControlは、TimescaleDBのパフォーマンスをリアルタイムで監視するための使いやすいツールです。たとえば、ユーザー、スループット、テーブルスペース、REDOログ、バッファー、キャッシュ、I/Oに関するさまざまなパフォーマンス統計を表示するための多数の事前定義されたグラフを提供します。また、データベースのワークロードに関するリアルタイムの情報も提供します。私の同僚のセバスチャンは以前、TimescaleDBを簡単にデプロイする方法について書いていました。このブログでは、ClusterControlを使用してTimescaleDBのパフォーマンスのさまざまな側面を監視する方法を紹介します。まず、TimescaleDBについて少し紹介させてください。

    TimescaleDBはPostgreSQLの拡張機能として実装されています。つまり、TimescaleデータベースはPostgreSQLインスタンス内で実行されます。拡張モデルを使用すると、データベースは、信頼性、セキュリティ、さまざまなサードパーティツールへの接続など、PostgreSQLの多くの属性を利用できます。同時に、TimescaleDBは、PostgreSQLのクエリプランナー、データモデル、および実行エンジンの奥深くにフックを追加することで、拡張機能で利用できる高度なカスタマイズを活用します。そのエコシステムはPostgreSQLが行う母国語を話し、時系列データを処理するための特殊な関数(およびクエリの最適化)を追加します。 TimescaleDBがIoTまたは時系列データを格納するための他の特殊なデータストアよりも優れている点の1つは、SQL構文を使用できることです。つまり、JOINを利用できます。そのため、開発者は多様なメタデータのクエリを簡単に実行できます。これにより、スタックが簡素化され、データのサイロが排除されます。

    TimescaleDBは、数千億行でテストおよびベンチマークされており、特にバニラPostgreSQLと比較してアップサートまたはインサートを使用すると非常に適切にスケーリングされます。彼らのベンチマークツールに興味がある場合は、Time Series Benchmark Suite(TSBS)を検討することを検討してください。

    MySQLやPostgreSQLなどのRDBMSに精通している場合、TimescaleDBの使用は非常に簡単です。データベースを指定し、TimescaleDBの拡張機能を作成する必要があります。作成したら、TimescaleDBとのすべてのユーザーインタラクションを仮想的に処理するHypertableを作成します。以下の例を参照してください:

    nyc_data=# CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;
    WARNING:  
    WELCOME TO
     _____ _                               _     ____________  
    |_   _(_)                             | |    |  _  \ ___ \ 
      | |  _ _ __ ___   ___  ___  ___ __ _| | ___| | | | |_/ / 
      | | | |  _ ` _ \ / _ \/ __|/ __/ _` | |/ _ \ | | | ___ \ 
      | | | | | | | | |  __/\__ \ (_| (_| | |  __/ |/ /| |_/ /
      |_| |_|_| |_| |_|\___||___/\___\__,_|_|\___|___/ \____/
                   Running version 1.2.2
    For more information on TimescaleDB, please visit the following links:
    
     1. Getting started: https://docs.timescale.com/getting-started
     2. API reference documentation: https://docs.timescale.com/api
     3. How TimescaleDB is designed: https://docs.timescale.com/introduction/architecture
    
    Note: TimescaleDB collects anonymous reports to better understand and assist our users.
    For more information and how to disable, please see our docs https://docs.timescaledb.com/using-timescaledb/telemetry.
    
    CREATE EXTENSION
    nyc_data=# SELECT create_hypertable('rides_count', 'one_hour');
        create_hypertable     
    --------------------------
     (1,public,rides_count,t)
    (1 row)

    そのような単純な。ただし、データが大きくなると、「TimescaleDBのパフォーマンスを監視する方法」というフォローアップの質問が発生する可能性があります。さて、これが私たちのブログのすべてです。 ClusterControlを使用してこれを行う方法を見てみましょう。

    TimescaleDBクラスターの監視

    ClusterControlでTimescaleDBクラスターを監視することは、PostgreSQLデータベースクラスターを監視することとほとんど同じです。クラスターレベルとノードレベルのグラフ、ダッシュボード、トポロジ、クエリモニタリング、パフォーマンスがあります。これらのそれぞれについて見ていきましょう。

    [概要]タブ

    概要グラフは、クラスター→概要に移動して見つけることができます。 タブ。

    このビューでは、サーバーの負荷、キャッシュヒット率、または他のメトリック(ブロックヒット、ブロック読み取り、コミット、接続数)のフィルターを表示できます。

    以下の例のように、ブロックヒットとブロック読み取りをフェッチするカスタムダッシュボード設定をここで作成することもできます。

    これは、ネットワークアクティビティを監視し、転送と受信のパケットを確認するだけでなく、開始するのに適した場所です。

    [ノード]タブ

    ノードグラフは、クラスター→ノードに移動して見つけることができます。 タブ。これには、ホストおよびデータベースレベルのメトリックを含むノードの詳細ビューが含まれます。以下のグラフを参照してください:

    [トップ]をクリックすると、ホストシステムで実行されているトッププロセスを確認することもできます。 「」タブ。以下のスクリーンショットの例を参照してください:

    ノードを右クリックすると、WALアーカイブを有効にしたり、PostgreSQLデーモンを再起動したり、ホストを再起動したりできる機能もいくつかあります。以下に示す画像を参照してください:

    これは、パフォーマンスの低いノードでメンテナンスをスケジュールする場合に役立ちます。

    [ダッシュボード]タブ

    ダッシュボードは昨年リリースされたばかりで、PostgreSQLダッシュボードのサポートにより、これらのグラフを利用できます。たとえば、nyc_dataデータベースに100万行を挿入しました。 PostgreSQLの概要ダッシュボードにどのように反映されるかを以下に示します。

    1.1 M行を挿入した後、ノード192.168.70.40はまだパフォーマンスが高く、CPUとディスクの使用率が高い兆候がないことがわかります。パフォーマンスを監視している間、次のダッシュボードを参照してください。

    クラスター概要ダッシュボードの他に、システムパフォーマンスの詳細なビューを表示することもできます。下の画像を参照してください:

    [トポロジ]タブ

    このタブはシンプルですが、マスター/スレーブレプリケーショントポロジのビューを提供します。マスターとスレーブのパフォーマンスに関する簡潔で簡潔な情報が得られます。下の画像を参照してください:

    [クエリモニター]タブ

    TimescaleDBでクエリを監視することは、DBAだけでなく、アプリケーションロジックを処理する開発者にとっても非常に重要です。このタブは、クエリの実行方法を理解するために非常に重要です。ここでは、上位のクエリ、実行中のクエリ、クエリの外れ値、およびクエリの統計を表示できます。たとえば、すべてのホストで実行されているクエリを表示したり、監視しようとしているノードに基づいてフィルタリングしたりできます。以下の例は、クエリモニターで表示した場合の外観を示しています。

    TimescaleDBチャンク/インデックスの統計を収集する場合は、ここの[クエリ統計]で利用できます。 TimescaleDBで使用されているインデックスのリストが表示されます。下の画像を参照してください:

    特定のインデックスの統計を表示できるだけでなく、テーブルI / O統計、インデックスI / O統計、または排他的ロック待機でフィルタリングすることもできます。したがって、監視したい「統計」リストの他の項目を確認できます。

    [パフォーマンス]タブ

    このタブでは、最適化と調整のために設定された変数を確認し、アドバイザーを設定し、データベースの拡張を確認し、スキーマ分析を生成して主キーなしでテーブルを収集できます。

    たとえば、セットアップで使用可能なノードを並べて表示し、変数を比較できます。下のタブを参照してください:

    それは今のところすべてです。ご意見をお聞かせいただければ幸いです。特に、不足している点をお知らせください。


    1. MYSQLでの正規化

    2. T-SQLを使用してSQLServerエージェントジョブを実行する方法

    3. Oracleで空のテーブルをエクスポートする方法

    4. Djangoフィクスチャが失敗し、DatabaseError:値が長すぎて文字が変化しない(50)