5

私の場合、デバイスの 15 のパフォーマンス メトリックを取得し、InfluxDB に保存する必要があります。各デバイスには固有のデバイス ID があります。

メトリックは、次の方法で InfluxDB に書き込まれます。ここでは例として 1 つだけ示します

new Serie.Builder("perfmetric1")
    .columns("time", "value", "id", "type")
    .values(getTime(), getPerf1(), getId(), getType())
    .build()

データの書き込みは高速で簡単です。しかし、クエリを実行するとパフォーマンスが低下しました。過去 1 時間の 15 個のメトリック値をすべて取得しようとしています。

select value from perfmetric1, perfmetric2, ..., permetric15
where id='testdeviceid' and time > now() - 1h

1 時間で、各メトリクスには 120 のデータ ポイントがあり、合計で 1800 のデータ ポイントになります。c4.4xlarge EC2 インスタンスがアイドル状態の場合、クエリには約 5 秒かかります。

InfluxDB の方がうまくいくと思います。これは私のスキーマ設計の問題ですか、それとも別の問題ですか? クエリを 15 の並列呼び出しに分割すると、高速になりますか?

4

2 に答える 2