Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Aktifkan Logging dari Kueri Lambat (Log Kueri Lambat) di Database MySQL

Salah satu persyaratan utama untuk server web yang cepat adalah memiliki pernyataan atau kueri SQL yang efisien dan efektif yang dioptimalkan. Perintah atau pernyataan SQL (Structured Query Language) yang tidak optimal yang membutuhkan waktu terlalu lama atau terlalu lama untuk dieksekusi akan menghabiskan banyak sumber daya sistem, menyebabkan database MySQL berjalan lebih lambat, dan kemudian semakin banyak kueri backlog yang mengantre, dan ketika batas koneksi tercapai, pengunjung ditolak atau koneksi ditolak. Dalam skenario terburuk, server web Anda juga akan down, atau terus-menerus berkinerja buruk. Kasus ini terutama benar ketika Anda menggunakan jenis tabel MyISAM yang menggunakan penguncian tingkat tabel alih-alih penguncian tingkat baris di situs web lalu lintas tinggi.

Terkadang, satu kueri SQL dapat menjadi penyebab semua masalah server. MySQL memiliki fungsionalitas bawaan untuk menangkap log kueri lambat atau mengidentifikasi kueri yang tidak optimal dan membutuhkan waktu lama untuk diselesaikan, yang memungkinkan Anda untuk mencatat semua kueri yang berjalan lambat yang membutuhkan waktu beberapa detik untuk dieksekusi oleh mesin basis data MySQL ke mengajukan. Log kueri lambat tidak diaktifkan atau diaktifkan oleh instalasi MySQL default, sehingga ini adalah salah satu log yang jarang digunakan.

Untuk mengaktifkan log kueri lambat, cukup tambahkan baris berikut ke file konfigurasi MySQL (my.cnf atau my.ini), lalu restart server MySQL:

log-slow-queries

Atau,

log-slow-queries = [path to the log file]

Ganti [jalur ke file log] dengan jalur aktual ke file log kueri lambat yang Anda inginkan agar MySQL menulis log, yang merupakan nilai opsional.

Atau Anda dapat memulai mysqld dengan –log-slow-queries[=file_name] opsi untuk mengaktifkan log kueri lambat. Dalam kedua sintaks, jika tidak ada nama file log yang ditentukan, nama defaultnya adalah host_name -slow.log, disimpan di direktori file data MySQL. Jika nama file diberikan, tetapi bukan sebagai nama path absolut, server juga menulis file dalam direktori data.

Setelah mengaktifkan log kueri lambat, MySQL akan membuat, menangkap, dan masuk ke file log dengan semua pernyataan SQL yang memakan waktu lebih dari long_query_time detik untuk dieksekusi, yang secara default disetel ke 10 detik . Waktu untuk memperoleh kunci tabel awal tidak dihitung sebagai waktu eksekusi. mysqld menulis pernyataan ke log kueri lambat setelah dieksekusi dan setelah semua kunci dilepaskan, jadi urutan log mungkin berbeda dari urutan eksekusi.

Anda kemudian dapat memeriksa semua kueri SQL lambat di file log, dan kemudian mengambil langkah-langkah yang diperlukan untuk mengoptimalkan pernyataan SQL. Log kueri lambat akan memberi tahu Anda tentang jam berapa kueri selesai, berapa lama kueri dijalankan, berapa lama waktu yang dibutuhkan untuk mengamankan kuncinya, berapa banyak baris yang dikirim kembali sebagai hasilnya, berapa banyak baris yang diperiksa untuk menentukan hasil, database mana yang digunakan, dan kueri aktual itu sendiri. Namun perlu diingat bahwa kueri SQL yang terdapat dalam log mungkin sudah optimal, tetapi dijalankan dengan lambat karena sumber daya sistem telah digunakan oleh pernyataan lambat yang sebenarnya yang perlu disesuaikan.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah mysql_real_escape_string() rusak?

  2. Grup MySQL oleh SUM

  3. Pemantauan Basis Data - Pemecahan Masalah Prometheus Dengan Dasbor SCUMM

  4. Lakukan while/loop untuk mendapatkan 10 hasil random

  5. Daftar Prosedur/Fungsi Tersimpan Baris Perintah Mysql