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
Logstore Standar telah dibuat. Untuk informasi lebih lanjut, lihat Buat Logstore.
Log telah dikumpulkan. Untuk informasi lebih lanjut, lihat Ikhtisar Pengumpulan Data.
Indeks telah dikonfigurasi. Untuk informasi lebih lanjut, lihat Konfigurasikan Indeks.
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.
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
Masuk ke Konsol Simple Log Service.
Di bagian Proyek, klik yang Anda inginkan.

Pada tab , klik logstore yang Anda inginkan.

Pilih .
PentingAnda dapat mengonfigurasi parameter
query_max_run_timeuntuk memodifikasi periode timeout maksimum.Dalam contoh ini, pernyataan kueri
* | select count(*) as pvditentukan. Setelah Anda menambahkanset session query_max_run_time=10s;ke pernyataan analitik, pernyataan kueri menjadi* | set session query_max_run_time=10s; select count(*) as pv.
API
GetLogs (hasil kueri tidak dikompres dan langsung dikembalikan)
Parameter:
queryDalam contoh ini, pernyataan kueri
* | select count(*) as pvdijalankan.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 adalah10 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:
queryDalam contoh ini, pernyataan kueri
* | select count(*) as pvdijalankan.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 adalah10 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:
queryDalam contoh ini, pernyataan kueri
* | select count(*) as pvdijalankan.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 adalah10 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:
sessionAktifkan 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_mil14 miliar
0.004435
* | select avg(double_0), sum(double_0),), min(double_0), count(double_0) from stress_s1_mil14 miliar
0.006504
* | select avg(double_0), sum(double_1), max(double_2), min(double_3), count(double_4) from stress_s1_mil14 miliar
0.013600
* | select key_0 , avg(double_0) as pv from stress_s1_mil1 group by key_0 order by pv desc limit 10004 miliar
0.011826
* | select long_0, avg(double_0) as pv from stress_s1_mil1 group by long_0 order by pv desc limit 10004 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 10000.3 miliar
0.010791
* | select avg(double_0) from stress_s1_mil1 where key_0='key_987'4 miliar
0.00007
> Completely Accurate