全部产品
Search
文档中心

Time Series Database:FAQ

更新时间:Jun 29, 2025

Tema ini memberikan jawaban atas beberapa pertanyaan yang sering diajukan (FAQ) mengenai perbedaan antara konsep-konsep serupa terkait TSDB untuk InfluxDB® dan perbedaan antara TSDB untuk InfluxDB® dengan layanan basis data lainnya dalam hal operasi.

Panduan FAQ

Seri dan kardinalitas seri

Administrasi

Kueri data

Penulisan data

CLI untuk TSDB for InfluxDB®

Tipe data

Fungsi InfluxQL

Migrasi data InfluxDB

Seri dan kardinalitas seri

Mengapa kardinalitas seri penting?

TSDB untuk InfluxDB® mempertahankan indeks dalam memori untuk setiap seri dalam sistem. Penggunaan RAM meningkat jika jumlah seri bertambah. Jika kardinalitas seri terlalu tinggi, sistem operasi akan menghentikan proses TSDB untuk InfluxDB® dan melempar pengecualian kehabisan memori (OOM). Referensi InfluxQL

Bagaimana cara melakukan pemodelan? Apa saja tindakan pencegahan yang harus diambil?

Kami merekomendasikan Anda menyimpan tidak lebih dari satu juta deret waktu. Untuk informasi lebih lanjut tentang skenario yang melibatkan sejumlah besar deret waktu, lihat Pendahuluan. Sebelum Anda mulai memodelkan, lihat Desain Skema InfluxDB dan Tata Letak Data. InfluxDB membuat indeks berdasarkan tag untuk mempercepat kueri. Tag yang berlebihan memperlambat kecepatan baca/tulis karena sejumlah besar data deret waktu. Oleh karena itu, Anda perlu mengontrol jumlah deret waktu dan memperhatikan item-item berikut:

  • Jangan gunakan nilai yang rentan terhadap ekspansi tak terbatas sebagai tag, seperti ID, nilai hash, dan waktu.

  • Jangan simpan informasi dalam nama pengukuran dan tag. Simpan informasi terkait ke tag atau bidang.

  • Jangan simpan beberapa informasi dalam satu tag. Pisahkan menjadi beberapa tag.

  • Jika suatu bidang sering digunakan dalam operasi Group By, bidang ini dapat dimodelkan sebagai tag.

Administrasi

Bagaimana cara mempertahankan stabilitas sistem?

  • Jaga penggunaan memori di bawah 80%.

  • Kontrol jumlah deret waktu dan jaga di bawah satu juta. Kami merekomendasikan Anda merujuk pada tindakan pencegahan pemodelan untuk perencanaan yang tepat.

  • Kontrol jumlah pengukuran. Kami merekomendasikan Anda merujuk pada tindakan pencegahan pemodelan untuk perencanaan yang tepat.

  • Kontrol jumlah total data yang sesuai. Kami merekomendasikan Anda konfigurasikan kebijakan retensi data untuk secara teratur menghapus data historis.

  • Kontrol jumlah shard dan jumlah shard penulisan bersamaan. Kami merekomendasikan Anda mengonfigurasi durasi grup shard yang sesuai dan konfigurasikan kebijakan retensi data untuk menghapus shard historis.

Bagaimana cara melihat penggunaan disk dari suatu pengukuran?

Anda tidak dapat melihat penggunaan disk pada level pengukuran. Pengukuran adalah konsep logis, dan semua pengukuran di bawah basis data yang sama dicampur dalam file data dasar.

Bagaimana cara menghapus data secara efisien dan aman?

Operasi drop measurement, drop series, dan delete melakukan penghapusan logis di basis data InfluxDB. Metode penghapusan ini memiliki kekurangan berikut:

  • Dalam InfluxDB 1.X, deadlock mungkin terjadi pada tingkat implementasi kode.

  • Kueri perlu menyaring garis waktu yang dihapus, yang sangat mempengaruhi efisiensi kueri.

  • Ruang disk tidak dapat segera dilepaskan. Ruang tersebut hanya dilepaskan setelah data digabungkan dan dijadwalkan di latar belakang.

Kami merekomendasikan Anda menghapus data dengan memodifikasi kebijakan retensi atau melakukan operasi drop shard atau drop database.

Mengapa kebijakan retensi yang telah dimodifikasi gagal berlaku?

Dalam TSDB untuk InfluxDB® 1.8.13 dan versi lebih baru, kebijakan retensi yang telah dimodifikasi langsung berlaku. Jika tidak, lakukan operasi berikut:

  • Periksa apakah versi TSDB untuk InfluxDB® adalah 1.8.12 atau lebih lama. Jika ya, tunggu selama 30 hingga 60 menit.

  • Lakukan operasi show shards untuk memeriksa rentang waktu yang dicakup oleh shard. Anda hanya dapat menghapus shard ketika waktu saat ini lebih dari akhir rentang waktu.

Mengapa layanan sering terganggu?

Periksa apakah penggunaan memori tinggi. Jika penggunaan memori melebihi 80%, OOM mungkin terjadi. Kami merekomendasikan Anda meningkatkan spesifikasi instans. Untuk informasi lebih lanjut, lihat Mengapa penggunaan memori tinggi? Apakah saya perlu meningkatkan spesifikasi instans?

Mengapa penggunaan memori tinggi? Apakah saya perlu meningkatkan spesifikasi instans?

Penggunaan memori tinggi mungkin disebabkan oleh salah satu dari alasan berikut:

  • Sejumlah besar deret waktu. Penggabungan indeks mengonsumsi sejumlah besar memori. Periksa apakah desain skema masuk akal. Kami merekomendasikan Anda tidak menyimpan lebih dari 1 juta deret waktu. Untuk informasi lebih lanjut tentang skenario yang melibatkan sejumlah besar deret waktu, lihat Pendahuluan.

  • Volume data besar atau sejumlah besar shard. Volume data besar berarti lebih banyak ruang yang ditempati. Penggabungan file data juga mengonsumsi sejumlah besar memori, dan restart membutuhkan waktu lama. Kami merekomendasikan Anda menghapus beberapa data dengan merujuk pada Bagaimana cara menghapus data secara efisien dan aman? Untuk informasi lebih lanjut tentang skenario di mana sejumlah besar data disimpan, lihat Pendahuluan.

  • Kueri besar. Kami merekomendasikan Anda menyertakan filter tag dan rentang waktu untuk menghindari kueri besar dan mengurangi jumlah data yang dipindai.

  • Jika Anda menggunakan Grafana untuk mengkueri data, Grafana mungkin melakukan operasi show tag keys saat mengonfigurasi grafik. Kueri ini mengonsumsi sejumlah besar memori dalam waktu singkat dan dapat menyebabkan OOM. Kami merekomendasikan Anda memperbarui versi TSDB untuk InfluxDB® ke 1.8.13 atau lebih baru. Setelah pembaruan, Anda dapat menonaktifkan operasi show tag keys.

Jika masalah di atas tidak dapat diselesaikan dan penggunaan memori melebihi 80%, kami merekomendasikan Anda meningkatkan spesifikasi instans. Untuk informasi lebih lanjut, lihat Tingkatkan dan turunkan instans TSDB untuk InfluxDB®.

Apakah saya bisa menurunkan kapasitas penyimpanan?

InfluxDB menggunakan cloud disk untuk menyimpan file dasar. Anda tidak dapat menurunkan kapasitas penyimpanan cloud disk.

Apakah layanan restart saat saya mengubah ukuran disk?

Proses restart saat disk InfluxDB diubah ukurannya. Untuk instans Edisi Standar, layanan mungkin tidak tersedia selama restart. Untuk instans Edisi Ketersediaan Tinggi, ketiga node direstart satu per satu, sehingga layanan tidak terpengaruh dalam kebanyakan kasus.

Berapa lama waktu yang dibutuhkan untuk merestart layanan?

Waktu restart terkait dengan jumlah data yang disimpan. Semakin banyak data yang disimpan, semakin lama waktu restart.

Apakah Grafana yang dikonfigurasi sebelumnya di InfluxDB didukung?

Kami merekomendasikan Anda menggunakan yang disediakan oleh Alibaba Cloud. Kami merekomendasikan Anda tidak menggunakan Grafana yang dikonfigurasi sebelumnya di InfluxDB karena Grafana yang dikonfigurasi sebelumnya tidak lagi dipelihara.

Mengapa terjadi kesalahan IP block saat menghubungkan ke instans?

Dalam TSDB untuk InfluxDB® 1.8.12 atau lebih lama, alamat IP diblokir sementara karena beberapa upaya login dengan kata sandi yang salah. Kami merekomendasikan Anda memperbarui versi ke 1.8.13 atau lebih baru.

Bagaimana cara mengidentifikasi versi TSDB untuk InfluxDB®?

Anda dapat menggunakan metode berikut untuk mengidentifikasi versi TSDB untuk InfluxDB® Anda:

  • Jalankan perintah curl path/ping.

    $ curl -i 'https://<Endpoint>:3242/ping?u=<Nama Akun>&p=<Kata Sandi>'
    HTTP/1.1204NoContent
    Content-Type: application/json
    X-Influxdb-Build: OSS
    X-Influxdb-Version:1.7.x
  • Gunakan CLI TSDB untuk InfluxDB®.

    $ influx -ssl -username <Username> -password <Kata Sandi> -host <Endpoint> -port 3242
    
    Connected to https://<Endpoint>:3242 version 1.7.x

Apa hubungan antara durasi grup shard dan kebijakan retensi?

TSDB untuk InfluxDB® menyimpan data dalam grup shard. Setiap grup shard mencakup interval waktu tertentu. Untuk melihat interval waktu yang ditentukan dalam TSDB untuk InfluxDB®, Anda dapat memeriksa nilai elemen DURATION dalam kebijakan retensi. Tabel berikut mencantumkan hubungan default antara interval waktu grup shard dan nilai elemen DURATION dalam kebijakan retensi.

Durasi yang ditentukan oleh kebijakan retensi

Interval waktu yang dicakup oleh grup shard

< 2 hari

1 jam

>= 2 hari dan <= 6 bulan

1 hari

> 6 bulan

7 hari

Untuk melihat durasi grup shard dari kebijakan retensi, jalankan pernyataan SHOW RETENTION POLICIES.

Mengapa tidak ada data yang hilang setelah saya memodifikasi kebijakan retensi?

Ini mungkin disebabkan oleh alasan berikut:

  • Secara default, TSDB untuk InfluxDB® memeriksa dan menegakkan kebijakan retensi setiap 30 menit. TSDB untuk InfluxDB® mungkin menghapus data pada pemeriksaan berikutnya. Ini berlaku jika data diperoleh dalam rentang waktu yang dikecualikan dari duration. Dalam hal ini, durasi ditentukan oleh kebijakan retensi baru.

  • Perubahan nilai DURATION dan SHARD DURATION dalam kebijakan retensi dapat menyebabkan retensi data yang tidak terduga. TSDB untuk InfluxDB® menyimpan data dalam grup shard. Setiap grup shard mencakup kebijakan retensi tertentu dan interval waktu. Jika TSDB untuk InfluxDB® menegakkan kebijakan retensi, TSDB untuk InfluxDB® menghapus semua titik dalam grup shard. Dalam hal ini, titik-titik individu tidak dihapus. TSDB untuk InfluxDB® tidak dapat membagi grup shard. Sistem dipaksa menyimpan semua data ke grup shard sebelumnya jika kedua kondisi berikut terpenuhi: (1) nilai DURATION dari kebijakan retensi baru kurang dari nilai SHARD DURATION dari kebijakan retensi sebelumnya, dan (2) TSDB untuk InfluxDB® sedang menulis data ke grup shard sebelumnya yang mencakup interval waktu lebih panjang daripada yang ditentukan oleh elemen DURATION. Dalam hal ini, sistem menyimpan semua data ke grup shard sebelumnya meskipun beberapa titik dalam grup shard tersebut jatuh di luar interval waktu yang ditentukan oleh nilai DURATION baru. Jika semua titik data dalam grup shard sebelumnya jatuh di luar interval waktu yang ditentukan oleh nilai DURATION baru, TSDB untuk InfluxDB® menghapus seluruh grup shard. Kemudian, sistem mulai menulis data ke grup shard yang memiliki interval waktu baru dan lebih pendek yang ditentukan oleh elemen SHARD DURATION. Hal ini memungkinkan Anda mencegah retensi data yang tidak terduga.

Mengapa TSDB untuk InfluxDB® tidak dapat mem-parsing unit waktu mikrodetik?

Sintaks yang digunakan untuk menentukan unit waktu mikrodetik bervariasi berdasarkan skenario tertentu. Skenario-skenario ini termasuk penulisan data, pengaturan granularitas waktu dalam CLI TSDB untuk InfluxDB®, dan kueri data. Tabel berikut mencantumkan sintaks yang didukung untuk setiap skenario.

Panggil API HTTP untuk menulis data

Semua kueri

Atur granularitas waktu dalam CLI TSDB untuk InfluxDB®

u

us

µ

µs

Kueri data

Bagaimana cara mendiagnosis kueri lambat?

Kueri lambat umumnya disebabkan oleh pemindaian sejumlah besar deret waktu atau data mentah. Oleh karena itu, kami merekomendasikan Anda menambahkan kondisi filter tag dan rentang waktu dalam setiap kueri. Anda juga dapat menjalankan pernyataan EXPLAIN ANALYZE untuk memeriksa dan mengoptimalkan kueri. Bidang execution_time menentukan waktu untuk membaca data mentah dan melakukan operasi komputasi. Bidang planning_time menentukan waktu untuk memindai deret waktu. Anda dapat mengoptimalkan kueri berdasarkan dua kondisi filter ini.

Bagaimana cara menentukan interval waktu yang dikembalikan oleh GROUP BY time() kueri?

Anda dapat menggunakan dua metode untuk menentukan interval waktu yang dikembalikan oleh kueri GROUP BY time(): Gunakan bucket waktu preset dalam TSDB untuk InfluxDB® atau tentukan interval offset. Contoh:

  • Bucket Waktu Preset

    Jalankan pernyataan berikut untuk menghitung nilai rata-rata bidang sunflowers antara 18:15 dan 19:45, dan kelompokkan nilai rata-rata berdasarkan jam:

    SELECT mean("sunflowers")
    FROM "flower_orders"
    WHERE time >='2016-08-29T18:15:00Z' AND time <='2016-08-29T19:45:00Z' GROUP BY time(1h)

    Hasil kueri berikut menunjukkan cara TSDB untuk InfluxDB® mempertahankan bucket waktu preset-nya:

    Dalam contoh ini, jam 18:00 dan 19:00 adalah bucket waktu preset. Dalam klausa WHERE, rentang waktu untuk kueri ditentukan. Berdasarkan rentang waktu yang ditentukan, data yang dihasilkan sebelum 18:15 tidak digunakan untuk menghitung nilai rata-rata dalam bucket waktu preset 18:00. Data yang digunakan untuk menghitung nilai rata-rata dalam bucket waktu 18:00 harus jatuh dalam jam yang dimulai dari 18:00. Aturan yang sama berlaku untuk bucket waktu preset 19:00. Data yang digunakan untuk menghitung nilai rata-rata dalam bucket waktu preset 19:00 harus jatuh dalam jam yang dimulai dari 19:00. Garis putus-putus menunjukkan titik-titik yang digunakan untuk menghitung setiap nilai rata-rata.

    Timestamp pertama dalam hasil adalah 2016-08-29T18:00:00Z. Namun, hasil kueri untuk bucket waktu preset 18:00 mengecualikan data yang dihasilkan sebelum waktu yang ditentukan oleh timestamp 2016-08-29T18:15:00Z. Timestamp ini menentukan waktu mulai rentang waktu kueri dan diatur dalam klausa WHERE.

    Hasil Data Mentah:

    name: flower_orders                                name: flower_orders
    ------------------------------------
    time                    sunflowers                 time                  mean
    2016-08-29T18:00:00Z342016-08-29T18:00:00Z22.332
    |--|2016-08-29T19:00:00Z62.75
    2016-08-29T18:15:00Z|28|
    2016-08-29T18:30:00Z|19|
    2016-08-29T18:45:00Z|20|
    |--|
    |--|
    2016-08-29T19:00:00Z|56|
    2016-08-29T19:15:00Z|76|
    2016-08-29T19:30:00Z|29|
    2016-08-29T19:45:00Z|90|
    |--|
    2016-08-29T20:00:00Z70
  • Interval Offset

    Jalankan pernyataan berikut untuk menghitung nilai rata-rata bidang sunflowers antara 18:15 dan 19:45, dan bagi nilai rata-rata menjadi kelompok berdasarkan jam. Dalam pernyataan ini, offset 15 menit ditentukan untuk bucket waktu preset TSDB untuk InfluxDB®:

    SELECT mean("sunflowers")
    FROM "flower_orders"
    WHERE time >='2016-08-29T18:15:00Z' AND time <='2016-08-29T19:45:00Z' GROUP BY time(1h,15m)
    ---
    |
                                                                                      offset interval

    Karena offset yang ditentukan, setiap bucket waktu preset TSDB untuk InfluxDB® digeser maju sebesar 15 menit. Dalam hal ini, data yang dihasilkan antara 18:15 dan 19:15 digunakan untuk menghitung nilai rata-rata dalam bucket waktu preset 18:00. Data yang dihasilkan antara 19:15 dan 20:15 digunakan untuk menghitung nilai rata-rata dalam bucket waktu preset 19:00. Garis putus-putus menunjukkan titik-titik yang digunakan untuk menghitung setiap nilai rata-rata.

    Catatan: Timestamp pertama dalam hasil adalah 2016-08-29T18:15:00Z bukan 2016-08-29T18:00:00Z.

    Hasil Data Mentah:

    name: flower_orders                                name: flower_orders
    ------------------------------------
    time                    sunflowers                 time                  mean
    2016-08-29T18:00:00Z342016-08-29T18:15:00Z30.75
    |--|2016-08-29T19:15:00Z65
    2016-08-29T18:15:00Z|28|
    2016-08-29T18:30:00Z|19|
    2016-08-29T18:45:00Z|20|
    2016-08-29T19:00:00Z|56|
    |--|
    |--|
    2016-08-29T19:15:00Z|76|
    2016-08-29T19:30:00Z|29|
    2016-08-29T19:45:00Z|90|
    2016-08-29T20:00:00Z|70|
    |--|

Mengapa respons kueri tidak mengandung data atau hanya mengandung sebagian data?

Penyebab potensial bervariasi berdasarkan skenario. Penyebab berikut adalah yang paling umum:

  • Kebijakan Retensi

    Kebijakan retensi adalah penyebab paling umum. TSDB untuk InfluxDB® secara otomatis mengkueri data dari kebijakan retensi default (DEFAULT) basis data. Jika data Anda tidak disimpan dalam kebijakan retensi default dan kebijakan retensi target tidak ditentukan, TSDB untuk InfluxDB® tidak mengembalikan data.

  • Kunci Tag dalam Pernyataan SELECT

    Pernyataan SELECT hanya mengembalikan data jika pernyataan tersebut berisi setidaknya satu kunci bidang. Jika pernyataan SELECT hanya berisi kunci tag, pernyataan tersebut mengembalikan hasil kosong. Untuk informasi lebih lanjut, lihat Eksplorasi Data.

  • Rentang Waktu

    Rentang waktu adalah penyebab potensial lainnya. Secara default, sebagian besar pernyataan SELECT mengkueri data yang timestamp-nya berkisar dari1677-09-21 00:12:43.145224194 (UTC+0) hingga 2262-04-11T23:47:16.854775806Z (UTC+0). Jika pernyataan SELECT Anda mencakup klausa GROUP BY time(), sistem hanya mengembalikan titik-titik yang timestamp-nya jatuh dalam rentang waktu tertentu. Secara default, waktu mulai rentang waktu ditentukan oleh timestamp 1677-09-21 00:12:43.145224194. Waktu akhir rentang waktu dikembalikan oleh fungsi now(). Secara default, kueri GROUP BY time() tidak mengembalikan data yang timestamp-nya terjadi setelah waktu yang dikembalikan oleh fungsi now(). Untuk mendapatkan data yang timestamp-nya terjadi setelah waktu yang dikembalikan oleh fungsi now(), Anda harus menentukan waktu akhir rentang waktu dalam kueri GROUP BY time().

  • Nama Pengenal

    Skema adalah penyebab umum terakhir. Masalah skema dapat terjadi ketika bidang dan tag memiliki nama yang sama. Saat kunci bidang identik dengan kunci tag, kunci bidang memiliki prioritas filter lebih tinggi daripada kunci tag dalam kueri. Dalam kueri, Anda harus menggunakan sintaks ::tag untuk menentukan kunci tag.

Mengapa respons kueri GROUP BY time() tidak termasuk data yang timestamp-nya terjadi setelah waktu yang dikembalikan oleh fungsi now()?

Secara default, sebagian besar pernyataan SELECT mengambil data yang timestamp-nya berkisar dari 1677-09-21 00:12:43.145224194 UTC hingga 2262-04-11T23:47:16.854775806Z UTC. Jika pernyataan SELECT Anda mencakup klausa GROUP BY time(), sistem hanya mengembalikan titik-titik yang timestamp-nya jatuh dalam rentang waktu tertentu. Secara default, waktu mulai rentang waktu ditentukan oleh timestamp 1677-09-21 00:12:43.145224194. Waktu akhir rentang waktu dikembalikan oleh fungsi now().

Untuk mengambil data yang timestamp-nya lebih dari waktu yang ditentukan oleh fungsi now(), tentukan waktu akhir rentang waktu dalam setiap klausa GROUP BY time() dari pernyataan SELECT. Dalam hal ini, pernyataan SELECT harus mencakup fungsi InfluxQL dan klausa WHERE.

Dalam contoh berikut, kueri pertama mencakup data yang timestamp-nya jatuh dalam rentang waktu yang ditentukan oleh timestamp 2015-09-18T21:30:00Z dan fungsi now(). Kueri kedua mencakup data yang timestamp-nya jatuh dalam rentang waktu yang ditentukan oleh timestamp 2015-09-18T21:30:00Z dan ekspresi now(). Ekspresi ini menunjukkan 180 minggu ke depan setelah waktu yang dikembalikan oleh fungsi now().

> SELECT MEAN("boards") FROM "hillvalley" WHERE time >='2015-09-18T21:30:00Z' GROUP BY time(12m) fill(none)


> SELECT MEAN("boards") FROM "hillvalley" WHERE time >='2015-09-18T21:30:00Z' AND time <= now()+180w GROUP BY time(12m) fill(none)

Catatan: Anda harus menentukan waktu akhir rentang waktu yang ditentukan dalam klausa WHERE untuk menimpa waktu akhir default yang ditentukan oleh fungsi now(). Dalam pernyataan kueri berikut, waktu mulai rentang waktu kueri diatur ke waktu yang dikembalikan oleh fungsi now(). Oleh karena itu, Anda dapat menjalankan pernyataan tersebut untuk mengkueri hanya data yang timestamp-nya menunjukkan waktu yang ditentukan oleh fungsi now().

> SELECT MEAN("boards") FROM "hillvalley" WHERE time >= now() GROUP BY time(12m) fill(none)
>

Untuk informasi lebih lanjut tentang sintaks waktu, lihat Eksplorasi Data.

Apakah saya bisa melakukan operasi matematika pada timestamp?

Tidak, Anda tidak dapat melakukan operasi matematika pada timestamp dalam TSDB untuk InfluxDB®. Komputasi waktu harus dilakukan oleh klien yang menerima hasil kueri.

TSDB untuk InfluxDB® memberikan dukungan terbatas untuk menggunakan fungsi InfluxQL pada timestamp. Fungsi ELAPSED() mengembalikan perbedaan antara timestamp untuk satu bidang.

Apakah saya bisa mengidentifikasi granularitas waktu penulisan data berdasarkan timestamp yang dikembalikan?

Tidak, Anda tidak bisa mengidentifikasi granularitas waktu penulisan data berdasarkan timestamp yang dikembalikan. Terlepas dari granularitas waktu penulisan data yang ditentukan, TSDB untuk InfluxDB® menyimpan semua timestamp sebagai nilai nanodetik. Catatan: Saat hasil kueri dikembalikan, basis data menghapus nol dari akhir timestamp tanpa memberi notifikasi. Oleh karena itu, granularitas waktu penulisan tidak dapat diidentifikasi berdasarkan timestamp yang dikembalikan.

Dalam contoh berikut, tag precision_supplied menunjukkan granularitas waktu yang diberikan pengguna saat menulis data. Tag timestamp_supplied menunjukkan timestamp yang diberikan pengguna saat menulis data. TSDB untuk InfluxDB® menghapus nol dari akhir timestamp yang dikembalikan. Oleh karena itu, granularitas waktu penulisan tidak dapat diidentifikasi berdasarkan timestamp yang dikembalikan.

name: trails
-------------
time                  value  precision_supplied  timestamp_supplied
1970-01-01T01:00:00Z3      n                   3600000000000
1970-01-01T01:00:00Z5      h                   1
1970-01-01T02:00:00Z4      n                   7200000000000
1970-01-01T02:00:00Z6      h                   2

Kapan saya menggunakan tanda kutip tunggal (') dan tanda kutip ganda (") dalam kueri?

Gunakan tanda kutip tunggal (') untuk mengapit nilai string, seperti nilai tag. Anda tidak dapat menggunakan tanda kutip tunggal (') untuk mengapit pengenal, seperti nama basis data, nama kebijakan retensi, nama pengguna, nama pengukuran, kunci tag, dan kunci bidang.

Gunakan tanda kutip ganda (") untuk mengapit pengenal jika pengenal dimulai dengan digit dan berisi karakter selain huruf, angka, garis bawah (_), atau kata kunci InfluxQL. Dalam kasus lain, Anda tidak perlu menggunakan tanda kutip ganda (") untuk mengapit pengenal. Namun, kami merekomendasikan Anda menggunakan tanda kutip ganda (") untuk mengapit pengenal dalam semua kasus.

Contoh:

Kueri valid: SELECT bikes_available FROM bikes WHERE station_id='9'

Kueri valid: SELECT "bikes_available" FROM "bikes" WHERE "station_id"='9'

Kueri valid: SELECT MIN("avgrq-sz") AS "min_avgrq-sz" FROM telegraf

Kueri valid: SELECT * from "cr@zy" where "p^e"='2'

Kueri tidak valid: SELECT 'bikes_available' FROM 'bikes' WHERE 'station_id'="9"

Kueri tidak valid: SELECT * from cr@zy where p^e='2'

Gunakan tanda kutip tunggal (') untuk mengapit string tanggal dan waktu. Jika Anda menggunakan tanda kutip ganda (") untuk mengapit string tanggal dan waktu, TSDB untuk InfluxDB® mengembalikan kesalahan berikut: ERR: invalid operation: time and *influxql.VarRef are not compatible.

Contoh:

Kueri valid: SELECT "water_level" FROM "h2o_feet" WHERE time >'2015-08-18T23:00:01.232000000Z' AND time <'2015-09-19'

Kueri tidak valid: SELECT "water_level" FROM "h2o_feet" WHERE time >"2015-08-18T23:00:01.232000000Z" AND time <"2015-09-19"

Untuk informasi lebih lanjut tentang sintaks waktu, lihat Eksplorasi Data.

Mengapa data hilang setelah saya membuat kebijakan retensi default (DEFAULT)?

Setelah Anda membuat kebijakan retensi default dalam basis data, data yang ditulis ke kebijakan retensi default sebelumnya tetap ada di kebijakan retensi default sebelumnya. Secara default, jika tidak ada kebijakan retensi yang ditentukan untuk kueri, sistem akan mengkueri data dari kebijakan retensi baru. Dalam hal ini, data yang ditulis ke kebijakan retensi default sebelumnya tidak dapat dikembalikan. Untuk mengkueri data yang ditulis ke kebijakan retensi default sebelumnya, Anda harus memenuhi syarat sepenuhnya data terkait dalam pernyataan kueri. Contoh:

Semua data dalam pengukuran fleeting termasuk dalam kebijakan retensi default one_hour.

> SELECT count(flounders) FROM fleeting
name: fleeting
--------------
time                     count
1970-01-01T00:00:00Z8

Buat kebijakan retensi default bernama two_hour, dan jalankan kueri yang sama.

> SELECT count(flounders) FROM fleeting
>

Untuk mengkueri data yang ditulis ke kebijakan retensi default sebelumnya, tentukan kebijakan retensi default sebelumnya dengan memenuhi syarat sepenuhnya pengukuran fleeting.

> SELECT count(flounders) FROM fish.one_hour.fleeting
name: fleeting
--------------
time                     count
1970-01-01T00:00:00Z8

Mengapa respons klausa WHERE OR yang menggunakan operator OR untuk menentukan beberapa rentang waktu tidak mengandung data?

TSDB untuk InfluxDB® tidak mengizinkan Anda menggunakan operator OR dalam klausa WHERE untuk menentukan beberapa rentang waktu. Jika operator OR digunakan dalam klausa WHERE untuk menentukan beberapa rentang waktu, TSDB untuk InfluxDB® tidak mengembalikan hasil apa pun.

Contoh:

> SELECT * FROM "absolutismus" WHERE time ='2016-07-31T20:07:00Z' OR time ='2016-07-31T23:07:17Z'
>

Mengapa fungsi fill(previous) gagal mengembalikan nilai?

Nilai sebelumnya mungkin jatuh di luar rentang waktu kueri yang ditentukan. Dalam hal ini, fungsi fill(previous) tidak menggunakan nilai sebelumnya untuk mengisi nilai yang hilang dalam rentang waktu kueri.

Dalam contoh berikut, TSDB untuk InfluxDB® tidak menggunakan nilai dalam rentang waktu antara 2016-07-12T16:50:00Z dan 2016-07-12T16:50:10Z untuk mengisi nilai yang hilang dalam rentang waktu antara 2016-07-12T16:50:20Z dan 2016-07-12T16:50:30Z. Hal ini terjadi karena rentang waktu sebelumnya dikecualikan dari rentang waktu kueri.

Contoh:

> SELECT * FROM "cupcakes"
name: cupcakes
-------------
time                   chocolate
2016-07-12T16:50:00Z3
2016-07-12T16:50:10Z2
2016-07-12T16:50:40Z12
2016-07-12T16:50:50Z11

Kueri GROUP BY time():

> SELECT max("chocolate") FROM "cupcakes" WHERE time >='2016-07-12T16:50:20Z' AND time <='2016-07-12T16:51:10Z' GROUP BY time(20s) fill(previous)
name: cupcakes
--------------
time                   max
2016-07-12T16:50:20Z
2016-07-12T16:50:40Z12
2016-07-12T16:51:00Z12

Mengapa data hilang saat saya menjalankan kueri INTO?

Secara default, kueri SELECT INTO mengonversi tag dalam data mentah menjadi bidang dalam data yang baru ditulis. Akibatnya, TSDB untuk InfluxDB® menimpa titik-titik yang dibedakan dengan menggunakan tag. Anda dapat menambahkan klausa GROUP BY * ke pernyataan SELECT INTO untuk mempertahankan tag dalam data yang baru ditulis.

Catatan

Metode ini tidak berlaku untuk kueri yang menggunakan fungsi TOP() atau BOTTOM(). Untuk informasi lebih lanjut tentang fungsi TOP() dan BOTTOM(), lihat Sintaks Umum Fungsi.

Contoh

Pengukuran french_bulldogs mencakup tag color dan bidang name.

> SELECT * FROM "french_bulldogs"
name: french_bulldogs
---------------------
time                  color  name
2016-05-25T00:05:00Z  peach  nugget
2016-05-25T00:05:00Z  grey   rumple
2016-05-25T00:10:00Z  black  prince
  • Pernyataan SELECT INTO yang Mengecualikan Klausa GROUP BY *

    Pernyataan SELECT INTO yangmengecualikan klausa GROUP BY * mengonversi tag color menjadi bidang dalam data yang baru ditulis. Dalam data mentah, titik nugget dan rumple hanya dibedakan oleh tag color. Jika tag color dikonversi menjadi bidang, TSDB untuk InfluxDB® menganggap bahwa titik rumple dan nugget adalah duplikat. Oleh karena itu, TSDB untuk InfluxDB® menimpa titik rumple dengan titik nugget.

    > SELECT * INTO "all_dogs" FROM "french_bulldogs"
    name: result
    ------------
    time                  written
    1970-01-01T00:00:00Z3
    
    > SELECT * FROM "all_dogs"
    name: all_dogs
    --------------
    time                  color  name
    2016-05-25T00:05:00Z  grey   rumple                <---- tidak ada lagi nugget
    2016-05-25T00:10:00Z  black  prince
  • Pernyataan SELECT INTO yang Mencakup Klausa GROUP BY *

    Pernyataan SELECT INTO yang mencakup klausa GROUP BY * mempertahankan tag color dalam data yang baru ditulis. Dalam hal ini, titik nugget dan rumple berbeda satu sama lain dan TSDB untuk InfluxDB® tidak menimpa titik-titik tersebut.

    > SELECT "name" INTO "all_dogs" FROM "french_bulldogs" GROUP BY *
    name: result
    ------------
    time                  written
    1970-01-01T00:00:00Z3
    
    > SELECT * FROM "all_dogs"
    name: all_dogs
    --------------
    time                  color  name
    2016-05-25T00:05:00Z  peach  nugget
    2016-05-25T00:05:00Z  grey   rumple
    2016-05-25T00:10:00Z  black  prince

Bagaimana cara mengkueri data ketika kunci tag dan kunci bidang memiliki nama yang sama?

Gunakan sintaks :: untuk menentukan apakah suatu kunci adalah kunci bidang atau kunci tag. Contoh:

> INSERT candied,almonds=true almonds=50,half_almonds=511465317610000000000
> INSERT candied,almonds=true almonds=55,half_almonds=561465317620000000000

> SELECT * FROM "candied"
name: candied
-------------
time                   almonds  almonds_1  half_almonds
2016-06-07T16:40:10Z50       true       51
2016-06-07T16:40:20Z55       true       56
  • Sebagai Kunci Bidang:

    > SELECT * FROM "candied" WHERE "almonds"::field >51
    name: candied
    -------------
    time                   almonds  almonds_1  half_almonds
    2016-06-07T16:40:20Z55       true       56
  • Sebagai Kunci Tag:

    > SELECT * FROM "candied" WHERE "almonds"::tag='true'
    name: candied
    -------------
    time                   almonds  almonds_1  half_almonds
    2016-06-07T16:40:10Z50       true       51
    2016-06-07T16:40:20Z55       true       56

Bagaimana cara mengkueri data lintas pengukuran?

Anda tidak dapat melakukan operasi matematika atau mengelompokkan data lintas pengukuran. Anda hanya dapat mengkueri data yang termasuk dalam pengukuran yang sama. TSDB untuk InfluxDB® bukanlah basis data relasional. Oleh karena itu, kami merekomendasikan Anda tidak menggunakan pemetaan data lintas pengukuran untuk skema.

Apakah urutan filter timestamp dalam pernyataan kueri memiliki dampak signifikan pada waktu respons?

Tidak, urutan filter timestamp dalam pernyataan kueri tidak memiliki dampak signifikan pada waktu respons. Hasil pengujian menunjukkan bahwa waktu respons TSDB untuk InfluxDB® untuk kueri pertama serupa dengan waktu respons untuk kueri kedua.

SELECT ... FROM ... WHERE time >'timestamp1' AND time <'timestamp2'
SELECT ... FROM ... WHERE time <'timestamp2' AND time >'timestamp1'

Bagaimana cara menentukan pernyataan SELECT jika saya ingin mengkueri tag yang tidak memiliki nilai?

Gunakan '' untuk menentukan nilai tag kosong. Contoh:

> SELECT * FROM "vases" WHERE priceless=''
name: vases
-----------
time                   origin   priceless
2016-07-20T18:42:00Z8

Penulisan data

Mengapa jitter tulis terjadi secara berkala?

Jitter tulis terjadi ketika TSDB untuk InfluxDB® beralih partisi. Anda dapat mengamati apakah periode jitter sama dengan durasi grup shard dari kebijakan retensi. Anda dapat mengurangi amplitudo jitter dengan mengurangi jumlah pengukuran dan deret waktu.

Tindakan pencegahan untuk menulis data menggunakan protokol baris InfluxDB

Daftar berikut menjelaskan tindakan pencegahan untuk menulis data menggunakan protokol baris InfluxDB:

  • Tambahkan i di akhir angka untuk menentukan bahwa nilainya adalah integer. Misalnya, value=100i menentukan bahwa nilainya adalah integer dan value=100 menentukan bahwa nilainya adalah bilangan floating-point.

  • Tanda kutip ganda (") hanya digunakan dalam nilai bidang tipe data STRING. Tanda kutip ganda (") dalam pengukuran, kunci tag, nilai tag, dan kunci bidang dianggap sebagai bagian dari nama.

  • Jangan gunakan tanda kutip untuk mengapit karakter khusus. Gunakan karakter escape backslash (\) untuk memformat karakter khusus.

Mengapa saya tidak dapat melihat data yang ditulis ke tabel?

InfluxDB membuang data yang kedaluwarsa berdasarkan kebijakan retensi. Pesan kesalahan partial write: points beyond retention policy mungkin muncul selama operasi penulisan. Kami merekomendasikan Anda memeriksa timestamp penulisan dan TTL yang ditentukan dalam kebijakan retensi.

Mengapa data masih belum ditulis ke disk setelah saya mengurangi penggunaan ruang disk?

Jika disk InfluxDB penuh, operasi penulisan gagal meskipun penggunaan ruang disk telah dikurangi. Mulai ulang proses secara manual di konsol untuk melanjutkan penulisan data setelah meningkatkan instans atau membersihkan data.

Bagaimana cara menulis nilai bidang tipe data INTEGER?

Untuk menulis nilai bidang tipe data integer, tambahkan i di akhir nilai bidang. Jika Anda tidak menambahkan i, TSDB untuk InfluxDB® memproses nilai tersebut sebagai bilangan floating-point.

Tulis integer: value=100i. Tulis bilangan floating-point: value=100.

Bagaimana cara TSDB untuk InfluxDB® memproses titik-titik duplikat?

Titik secara unik diidentifikasi oleh nama pengukuran, set tag, dan timestamp. Jika dua titik memiliki nama pengukuran, set tag, dan timestamp yang sama, mereka dianggap sebagai titik-titik duplikat. Jika Anda mengirimkan titik duplikat yang memiliki set bidang berbeda dari titik yang ada, set bidang titik tersebut menjadi gabungan dari set bidang sebelumnya dan baru. Jika terjadi konflik, set bidang baru yang diutamakan. Ini adalah hasil yang diharapkan.

Contoh:

Titik sebelumnya: cpu_load,hostname=server02,az=us_west val_1=24.5,val_2=7 1234567890000000

Titik baru: cpu_load,hostname=server02,az=us_west val_1=5.24 1234567890000000

Setelah Anda mengirimkan titik baru, TSDB untuk InfluxDB® menggunakan nilai val_1 baru untuk menimpa nilai sebelumnya val_1. Nilai val_2 dipertahankan dalam set bidang titik.

> SELECT * FROM "cpu_load" WHERE time =1234567890000000
name: cpu_load
--------------
time                      az        hostname   val_1   val_2
1970-01-15T06:56:07.89Z   us_west   server02   5.247

Untuk menyimpan titik sebelumnya dan baru, Anda dapat menggunakan metode berikut:

  • Perkenalkan tag baru untuk memastikan keunikan.

    Titik sebelumnya: cpu_load,hostname=server02,az=us_west,uniq=1 val_1=24.5,val_2=7 1234567890000000

    Titik baru: cpu_load,hostname=server02,az=us_west,uniq=2 val_1=5.24 1234567890000000

    Setelah Anda menulis titik baru ke TSDB untuk InfluxDB®, hasil berikut muncul:

    > SELECT * FROM "cpu_load" WHERE time =1234567890000000
    name: cpu_load
    --------------
    time                      az        hostname   uniq   val_1   val_2
    1970-01-15T06:56:07.89Z   us_west   server02   124.57
    1970-01-15T06:56:07.89Z   us_west   server02   25.24
  • Tambahkan satu nanodetik ke timestamp titik baru.

    Titik sebelumnya: cpu_load,hostname=server02,az=us_west val_1=24.5,val_2=7 1234567890000000

    Titik baru: cpu_load,hostname=server02,az=us_west val_1=5.24 1234567890000001

    Setelah Anda menulis titik baru ke TSDB untuk InfluxDB®, hasil berikut muncul:

    > SELECT * FROM "cpu_load" WHERE time >=1234567890000000 and time <=1234567890000001
    name: cpu_load
    --------------
    time                             az        hostname   val_1   val_2
    1970-01-15T06:56:07.89Z          us_west   server02   24.57
    1970-01-15T06:56:07.890000001Z   us_west   server02   5.24

Apa line feed yang diperlukan dalam permintaan API HTTP?

Dalam protokol baris TSDB untuk InfluxDB®, line feed \n digunakan untuk menunjukkan akhir baris dan awal baris baru. Kode ASCII untuk line feed adalah 0x0A. Jika line feed lain selain \n digunakan dalam file atau data, kesalahan berikut terjadi: bad timestamp dan unable to parse.

Catatan: Windows menggunakan line feed \r\n atau carriage return untuk menunjukkan akhir baris dan awal baris baru.

Karakter dan kata apa yang tidak disarankan saat saya menulis data ke TSDB untuk InfluxDB®?

  • Kata Kunci InfluxQL

    Jika Anda menggunakan kata kunci InfluxQL sebagai pengenal, Anda harus mengapit kata kunci tersebut dalam tanda kutip ganda (") dalam kueri Anda. Jika tidak, kesalahan mungkin terjadi. Pengenal dapat berupa nama kueri kontinu, nama basis data, kunci bidang, nama pengukuran, nama kebijakan retensi, nama langganan, kunci tag, atau nama pengguna.

  • Waktu

    Anda dapat menggunakan kata kunci time sebagai pengenal tanpa perlu mengapit pengenal tersebut dalam tanda kutip ganda (") dalam pernyataan kueri. Anda dapat menggunakan kata kunci time sebagai nama kueri kontinu, nama basis data, nama pengukuran, nama kebijakan retensi, atau nama pengguna. Dalam kasus ini, Anda tidak perlu menggunakan tanda kutip ganda (") untuk mengapit time. Namun, Anda tidak dapat menggunakan kata kunci time sebagai kunci bidang atau kunci tag. TSDB untuk InfluxDB® menolak penulisan data di mana kata kunci time adalah kunci bidang atau kunci tag, dan melaporkan kesalahan. Contoh:

    • Gunakan kata kunci time sebagai nama pengukuran untuk menulis data dan mengkueri pengukuran.

      > INSERT time value=1
      
      > SELECT * FROM time
      
      name: time
      time                            value
      ---------
      2017-02-07T18:28:27.349785384Z1

      Dalam TSDB untuk InfluxDB®, kata kunci time adalah nama pengukuran yang valid.

    • Gunakan kata kunci time sebagai kunci bidang untuk menulis data dan mencoba mengkueri kunci bidang.

      > INSERT mymeas time=1
      ERR:{"error":"partial write: invalid field name: input field \"time\" on measurement \"mymeas\" is invalid dropped=1"}

      Dalam TSDB untuk InfluxDB®, kata kunci time adalah kunci bidang yang tidak valid. Sistem gagal menulis titik dan mengembalikan kode kesalahan 400.

    • Gunakan kata kunci time sebagai kunci tag untuk menulis data dan mencoba mengkueri kunci tag.

      > INSERT mymeas,time=1 value=1
      ERR:{"error":"partial write: invalid tag key: input tag \"time\" on measurement \"mymeas\" is invalid dropped=1"}

      Dalam TSDB untuk InfluxDB®, kata kunci time adalah kunci tag yang tidak valid. Sistem gagal menulis titik dan mengembalikan kode kesalahan 400.

  • Karakter

    Untuk menjaga penggunaan ekspresi reguler sederhana dan tanda kutip, kami merekomendasikan Anda tidak menggunakan karakter berikut dalam pengenal: backslash (\), caret (^), tanda dolar ($), tanda kutip tunggal ('), tanda kutip ganda ("), tanda sama dengan (=), dan koma (,).

Kapan saya menggunakan tanda kutip tunggal (') dan tanda kutip ganda (") untuk menulis data?

  • Jika Anda menulis data berdasarkan protokol baris, jangan gunakan tanda kutip tunggal (') atau tanda kutip ganda (") untuk mengapit pengenal. Dalam contoh berikut, kueri menjadi lebih rumit setelah tanda kutip digunakan. Pengenal dapat berupa nama kueri kontinu, nama basis data, kunci bidang, nama pengukuran, nama kebijakan retensi, nama langganan, kunci tag, atau nama pengguna.

    • Tulis pengukuran yang diapit dengan tanda kutip ganda ("): INSERT "bikes" bikes_available=3. Kueri yang berlaku: SELECT * FROM "\"bikes\"".

    • Tulis pengukuran yang diapit dengan tanda kutip tunggal ('): INSERT 'bikes' bikes_available=3. Kueri yang berlaku: SELECT * FROM "\'bikes\'".

    • Tulis pengukuran yang tidak diapit dengan tanda kutip: INSERT bikes bikes_available=3. Kueri yang berlaku: SELECT * FROM "bikes".

  • Anda harus menggunakan tanda kutip ganda (") untuk mengapit nilai string bidang.

    Tulis data: INSERT bikes happiness="level 2". Kueri yang berlaku: SELECT * FROM "bikes" WHERE "happiness"='level 2'.

  • Jangan gunakan tanda kutip untuk mengapit karakter khusus. Gunakan karakter escape backslash (\) untuk memformat karakter khusus.

    Tulis data: INSERT wacky va\"ue=4. Kueri yang berlaku: SELECT "va\"ue" FROM "wacky".

Apakah granularitas timestamp memiliki dampak signifikan pada kinerja sistem?

Ya, granularitas timestamp memiliki efek signifikan pada kinerja sistem. Untuk memaksimalkan kinerja sistem, kami merekomendasikan Anda menggunakan granularitas waktu yang lebih kasar untuk menulis data ke TSDB untuk InfluxDB®.

Dalam dua contoh berikut, granularitas waktu default (dalam nanodetik) ditentukan untuk permintaan pertama. Granularitas waktu (dalam detik) ditentukan untuk permintaan kedua:

curl -i -XPOST "https://<Endpoint>:3242/write?db=weather&u=<Nama Akun>&p=<Kata Sandi>"--data-binary 'temperature,location=1 value=90 1472666050000000000'

curl -i -XPOST "https://<Endpoint>:3242/write?db=weather&precision=s&u=<Nama Akun>&p=<Kata Sandi>"--data-binary 'temperature,location=1 value=90 1472666050'

Namun, jika Anda menggunakan granularitas waktu yang lebih kasar untuk menulis data, titik-titik duplikat dengan timestamp yang sama rentan terjadi. Dalam hal ini, beberapa titik mungkin ditimpa.

CLI TSDB untuk InfluxDB®

Mengapa saya tidak dapat terhubung ke TSDB untuk InfluxDB® menggunakan Influx CLI?

Periksa apakah Anda memenuhi kondisi berikut:

  • Anda harus memiliki izin eksekusi. Anda dapat menjalankan perintah chmod +x ./influx untuk menambahkan izin.

  • Anda harus menentukan opsi -ssl dalam pernyataan koneksi.

  • Anda hanya perlu menentukan string koneksi untuk opsi -host, seperti ts-bp17j28j2y7pm****.influxdata.rds.aliyuncs.com. Anda tidak perlu menentukan protokol dan nomor port.

Bagaimana cara mengaktifkan CLI TSDB untuk InfluxDB® agar mengembalikan timestamp yang mudah dibaca manusia?

Saat Anda terhubung ke CLI untuk pertama kali, Anda harus menentukan granularitas waktu berdasarkan RFC 3339.

$ influx -ssl -username <Nama Akun>-password <Kata Sandi>-host <Endpoint>-port 3242-precision rfc3339

Anda juga dapat menentukan granularitas waktu setelah Anda terhubung ke CLI.

$ influx -ssl -username <Username> -password <Kata Sandi> -host <Endpoint> -port 3242
Connected to https://<Endpoint>:3242 version 1.7.x
> precision rfc3339

Untuk informasi lebih lanjut, lihat CLI TSDB untuk InfluxDB®.

Bagaimana cara menjalankan pernyataan USE untuk menentukan basis data jika saya bukan administrator?

Jika Anda bukan administrator, Anda dapat menjalankan pernyataan USE <database_name> untuk menentukan basis data. Namun, dalam hal ini, Anda harus memiliki izin READ dan WRITE, atau hanya izin READ untuk basis data tersebut. Jika tidak, sistem akan mengembalikan kesalahan berikut:

ERR:Database<database_name> doesn't exist. Run SHOW DATABASES for a list of existing databases.
Catatan

Pernyataan SHOW DATABASES mengembalikan hanya basis data yang pengguna non-administrator miliki akses READ atau WRITE.

Bagaimana cara menggunakan CLI TSDB untuk InfluxDB® untuk menulis data ke kebijakan retensi non-default?

Jalankan pernyataan INSERT INTO [<database>.]<retention_policy> <line_protocol> untuk menulis data ke kebijakan retensi non-default. Metode ini hanya dapat digunakan dalam CLI TSDB untuk InfluxDB® untuk menentukan basis data dan kebijakan retensi. Untuk menulis data melalui HTTP, Anda harus menggunakan parameter db dan rp untuk menentukan basis data dan kebijakan retensi, masing-masing. Parameter rp bersifat opsional. Contoh:

> INSERT INTO one_day mortality bool=true
Using retention policy one_day
> SELECT * FROM "mydb"."one_day"."mortality"
name: mortality
---------------
time                             bool
2016-09-13T22:29:43.229530864Z   true

Jika Anda ingin mengkueri data dalam kebijakan retensi non-default, Anda harus sepenuhnya memenuhi syarat pengukuran. Anda dapat menggunakan sintaks berikut untuk sepenuhnya memenuhi syarat pengukuran:

"<database>"."<retention_policy>"."<measurement>"

Tipe data

Mengapa saya tidak dapat mengkueri nilai bidang tipe BOOLEAN?

Sintaks untuk menulis nilai BOOLEAN berbeda dari sintaks untuk mengkueri nilai BOOLEAN.

Sintaks untuk nilai BOOLEAN

Tulis

Kueri

t,f

T,F

true,false

True,False

TRUE,FALSE

Sebagai contoh, pernyataan SELECT * FROM "hamlet" WHERE "bool"=True mengembalikan semua titik di mana nilai bool adalah TRUE. Namun, pernyataan SELECT * FROM "hamlet" WHERE "bool"=T tidak mengembalikan hasil apa pun.

Bagaimana cara TSDB untuk InfluxDB® menangani perbedaan tipe data bidang di seluruh shard?

Tipe data nilai bidang bisa berupa FLOAT, INTEGER, STRING, atau BOOLEAN. Tipe data nilai bidang harus sama dalam setiap shard. Namun, tipe data nilai bidang dapat berbeda di seluruh shard.

  • Pernyataan SELECT

    Pernyataan SELECT mengembalikan semua nilai bidang jika semua nilai bidang memiliki tipe data yang sama. Jika tipe data nilai bidang berbeda di seluruh shard, TSDB untuk InfluxDB® melakukan operasi yang diperlukan untuk mengonversi tipe data (jika berlaku). Kemudian, TSDB untuk InfluxDB® mengembalikan semua nilai bidang berdasarkan urutan tipe data berikut: FLOAT, INTEGER, STRING, dan BOOLEAN. Jika nilai bidang ditemukan memiliki tipe data berbeda dalam data Anda, gunakan sintaks <field_key>::<type> untuk mengkueri tipe data yang berbeda. Contoh:

    Dalam pengukuran just_my_type, bidang my_field memiliki empat nilai dalam empat shard. Tipe data nilai-nilai bidang my_field berbeda satu sama lain. Tipe datanya adalah FLOAT, INTEGER, STRING, dan BOOLEAN.

    Pernyataan SELECT * hanya mengembalikan nilai tipe data FLOAT dan INTEGER. Dalam respons terhadap pernyataan tersebut, TSDB untuk InfluxDB® mengonversi nilai tipe data INTEGER menjadi nilai tipe data FLOAT.

    > SELECT * FROM just_my_type
    
    name: just_my_type
    ------------------
    time                      my_field
    2016-06-03T15:45:00Z9.87034
    2016-06-03T16:45:00Z7

    Pernyataan SELECT <field_key>::<type> [...] mengembalikan nilai semua tipe data. TSDB untuk InfluxDB® menyimpan data keluaran setiap tipe dalam kolom terpisah, dan nama kolom bertambah, misalnya my_field, my_field_1, dan my_field_2. TSDB untuk InfluxDB® dapat digunakan untuk mengonversi tipe data nilai bidang menjadi tipe data lain. Namun, ini didasarkan pada persyaratan tertentu. Dalam contoh berikut, TSDB untuk InfluxDB® mengonversi integer 7 menjadi bilangan floating-point yang termasuk dalam kolom pertama. TSDB untuk InfluxDB® mengonversi bilangan floating-point 9.879034 menjadi integer yang termasuk dalam kolom kedua. TSDB untuk InfluxDB® tidak dapat mengonversi bilangan floating-point atau integer menjadi string atau nilai Boolean.

    > SELECT "my_field"::float,"my_field"::integer,"my_field"::string,"my_field"::boolean FROM just_my_type
    
    name: just_my_type
    ------------------
    time                   my_field  my_field_1  my_field_2  my_field_3
    2016-06-03T15:45:00Z9.870349
    2016-06-03T16:45:00Z77
    2016-06-03T17:45:00Z                         a string
    2016-06-03T18:45:00Z                                     true
  • Pernyataan SHOW FIELD KEYS

    Pernyataan SHOW FIELD KEYS mengembalikan semua tipe data dalam setiap shard yang terkait dengan kunci bidang tertentu. Contoh:

    Dalam pengukuran just_my_type, bidang my_field memiliki empat nilai dalam empat shard. Tipe data nilai-nilai bidang my_field berbeda satu sama lain. Tipe datanya adalah FLOAT, INTEGER, STRING, dan BOOLEAN.

    Pernyataan SHOW FIELD KEYS mengembalikan semua empat tipe data.

    > SHOW FIELD KEYS
    
    name: just_my_type
    fieldKey   fieldType
    -----------------
    my_field   float
    my_field   string
    my_field   integer
    my_field   boolean

Berapa bilangan bulat terkecil dan terbesar yang dapat disimpan oleh TSDB untuk InfluxDB®?

TSDB untuk InfluxDB® menyimpan bilangan bulat sebagai nilai Int64 bertanda. Nilai Int64 valid terkecil adalah -9023372036854775808. Nilai Int64 valid terbesar adalah 9023372036854775807. Untuk informasi lebih lanjut, lihat Go builtins.

Jika nilai yang disimpan mendekati bilangan bulat terkecil atau terbesar, hasil yang tidak terduga mungkin terjadi. Beberapa fungsi dan operator mungkin mengonversi nilai Int64 menjadi nilai Float64 selama komputasi. Namun, ini dapat menyebabkan masalah overflow.

Berapa timestamp terkecil dan terbesar yang dapat disimpan oleh TSDB untuk InfluxDB®?

Timestamp minimum adalah -9223372036854775806 atau 1677-09-21T00:12:43.145224194Z. Timestamp maksimum adalah 9223372036854775806 atau 2262-04-11T23:47:16.854775806Z. Jika timestamp jatuh di luar rentang yang valid, kesalahan parsing terjadi.

Bagaimana cara melihat tipe data bidang?

Anda dapat menjalankan pernyataan SHOW FIELD KEYS untuk melihat tipe data bidang.

> SHOW FIELD KEYS FROM all_the_types
name: all_the_types
-------------------
fieldKey  fieldType
---------
blue      string
green     boolean
orange    integer
yellow    float

Apakah saya bisa mengonversi tipe data bidang?

Ya, Anda dapat mengubah tipe data bidang. Namun, hanya sejumlah terbatas tipe data yang dapat dikonversi ke tipe data lain melalui TSDB untuk InfluxDB®. Gunakan sintaks <field_key>::<type> untuk mengonversi nilai bidang dari integer menjadi bilangan floating-point atau sebaliknya. Untuk detail lebih lanjut tentang konversi tipe data, lihat Eksplorasi Data. Konversi dari bilangan floating-point atau integer menjadi string atau nilai Boolean tidak didukung. Demikian pula, konversi dari string atau nilai Boolean menjadi bilangan floating-point atau integer juga tidak dapat dilakukan.

Anda dapat menggunakan metode alternatif berikut untuk mengubah tipe data:

  • Tulis data ke bidang lain

    Metode paling sederhana adalah menulis data dengan tipe data baru ke bidang lain dalam deret yang sama.

  • Gunakan sistem shard

    Tipe data nilai bidang harus sama dalam setiap shard. Namun, tipe data nilai bidang dapat berbeda di seluruh shard.

    Jika Anda ingin mengubah tipe data nilai bidang, jalankan pernyataan SHOW SHARDS untuk memeriksa nilai end_time dari shard saat ini. TSDB untuk InfluxDB® memungkinkan penulisan data dengan tipe data berbeda ke bidang yang ada, asalkan timestamp titik terjadi setelah waktu yang ditentukan oleh end_time. Sebagai contoh, jika timestamp data terjadi sebelum waktu akhir shard saat ini, Anda hanya dapat menulis integer ke bidang tersebut. Namun, jika timestamp data terjadi setelah waktu yang ditentukan oleh end_time, Anda dapat menulis bilangan floating-point ke bidang tersebut.

    Proses ini tidak mengubah tipe data nilai bidang dalam shard asli.

Fungsi InfluxQL

Bagaimana cara melakukan operasi matematika dalam fungsi?

Anda tidak dapat menggunakan TSDB untuk InfluxDB® untuk melakukan operasi matematika dalam fungsi. Kami merekomendasikan Anda menjalankan subkueri untuk mencapai tujuan yang sama. Contoh:

InfluxQL tidak mendukung sintaks berikut:

SELECT MEAN("dogs"-"cats")from"pet_daycare"

Namun, Anda dapat menjalankan subkueri berikut untuk mencapai tujuan yang sama:

> SELECT MEAN("difference") FROM (SELECT "dogs"-"cat" AS "difference" FROM "pet_daycare")

Untuk informasi lebih lanjut tentang subquery, lihat Data Exploration.

Mengapa respons kueri menggunakan epoch 0 sebagai timestamp?

Dalam kebanyakan kasus, epoch 0 (1970-01-01T00:00:00Z) digunakan sebagai timestamp null dalam TSDB untuk InfluxDB®. Jika tidak ada timestamp yang dapat dikembalikan untuk kueri Anda, TSDB untuk InfluxDB® mengembalikan epoch 0 sebagai timestamp. Sebagai contoh, aturan ini berlaku ketika tidak ada rentang waktu yang ditentukan untuk fungsi agregat.

Fungsi InfluxQL mana yang dapat disarangkan?

Fungsi InfluxQL berikut dapat disarangkan:

  • COUNT() disarangkan dalam DISTINCT()

  • CUMULATIVE_SUM()

  • DERIVATIVE()

  • DIFFERENCE()

  • ELAPSED()

  • MOVING_AVERAGE()

  • NON_NEGATIVE_DERIVATIVE()

  • HOLT_WINTERS() dan HOLT_WINTERS_WITH_FIT()

Untuk informasi lebih lanjut tentang cara menggunakan subkueri sebagai pengganti fungsi bersarang, lihat Eksplorasi Data.

Migrasi data InfluxDB

Bagaimana cara memigrasi InfluxDB yang dikelola sendiri ke cloud?

Anda dapat menggunakan alat resmi influx_inspect yang disediakan oleh InfluxDB untuk mengekspor file protokol baris dari server InfluxDB yang dikelola sendiri, dan kemudian menggunakan CLI TSDB untuk InfluxDB® untuk mengimpor file ke TSDB untuk InfluxDB®.

Bagaimana cara memigrasi data antara instans InfluxDB yang berbeda di cloud?

Anda tidak dapat memigrasikan data antar instans InfluxDB secara langsung. Untuk melakukannya, Anda perlu mengkueri dan mengekspor data yang akan dimigrasi, lalu memigrasikan data secara manual. Selama proses kueri, hindari kueri besar yang dapat mempengaruhi stabilitas sistem. Anda dapat memfilter berdasarkan waktu atau deret waktu untuk memigrasikan beberapa data sekaligus.

Bagaimana cara memigrasi data dari InfluxDB ke LindormTSDB?

LindormTSDB menyediakan Layanan Lindorm Tunnel (LTS) untuk mengimpor data historis dari InfluxDB. Anda dapat menggunakan LTS untuk memigrasikan data penuh dari InfluxDB ke LindormTSDB.