全部产品
Search
文档中心

Simple Log Service:SQL dalam mode sepenuhnya akurat

更新时间:Jul 06, 2025

Topik ini menjelaskan implementasi dan langkah-langkah untuk mengaktifkan mode sepenuhnya akurat pada SQL, memungkinkan penggunaan efisien dari kemampuan inti SQL.

Batasan

Fitur berikut tidak tersedia jika Anda mengaktifkan mode sepenuhnya akurat untuk SQL:

Implementasi

Mode sepenuhnya akurat memastikan hasil yang akurat dan lengkap dengan menukar waktu untuk sumber daya. Dengan mengonversi batasan sumber daya ke dimensi waktu, tugas kueri berjalan stabil di bawah tingkat beban aman dalam rentang waktu yang ditentukan hingga hasil akurat atau eksekusi habis waktu. Implementasi teknis melibatkan strategi seperti alokasi tugas berdasarkan kolam sumber daya terisolasi, kontrol prioritas antrian untuk pengguna, dan pembagian beban berdasarkan jenis tugas (misalnya komputasi-intensif dan IO-intensif). Strategi ini mencapai penjadwalan yang masuk akal dan pemanfaatan sumber daya yang efisien, memastikan akurasi hasil akhir.

Tugas kueri reguler berjalan di kolam sumber daya komputasi sesuai permintaan. Ketika tugas kueri mencapai batas sumber daya, tugas tersebut secara otomatis dihentikan dan mengembalikan hasil yang tidak akurat. Jika mode sepenuhnya akurat diaktifkan, tugas kueri berjalan di kolam sumber daya komputasi akurat khusus. Sistem memastikan tugas kueri berjalan stabil di bawah tingkat beban aman hingga semua data dimuat dan perhitungan akurat selesai, meskipun batas sumber daya tercapai.

Prasyarat

Prosedur

Simple Log Service mendukung metode aktif sekali. Setelah mode sepenuhnya akurat diaktifkan, hanya operasi kueri dan analisis di Logstore saat ini yang dapat menggunakan mode tersebut.

Catatan

Anda dapat menetapkan periode timeout maksimum untuk mode sepenuhnya akurat menggunakan API atau SDK, atau di konsol Simple Log Service. Periode timeout maksimum untuk operasi analisis adalah 55 detik.

Konsol

  1. Masuk ke Konsol Simple Log Service.

  2. Di bagian Proyek, klik yang Anda inginkan.

    image

  3. Pada tab Log Storage > Logstores, klik logstore yang Anda inginkan.

    image

  4. Pilih image > Completely Accurate.

    Penting

    Anda dapat mengonfigurasi parameter query_max_run_time untuk memodifikasi periode timeout maksimum.

    Dalam contoh ini, pernyataan kueri * | select count(*) as pv ditentukan. Setelah Anda menambahkan set session query_max_run_time=10s; ke pernyataan analitik, pernyataan kueri menjadi * | set session query_max_run_time=10s; select count(*) as pv.

    image

API

  • GetLogs (hasil kueri tidak dikompres dan langsung dikembalikan)

    • Parameter: query

      Dalam contoh ini, pernyataan kueri * | select count(*) as pv dijalankan.

      • Aktifkan mode sepenuhnya akurat: Tambahkan set session allow_incomplete=false; ke pernyataan analitik, menunjukkan bahwa mode sepenuhnya akurat digunakan. Pernyataan kueri menjadi * | set session allow_incomplete=false; select count(*) as pv.

      • Tentukan periode timeout maksimum: Tambahkan set session query_max_run_time=10s; ke pernyataan analitik, menunjukkan periode timeout maksimum adalah 10 detik. Pernyataan kueri menjadi * | set session query_max_run_time=10s; select count(*) as pv.

      • Aktifkan mode sepenuhnya akurat dan tentukan periode timeout maksimum: Pernyataan kueri menjadi * | set session allow_incomplete=false; set session query_max_run_time=10s;select count(*) as pv.

  • GetLogsV2 (hasil kueri dikompres lalu dikembalikan)

    • Parameter: query

      Dalam contoh ini, pernyataan kueri * | select count(*) as pv dijalankan.

      • Aktifkan mode sepenuhnya akurat: Tambahkan set session allow_incomplete=false; ke pernyataan analitik, menunjukkan bahwa mode sepenuhnya akurat digunakan. Pernyataan kueri menjadi * | set session allow_incomplete=false; select count(*) as pv.

      • Tentukan periode timeout maksimum: Tambahkan set session query_max_run_time=10s; ke pernyataan analitik, menunjukkan periode timeout maksimum adalah 10 detik. Pernyataan kueri menjadi * | set session query_max_run_time=10s; select count(*) as pv.

      • Aktifkan mode sepenuhnya akurat dan tentukan periode timeout maksimum: Pernyataan kueri menjadi * | set session allow_incomplete=false; set session query_max_run_time=10s;select count(*) as pv.

SDK

Dalam contoh ini, Simple Log Service SDK for Java digunakan.

Prasyarat

Simple Log Service SDK for Java telah diinstal. Untuk informasi lebih lanjut, lihat Instal Simple Log Service SDK for Java.

  • Metode GetLogs()

    • Parameter: query

      Dalam contoh ini, pernyataan kueri * | select count(*) as pv dijalankan.

      • Aktifkan mode sepenuhnya akurat: Tambahkan set session allow_incomplete=false; ke pernyataan analitik, menunjukkan bahwa mode sepenuhnya akurat digunakan. Pernyataan kueri menjadi * | set session allow_incomplete=false; select count(*) as pv.

      • Tentukan periode timeout maksimum: Tambahkan set session query_max_run_time=10s; ke pernyataan analitik, menunjukkan periode timeout maksimum adalah 10 detik. Pernyataan kueri menjadi * | set session query_max_run_time=10s; select count(*) as pv.

      • Aktifkan mode sepenuhnya akurat dan tentukan periode timeout maksimum: Pernyataan kueri menjadi * | set session allow_incomplete=false; set session query_max_run_time=10s;select count(*) as pv.

    • Parameter: session

      • Aktifkan mode sepenuhnya akurat: request.SetSession("allow_incomplete=false");.

      • Tentukan periode timeout maksimum: request.SetSession("query_max_run_time=10s");.

      • Aktifkan mode sepenuhnya akurat dan tentukan periode timeout maksimum: request.SetSession("allow_incomplete=false;query_max_run_time=10s").

    import com.aliyun.openservices.log.Client;
    import com.aliyun.openservices.log.exception.LogException;
    import com.aliyun.openservices.log.request.GetLogsRequest;
    import com.aliyun.openservices.log.response.GetLogsResponse;
    
    public class CrearteLogStore {
        public static void main(String[] args) throws LogException {
            // Konfigurasikan variabel lingkungan. Dalam contoh ini, ID AccessKey dan Rahasia AccessKey diperoleh dari variabel lingkungan.
            String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
            String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
            // Titik akhir Simple Log Service. Dalam contoh ini, titik akhir Simple Log Service untuk wilayah China (Hangzhou) digunakan. Ganti nilai parameter dengan titik akhir sebenarnya.
            String host = "https://cn-beijing.log.aliyuncs.com";
            // Buat klien Simple Log Service.
            Client client = new Client(host, accessId, accessKey);
            // Nama proyek.
            String projectName = "aliyun-test-project";
            // Nama logstore.
            String logstore = "request_log";
            String query = "* | SELECT count(0)";
            int from = (int)(System.currentTimeMillis()/1000) - 60;
            int to = (int)(System.currentTimeMillis()/1000);
            GetLogsRequest request = new GetLogsRequest(projectName, logstore, from, to, "", query);
            request.SetSession("allow_incomplete=false;query_max_run_time=10s");
            GetLogsResponse response = client.GetLogs(request);
            System.out.println(response.getCpuSec());
        }
    }

FAQ

  • Bagaimana cara saya mendapatkan jumlah waktu CPU yang saya gunakan?

    Setelah melakukan operasi analisis dan kueri, arahkan kursor ke Analysis Results untuk melihat jumlah waktu CPU yang Anda gunakan. Gambar berikut menunjukkan contohnya.计费

  • Berapa biaya fitur Dedicated SQL ketika saya mengeksekusi pernyataan kueri sekali?

    Biaya fitur Dedicated SQL bervariasi berdasarkan jumlah data tempat Anda mengeksekusi pernyataan kueri. Tabel berikut memberikan contoh.

    Pernyataan kueri

    Jumlah data (baris)

    Biaya rata-rata per eksekusi (USD)

    * | select avg(double_0) from stress_s1_mil1

    4 miliar

    0.004435

    * | select avg(double_0), sum(double_0),), min(double_0), count(double_0) from stress_s1_mil1

    4 miliar

    0.006504

    * | select avg(double_0), sum(double_1), max(double_2), min(double_3), count(double_4) from stress_s1_mil1

    4 miliar

    0.013600

    * | select key_0 , avg(double_0) as pv from stress_s1_mil1 group by key_0 order by pv desc limit 1000

    4 miliar

    0.011826

    * | select long_0, avg(double_0) as pv from stress_s1_mil1 group by long_0 order by pv desc limit 1000

    4 miliar

    0.011087

    * | select long_0, long_1, avg(double_0) as pv from stress_s1_mil1 group by long_0,long_1 order by pv desc limit 1000

    0.3 miliar

    0.010791

    * | select avg(double_0) from stress_s1_mil1 where key_0='key_987'

    4 miliar

    0.00007