All Products
Search
Document Center

Simple Log Service:Peningkatan SQL

Last Updated:Jun 03, 2026

Peningkatan SQL secara otomatis menskalakan sumber daya penyimpanan dan komputasi untuk mempercepat kueri dan analisis di Simple Log Service.

Cara kerja

Latar belakang

Simple Log Service memisahkan lapisan penyimpanan dari komputasi: lapisan penyimpanan berbasis shard menangani penyimpanan dan manajemen data, sedangkan lapisan komputasi menggunakan SQL untuk kueri dan analisis.

Untuk meningkatkan performa analisis, Anda dapat meningkatkan kedua lapisan tersebut. Bagian berikut membandingkan solusi umum.

Solusi 1: Pemisahan shard

Secara manual memisahkan shard untuk memperluas kapasitas penyimpanan dan meningkatkan throughput komputasi.

Batasan:

  • Metode ini hanya berlaku untuk data yang baru ditulis.

  • Shard aktif dikenai biaya. Billing.

  • Kueri tunggal dibatasi oleh konkurensi dan volume data.

  • Anda harus secara manual memisahkan atau menggabungkan shard.

Solusi 2: Kueri bagi dan taklukkan

Pecah kueri besar menjadi beberapa subkueri dan agregasikan hasilnya.

Batasan:

  • Memerlukan pemeliharaan logika agregasi sekunder dan penyimpanan antara. Gunakan Scheduled SQL untuk hal ini.

  • Mengubah dimensi analisis memerlukan rekonstruksi logika agregasi.

  • Kemacetan komputasi masih dapat terjadi pada volume data yang sangat besar.

Solusi 3: Gunakan Peningkatan SQL

Peningkatan SQL secara otomatis menskalakan sumber daya penyimpanan dan komputasi berdasarkan volume data untuk mempercepat analisis.

Perbandingan

Solusi 1: Pemisahan Shard

Solusi 2: Kueri Bagi dan Taklukkan

Solusi 3: Gunakan Peningkatan SQL

Isolasi resource

Resource penyimpanan independen, resource komputasi bersama

Resource penyimpanan independen, resource komputasi bersama

Resource penyimpanan independen dan resource komputasi khusus elastis

Granularitas penskalaan

Penskalaan lapisan penyimpanan

Penskalaan lapisan komputasi

Penskalaan elastis untuk kedua lapisan penyimpanan dan komputasi

Overhead pemeliharaan

Memerlukan intervensi manual.

Anda harus memecah kueri besar menjadi subkueri.

Penjadwalan sepenuhnya otomatis.

Kompleksitas kueri

Mendukung SQL native.

Memerlukan pengembangan kustom.

Mendukung SQL native.

Prasyarat

Prosedur

Aktifkan Peningkatan SQL dengan salah satu cara berikut:

  • Aktifkan untuk kueri tunggal: hanya berlaku untuk kueri saat ini di Logstore.

  • Aktifkan secara default: berlaku untuk semua kueri di Project, termasuk alert dan dashboard.

Konsol

Aktifkan untuk kueri tunggal

  1. Masuk ke Konsol Simple Log Service.

  2. Di bagian Projects, klik Project yang diinginkan.

    image

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

    image

  4. Klik image > SQL Enhancement.

Aktifkan secara default

  1. Masuk ke Konsol Simple Log Service.

  2. Di bagian Projects, klik Project yang diinginkan.

    image

  3. Klik ikon Project Overview.

    Klik ikon Home di bilah navigasi atas untuk kembali ke daftar Project atau beralih Project.

  4. Arahkan kursor ke CUs of SQL-dedicated Instance dan klik Settings.

  5. Di panel Modify CUs of SQL-dedicated Instance, aktifkan sakelar Enable by Default, lalu klik OK.

API

Aktifkan untuk kueri tunggal

  • GetLogs (mengembalikan hasil tidak terkompresi) - Kueri log di Logstore

    Konfigurasikan salah satu parameter berikut.

    • Parameter powerSql: atur ke true untuk Peningkatan SQL, atau false (default) untuk SQL Standar.

    • Parameter query: tambahkan awalan set session parallel_sql=true; pada pernyataan SQL Anda. Contohnya, * | select count(*) as pv menjadi * | set session parallel_sql=true; select count(*) as pv.

  • GetLogsV2 (mengembalikan hasil terkompresi) - Kueri data log di Logstore

    Konfigurasikan salah satu parameter berikut.

    • Parameter powerSql: atur ke true untuk Peningkatan SQL, atau false (default) untuk SQL Standar.

    • Parameter query: tambahkan awalan set session parallel_sql=true; pada pernyataan SQL Anda. Contohnya, * | select count(*) as pv menjadi * | set session parallel_sql=true; select count(*) as pv.

Aktifkan secara default

Pada operasi Buat instans Dedicated SQL, atur useAsDefault=true untuk mengaktifkan Peningkatan SQL secara default untuk Project.

SDK

Contoh berikut menggunakan Java SDK.

Prasyarat

Instal Java SDK

Aktifkan untuk kueri tunggal

  • Metode GetLogs()

    Konfigurasikan salah satu parameter berikut.

    • Parameter powerSql: atur ke true untuk Peningkatan SQL, atau false (default) untuk SQL Standar.

    • Parameter query: tambahkan awalan set session parallel_sql=true; pada pernyataan SQL Anda. Contohnya, * | select count(*) as pv menjadi * | set session parallel_sql=true; select count(*) as pv.

    import com.aliyun.openservices.log.Client;
    import com.aliyun.openservices.log.exception.LogException;
    import com.aliyun.openservices.log.response.GetLogsResponse;
    import java.util.Date;
    public class CreateSqlInstance {
        public static void main(String[] args) throws LogException {
            // Contoh ini menunjukkan cara mendapatkan ID AccessKey dan Rahasia AccessKey dari variabel lingkungan.
            String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
            String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
            // Titik akhir untuk Simple Log Service. Contoh ini menggunakan titik akhir untuk wilayah China (Hangzhou). Ganti dengan titik akhir yang sebenarnya.
            String host = "https://cn-hangzhou.log.aliyuncs.com";
            // Buat klien Simple Log Service.
            Client client = new Client(host, accessId, accessKey);
            // Nama Project.
            String projectName = "aliyun-project-test";
            // Nama Logstore.
            String logstore = "request_log";
            // Menentukan apakah akan mengaktifkan Peningkatan SQL secara default. Nilai default: false.
            boolean useAsDefault = true;
            // Pernyataan kueri SQL.
            String query = "* | select count(1)";
            // Jumlah maksimum log yang dikembalikan. Parameter ini hanya berlaku jika parameter query berupa pernyataan pencarian. Rentang nilai: 0 hingga 100. Nilai default: 100.
            int line = 3;
            // Nomor baris tempat memulai kueri. Parameter ini hanya berlaku jika parameter query berupa pernyataan pencarian. Nilai default: 0.
            int offset = 0;
            // Menentukan apakah akan mengembalikan log dalam urutan kronologis terbalik berdasarkan stempel waktu log, akurat hingga menit.
            // true: Mengembalikan log dalam urutan kronologis terbalik.
            // false (default): Mengembalikan log dalam urutan kronologis.
            boolean reverse = false;
            // Menentukan apakah akan menggunakan Peningkatan SQL.
            // true: Gunakan Peningkatan SQL.
            // false (default): Gunakan SQL Standar.
            boolean powerSql = true;
            int from = (int) (new Date().getTime() / 1000 - 600);
            int to = (int) (new Date().getTime() / 1000);
            GetLogsResponse getLogsResponse = client.GetLogs(projectName, logstore, from, to, "", query, line, offset, reverse, powerSql);
            System.out.println(getLogsResponse.getCpuSec());
        }
    }

Aktifkan secara default

Atur boolean useAsDefault = true untuk mengaktifkan Peningkatan SQL secara default untuk Project.

import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.exception.LogException;
import com.aliyun.openservices.log.request.CreateOrUpdateSqlInstanceRequest;
public class CreateSqlInstance {
    public static void main(String[] args) throws LogException {
        // Contoh ini menunjukkan cara mendapatkan ID AccessKey dan Rahasia AccessKey dari variabel lingkungan.
        String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
        // Nama Project.
        String projectName = "aliyun-test-project";
        // Titik akhir untuk Simple Log Service. Contoh ini menggunakan titik akhir untuk wilayah China (Hangzhou). Ganti dengan titik akhir yang sebenarnya.
        String host = "https://cn-hangzhou.log.aliyuncs.com";
        // Buat klien Simple Log Service.
        Client client = new Client(host, accessId, accessKey);
        int cu = 100;
        boolean useAsDefault = true;
        client.createSqlInstance(new CreateOrUpdateSqlInstanceRequest(projectName, cu, useAsDefault));
    }
}

FAQ

  • Bagaimana cara memeriksa waktu CPU?

    Setelah menjalankan kueri, arahkan kursor ke Analysis Results untuk melihat waktu CPU. Bidang Consumed CPU Time di panel statistik kanan atas menunjukkan waktu CPU yang digunakan, dalam satuan detik.

  • Biaya kueri Dedicated SQL

    Biaya bervariasi tergantung volume data dan kompleksitas kueri. Tabel berikut menunjukkan contohnya.

    Pernyataan kueri

    Volume data (baris)

    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