All Products
Search
Document Center

Simple Log Service:Mode SQL sepenuhnya akurat

Last Updated:Mar 26, 2026

Topik ini menjelaskan cara kerja mode sepenuhnya akurat dan cara menggunakannya.

Batasan

Mode sepenuhnya akurat tidak didukung untuk fitur-fitur berikut:

Cara kerja

Mode sepenuhnya akurat menjamin hasil yang tepat dengan menukar waktu eksekusi yang lebih lama demi sumber daya komputasi tambahan. Mode ini mengonversi berbagai batasan sumber daya, seperti I/O dan CPU, menjadi satu batas berbasis waktu. Jika sebuah kueri mencapai batas sumber daya, sistem akan melakukan throttle terhadap kueri tersebut ke laju yang berkelanjutan alih-alih menghentikannya, sehingga kueri dapat berjalan hingga selesai atau sampai timeout tercapai. Mode ini menggunakan strategi seperti alokasi task dalam resource pool terisolasi, prioritisasi antrian berbasis pengguna, dan load balancing untuk memastikan penjadwalan sumber daya yang efisien.

image

Seperti ditunjukkan pada gambar berikut, kueri standar dijalankan dalam compute pool standar. Jika kueri mencapai batas sumber daya, kueri tersebut langsung dipotong, sehingga menghasilkan hasil yang tidak akurat. Saat Anda mengaktifkan mode sepenuhnya akurat, kueri dijalankan dalam compute pool akurat khusus. Bahkan jika kueri tersebut mengalami batasan sumber daya, sistem memastikan task tetap berjalan pada laju yang berkelanjutan hingga seluruh data dimuat dan komputasi selesai.

image

Prasyarat

Prosedur

Simple Log Service memungkinkan Anda mengaktifkan mode sepenuhnya akurat untuk operasi kueri dan analisis individual dalam Logstore tertentu.

Catatan

Anda dapat mengatur timeout maksimum untuk mode sepenuhnya akurat melalui Konsol, API, atau SDK. Timeout maksimum untuk pernyataan analitik adalah 55 detik.

Konsol

  1. Masuk ke Konsol Simple Log Service.

  2. Pada bagian Projects, klik proyek yang diinginkan.

    image

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

    image

  4. Klik image > Completely Accurate.

    Penting

    Anda dapat menyesuaikan timeout dengan mengatur parameter query_max_run_time.

    Misalnya, jika pernyataan analitik Anda adalah * | select count(*) as pv, Anda dapat menambahkan set session query_max_run_time=10s; ke pernyataan tersebut. Pernyataan analitik lengkap menjadi * | set session query_max_run_time=10s; select count(*) as pv.

    image

API

  • GetLogs (mengembalikan hasil tidak terkompresi) - Menanyakan data log dalam Logstore

    • Parameter: query

      Misalnya, pernyataan analitik adalah * | select count(*) as pv.

      • Aktifkan mode sepenuhnya akurat: Tambahkan di awal set session allow_incomplete=false; pada pernyataan analitik Anda. Misalnya, * | select count(*) as pv menjadi * | set session allow_incomplete=false; select count(*) as pv.

      • Atur timeout analisis kueri: Tambahkan set session query_max_run_time=10s; ke pernyataan analisis. Ini mengatur waktu eksekusi maksimum menjadi 10s. Pernyataan analisisnya adalah: * | set session allow_incomplete=false; select count(*) as pv.

      • Untuk mengaktifkan mode sepenuhnya akurat dan mengatur timeout, tambahkan perintah session di awal pernyataan analitik Anda. Contohnya: * | set session allow_incomplete=false; set session query_max_run_time=10s; select count(*) as pv.

  • GetLogsV2 (mengembalikan hasil terkompresi) - Menanyakan data log dalam Logstore

    • Parameter: query

      Misalnya, pernyataan analitik adalah * | select count(*) as pv.

      • Aktifkan mode sepenuhnya akurat: Tambahkan di awal set session allow_incomplete=false; pada pernyataan analitik Anda. Misalnya, * | select count(*) as pv menjadi * | set session allow_incomplete=false; select count(*) as pv.

      • Atur timeout analisis kueri: Tambahkan set session query_max_run_time=10s; ke pernyataan analisis. Ini mengatur waktu eksekusi maksimum menjadi 10s. Pernyataan analisisnya adalah: * | set session allow_incomplete=false; select count(*) as pv.

      • Untuk mengaktifkan mode sepenuhnya akurat dan mengatur timeout, tambahkan perintah session di awal pernyataan analitik Anda. Contohnya: * | set session allow_incomplete=false; set session query_max_run_time=10s; select count(*) as pv.

SDK

Bagian ini menggunakan SDK Simple Log Service untuk Java sebagai contoh.

Prasyarat

Anda telah menginstal SDK Simple Log Service untuk Java. Untuk informasi selengkapnya, lihat Instal SDK Simple Log Service untuk Java.

  • Metode GetLogs()

    • Parameter: query

      Misalnya, pernyataan analitik adalah * | select count(*) as pv.

      • Aktifkan mode sepenuhnya akurat: Tambahkan di awal set session allow_incomplete=false; pada pernyataan analitik Anda. Misalnya, * | select count(*) as pv menjadi * | set session allow_incomplete=false; select count(*) as pv.

      • Atur timeout analisis kueri: Tambahkan set session query_max_run_time=10s; ke pernyataan analisis. Ini mengatur waktu eksekusi maksimum menjadi 10s. Pernyataan analisisnya adalah: * | set session allow_incomplete=false; select count(*) as pv.

      • Untuk mengaktifkan mode sepenuhnya akurat dan mengatur timeout, tambahkan perintah session di awal pernyataan analitik Anda. Contohnya: * | 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");.

      • Atur timeout kueri: request.SetSession("query_max_run_time=10s");.

      • Aktifkan mode sepenuhnya akurat dan atur timeout: 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 {
            // Contoh ini mengambil ID AccessKey dan AccessKey Secret dari variabel lingkungan.
            String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
            String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
            // Tetapkan endpoint untuk Simple Log Service. Contoh ini menggunakan endpoint untuk wilayah China (Beijing). Ganti dengan endpoint aktual Anda.
            String host = "https://cn-beijing.log.aliyuncs.com";
            // Buat client Simple Log Service.
            Client client = new Client(host, accessId, accessKey);
            // Tentukan nama Project.
            String projectName = "aliyun-test-project";
            // Tentukan 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 memeriksa waktu CPU?

    Setelah menjalankan kueri dan analisis, arahkan kursor ke Analysis Results untuk melihat waktu CPU, seperti yang ditunjukkan pada gambar berikut.计费

  • Berapa biaya untuk satu kali penggunaan Dedicated SQL?

    Biaya Dedicated SQL bervariasi berdasarkan volume data dan pernyataan kueri serta analisis yang Anda jalankan. Tabel berikut menyediakan beberapa contoh.

    Pernyataan kueri dan analisis

    Volume data (baris)

    Rata-rata biaya per eksekusi (/USD)

    * | select avg(double_0) from stress_s1_mil1

    4 miliar

    0,004435

    * | select avg(double_0), sum(double_0), max(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

    300 juta

    0,010791

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

    4 miliar

    0,00007