All Products
Search
Document Center

ApsaraDB RDS:FAQ tentang fitur general query log ApsaraDB RDS for MySQL

Last Updated:Sep 02, 2026

General query log mencatat setiap pernyataan SQL yang dieksekusi pada instans ApsaraDB RDS for MySQL Anda—termasuk SELECT, INSERT, UPDATE, dan DELETE—dan dapat dengan cepat membesar. Jika dibiarkan aktif tanpa pembersihan berkala, log ini akan menghabiskan ruang penyimpanan, menurunkan kinerja, serta memperpanjang waktu pemulihan.

Mengapa RDS menyimpan general query log dalam bentuk tabel?

Secara default, ApsaraDB RDS for MySQL menyimpan general query log dalam tabel database, bukan dalam file, karena dua alasan:

  • Pengguna tidak dapat mengakses file secara langsung pada instans RDS, sehingga log berbasis file tidak dapat dikueri atau diunduh.

  • Parameter log_output mengontrol format output baik untuk general query log maupun slow query log. Karena RDS melakukan rotasi slow query log dan mewajibkan log tersebut disimpan dalam tabel, general query log juga harus disimpan dalam tabel.

Mengapa general query log menghabiskan ruang penyimpanan?

Setiap pernyataan SQL yang dieksekusi pada instans menghasilkan satu entri log. Ketika general query log diaktifkan dalam jangka waktu lama atau instans menangani volume kueri yang tinggi, tabel mysql.general_log terus bertambah besar. Jika tabel tersebut tidak dibersihkan secara berkala, ruang penyimpanan instans akan penuh.

Untuk memastikan bahwa general query log menyebabkan masalah penyimpanan:

  1. Periksa penggunaan penyimpanan pada halaman pemantauan instans. Jika nilai sys_data_size tidak biasa besar, berarti data tabel sedang mengonsumsi ruang penyimpanan. Untuk detailnya, lihat Lihat informasi pemantauan.

  2. Lihat parameter instans. Jika parameter general_log diatur ke ON, berarti fitur tersebut aktif.

Mengapa general query log menyebabkan masalah kinerja?

Ketika general query log diaktifkan, setiap thread yang mengeksekusi pernyataan SQL harus menulis satu baris ke tabel mysql.general_log. Operasi penulisan ini memerlukan kunci metadata (MDL) dan kunci tabel, sehingga thread menulis ke tabel secara berurutan, bukan paralel.

Pada volume koneksi yang tinggi, banyak thread bersaing untuk mendapatkan kunci tersebut secara bersamaan, sehingga koneksi masuk ke status Waiting for table level lock. Seiring bertambahnya jumlah koneksi, penggunaan CPU juga meningkat.

Untuk memastikannya: jalankan SHOW PROCESSLIST atau kueri tabel innodb_trx. Jika banyak koneksi menunjukkan status Waiting for table level lock, maka general query log berkontribusi terhadap kontensi kunci tersebut.

Mengapa general query log memperpanjang waktu pemulihan?

Jika instans RDS mati secara tidak terduga, penanda crash pada general query log diatur ke true. Saat restart, instans memulai proses pemulihan otomatis. Jika ukuran tabel pada instans RDS besar, proses pemulihannya membutuhkan waktu lama, sehingga instans tetap tidak tersedia selama periode tersebut. Hal ini secara langsung memperpanjang Objektif Waktu Pemulihan (RTO) Anda.

Solusi

  1. Atur parameter general_log ke OFF untuk menghentikan penulisan entri log baru. Lihat Ubah parameter instans.

  2. Hubungkan ke instans menggunakan privileged account. Lihat Hubungkan ke instans ApsaraDB RDS for MySQL.

  3. Bersihkan tabel log:

    Pernyataan TRUNCATE tidak didukung pada instans yang menjalankan MySQL 5.6. Untuk instans tersebut, hubungi dukungan teknis untuk membersihkan log. Untuk daftar lengkap dukungan fitur berdasarkan versi, lihat Fitur. Untuk menjalankan pernyataan TRUNCATE dengan privileged account, instans harus menjalankan versi mesin minor yang didukung: 20210630 atau lebih baru untuk ApsaraDB RDS for MySQL 5.7, dan 20210930 atau lebih baru untuk ApsaraDB RDS for MySQL 8.0. Pada instans yang menjalankan versi mesin minor sebelumnya, pernyataan TRUNCATE akan gagal meskipun menggunakan privileged account. Dalam kasus tersebut, kirim tiket agar dukungan teknis dapat membersihkan log untuk Anda.
    TRUNCATE TABLE mysql.general_log;

Setelah Anda membersihkan log, periksa halaman pemantauan instans untuk memastikan bahwa penggunaan penyimpanan telah berkurang.

Alternatif untuk analisis SQL

Nonaktifkan general query log selama operasi normal. Aktifkan hanya untuk sesi debugging singkat, lalu segera nonaktifkan dan bersihkan tabel setelahnya.

Untuk analisis SQL berkelanjutan, gunakan salah satu pendekatan berikut sebagai gantinya:

  • SQL Explorer and Audit (direkomendasikan): Aktifkan fitur ini untuk merekam dan menganalisis pernyataan SQL secara otomatis. Data disimpan di Database Autonomy Service (DAS) dan tidak mengonsumsi penyimpanan instans RDS Anda, sehingga tidak berdampak pada kinerja instans. Lihat Gunakan fitur SQL Explorer and Audit.

  • General query log sementara: Jika Anda perlu melakukan debug masalah tertentu, aktifkan general query log, lalu kueri tabel log untuk memeriksa aktivitas SQL:

    SELECT * FROM mysql.general_log;

    Nonaktifkan fitur tersebut dan bersihkan tabel segera setelah proses debugging selesai.

Apa yang harus dilakukan jika penyimpanan sudah habis

Jika instans kehabisan ruang penyimpanan sebelum Anda sempat membersihkan log, perluas kapasitas penyimpanan: