All Products
Search
Document Center

Simple Log Service:Peningkatan SQL

Last Updated:Jul 06, 2025

Topik ini menjelaskan implementasi dan prosedur penggunaan Peningkatan SQL, memungkinkan Anda memanfaatkan kemampuan inti secara efisien.

Implementasi

Informasi latar belakang

Layanan Log Sederhana memisahkan penyimpanan dari komputasi. Lapisan penyimpanan diabstraksi sebagai shard, yang digunakan untuk penyimpanan dan manajemen data. Lapisan komputasi diabstraksi sebagai SQL, yang menyediakan kemampuan kueri dan analisis.

Untuk meningkatkan performa analitik Layanan Log Sederhana, Anda perlu meningkatkan kapabilitas lapisan penyimpanan dan komputasi. Bagian berikut memberikan solusi umum beserta perbandingannya.

Solusi 1: Pisahkan sebuah shard

Anda dapat secara manual memisahkan sebuah shard untuk memperluas kapabilitas lapisan penyimpanan, sehingga meningkatkan throughput komputasi. Untuk informasi lebih lanjut, lihat Memisahkan Sebuah Shard.

Batasan:

  • Metode ini hanya berlaku untuk data yang baru ditulis.

  • Anda akan dikenakan biaya untuk shard aktif. Untuk informasi lebih lanjut, lihat Deskripsi Penagihan.

  • Kueri dibatasi oleh jumlah maksimum pernyataan bersamaan dan volume data.

  • Operasi manual diperlukan untuk pemisahan atau penggabungan shard.

Solusi 2: Bagi kueri menjadi subkueri

Anda dapat membagi kueri menjadi subkueri dan melakukan agregasi sekunder berdasarkan hasil subkueri untuk mendapatkan hasil akhir.

Batasan:

  • Anda harus memelihara logika agregasi sekunder dan menyimpan hasil subkueri. Untuk informasi lebih lanjut, lihat Kueri dan Analisis Terjadwal (SQL Terjadwal).

  • Perubahan dimensi analisis mengharuskan rekonstruksi logika agregasi.

  • Hambatan komputasi tetap ada jika jumlah data terlalu besar.

Solusi 3: Aktifkan Peningkatan SQL

Setelah mengaktifkan Peningkatan SQL, Layanan Log Sederhana secara otomatis menyesuaikan sumber daya penyimpanan dan komputasi berdasarkan volume data untuk mempercepat analisis.

Item Perbandingan

Solusi 1

Solusi 2

Solusi 3

Isolasi Sumber Daya

Sumber daya penyimpanan eksklusif dan sumber daya komputasi bersama.

Sumber daya penyimpanan eksklusif dan sumber daya komputasi bersama.

Sumber daya penyimpanan eksklusif dengan dukungan elastis khusus.

Penyesuaian

Penyesuaian lapisan penyimpanan.

Penyesuaian lapisan komputasi.

Penyesuaian otomatis untuk lapisan penyimpanan dan komputasi.

Biaya O&M

Operasi manual diperlukan.

Kueri dibagi menjadi subkueri.

Penjadwalan sepenuhnya otomatis.

Kompleksitas Kueri

Dukungan SQL asli.

Pengembangan kustom diperlukan.

Dukungan SQL asli.

Prasyarat

Prosedur

Layanan Log Sederhana memungkinkan Anda mengaktifkan Peningkatan SQL melalui metode berikut:

  • Diaktifkan satu kali: Setelah Peningkatan SQL diaktifkan melalui metode ini, hanya operasi kueri dan analisis pada Logstore saat ini yang dapat menggunakan Peningkatan SQL.

  • Diaktifkan secara default: Setelah Peningkatan SQL diaktifkan melalui metode ini, semua operasi kueri dan analisis, seperti operasi terkait peringatan dan dasbor, di proyek saat ini dapat menggunakan Peningkatan SQL.

Konsol

Diaktifkan satu kali

  1. Masuk ke konsol Layanan Log Sederhana.

  2. Di bagian Proyek, klik yang ingin Anda kelola.

    image

  3. Di tab Log Storage > Logstores, klik logstore yang ingin Anda kelola.

    image

  4. Pilih image > SQL Enhancement.

    image

Diaktifkan secara default

  1. Masuk ke konsol Layanan Log Sederhana.

  2. Di bagian Proyek, klik yang ingin Anda kelola.

    image

  3. Klik ikon 项目概览.

    image.png

  4. Arahkan penunjuk Anda ke CUs of SQL-dedicated Instance, lalu klik Modify.

    SQL独享版

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

API

Diaktifkan satu kali

  • GetLogs (hasil kueri tidak dikompres dan langsung dikembalikan)

    Anda hanya perlu mengonfigurasi salah satu parameter berikut:

    • powerSql: Nilai valid: true dan false (default). Nilai true menentukan bahwa kueri saat ini menggunakan Peningkatan SQL. Nilai false menentukan bahwa kueri saat ini menggunakan SQL Standar.

    • query: Dalam contoh ini, pernyataan kueri * | select count(*) as pv dieksekusi. Tambahkan set session parallel_sql=true; ke pernyataan analitik, menunjukkan bahwa Peningkatan SQL digunakan. Pernyataan kueri menjadi * | set session parallel_sql=true; select count(*) as pv.

  • GetLogsV2 (hasil kueri dikompres lalu dikembalikan)

    Anda hanya perlu mengonfigurasi salah satu parameter berikut:

    • powerSql: Nilai valid: true dan false (default). Nilai true menentukan bahwa kueri saat ini menggunakan Peningkatan SQL. Nilai false menentukan bahwa kueri saat ini menggunakan SQL Standar.

    • query: Dalam contoh ini, pernyataan kueri * | select count(*) as pv dieksekusi. Tambahkan set session parallel_sql=true; ke pernyataan analitik, menunjukkan bahwa Peningkatan SQL digunakan. Pernyataan kueri menjadi * | set session parallel_sql=true; select count(*) as pv.

Diaktifkan secara default

CreateSqlInstance: Dalam operasi ini, atur useAsDefault ke true untuk secara otomatis mengaktifkan Peningkatan SQL untuk proyek Anda.

SDK

Contoh ini menggunakan SDK Layanan Log Sederhana untuk Java.

Prasyarat

SDK Layanan Log Sederhana untuk Java telah diinstal. Untuk informasi lebih lanjut, lihat Instal SDK Layanan Log Sederhana untuk Java.

Diaktifkan satu kali

  • Metode GetLogs()

    Anda hanya perlu mengonfigurasi salah satu parameter berikut:

    • powerSql: Nilai valid: true dan false (default). Nilai true menentukan bahwa kueri saat ini menggunakan Peningkatan SQL. Nilai false menentukan bahwa kueri saat ini menggunakan SQL Standar.

    • query: Dalam contoh ini, pernyataan kueri * | select count(*) as pv dieksekusi. Tambahkan set session parallel_sql=true; ke pernyataan analitik, menunjukkan bahwa Peningkatan SQL digunakan. Pernyataan kueri 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 {
            // 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 Layanan Log Sederhana. Dalam contoh ini, titik akhir Layanan Log Sederhana untuk wilayah China (Hangzhou) digunakan. Ganti nilai parameter dengan titik akhir sebenarnya.
            String host = "https://cn-beijing.log.aliyuncs.com";
            // Buat klien Layanan Log Sederhana.
            Client client = new Client(host, accessId, accessKey);
            // Nama proyek.
            String projectName = "aliyun-project-test";
            // Nama Logstore.
            String logstore = "request_log";
            // Tentukan apakah akan menggunakan Peningkatan SQL. Nilai default: false.
            boolean useAsDefault = true;
            // Tentukan pernyataan kueri.
            String query = "* | select count(1)";
            // Jumlah maksimum log yang dikembalikan untuk permintaan. Parameter ini hanya berlaku jika parameter kueri disetel ke pernyataan pencarian. Nilai minimum: 0. Nilai maksimum: 100. Nilai default: 100.
            int line = 3;
            // Baris dari mana kueri dimulai. Parameter ini hanya berlaku jika parameter kueri disetel ke pernyataan pencarian. Nilai default: 0.
            int offset = 0;
            // Tentukan apakah akan mengembalikan log dalam urutan kronologis terbalik dari cap waktu log. Cap waktu log akurat hingga menit. Nilai valid:
            // true: Log dikembalikan dalam urutan kronologis terbalik dari cap waktu log.
            // false (default): Log dikembalikan dalam urutan kronologis dari cap waktu log.
            boolean reverse = false;
            // Tentukan apakah akan menggunakan Peningkatan SQL. Nilai valid:
            // true: menggunakan Peningkatan SQL.
            // false (default): menggunakan 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, "", sql, line, offset, reverse, powerSql);
            System.out.println(getLogsResponse.getCpuSec());
        }
    }

Diaktifkan secara default

Atur boolean useAsDefault ke true untuk secara otomatis mengaktifkan Peningkatan SQL untuk proyek Anda.

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 {
        // 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");
        // Nama proyek.
        String projectName = "aliyun-test-project";
        // Titik akhir Layanan Log Sederhana. Dalam contoh ini, titik akhir Layanan Log Sederhana untuk wilayah China (Hangzhou) digunakan. Ganti nilai parameter dengan titik akhir sebenarnya.
        String host = "https://cn-beijing.log.aliyuncs.com";
        // Buat klien Layanan Log Sederhana.
        Client client = new Client(host, accessId, accessKey);
        int cu = 100;
        boolean useAsDefault = true;
        client.createSqlInstance(new CreateOrUpdateSqlInstanceRequest(projectName, cu, useAsDefault));
    }
}

FAQ

  • Bagaimana cara mengetahui jumlah waktu CPU yang telah saya gunakan?

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

  • Berapa biaya penggunaan fitur SQL Dedicated untuk satu kali eksekusi pernyataan kueri?

    Biaya fitur SQL Dedicated bergantung pada volume data tempat pernyataan kueri dijalankan. Tabel berikut menyajikan contoh perhitungan.

    Pernyataan kueri

    Jumlah 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),), 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