Apa itu Slow Query

Tentu kita tahu bahwa penggunaan query ini sangat penting jika Anda menggunakan database yang dihubungkan ke website. Fungsi query ini akan menampilkan data dari database dengan cara melakukan penarikan data menggunakan script php. Sedangkan Slow Query biasanya ditampilkan jika ada proses query yang lambat.

Query sendiri ada 3 macam yang umumnya digunakan untuk memanipulasi ataupun mendefinisikan pada sebuah database.

  1. Data Definition Language (DDL)
    Bahasa atau perintah pada SQL yang digunakan untuk mendefinisikan data dengan cara membuat, menghapus dan merubah data. Ada beberapa sintaks pada DDL ini, seperti CREATE, DROP dan ALTER.
  2. Data Manipulation Language (DML)
    Bahasa atau perintah pada SQL yang digunakan untuk menambah atau mengubah nilai (value) pada suatu table di database. Ada beberapa sintaks pada DML ini, seperti INSERT, UPDATE, DELETE dan SELECT.
  3. Data Control Language (DCL)
    Bahasa atau perintah pada SQL yang digunakan untuk melakukan kontrol pada database. Ada beberapa sintaks pada DCL ini, seperti GRANT dan REVOKE.

Fungsi Slow Query Log

Slow Query adalah suatu pernyataan SQL yang membutuhkan lebih long_query_time untuk dapat dieksekusi. Slow Query Log juga dapat digunakan untuk menemukan query-query lambat supaya dapat dioptimasi.

Untuk mengetahui ada berapa banyak slow queries dapat gunakan command dibawah ini.

$ mysqladmin status
Uptime: 703 Threads: 10 Questions: 24010 Slow queries: 27 Opens: 358 Flush tables: 1 Open tables: 352 Queries per second avg: 34.15

Cara Mengaktifkan Slow Query Pada Server

Edit file my.cnf dengan menggunakan command dibawah ini.

$ nano /etc/my.cnf

Tambahkan beberapa script berikut dibawah [mysqld] section.

slow_query_log = 1 
long_query_time = 5
slow_query_log_file = /var/log/mysql/slow-query.log
log_queries_not_using_indexes

Pastikan Anda sudah memiliki directory “mysql” di dalam /var/log/, jika tidak memiliki maka perlu membuatnya terlebih dahulu.

Note:

Slow_query_log = 1. Artinya adalah log slow query ini enabled.

Long_query_time = 5. Artinya adalah waktu yang dibutuhkan oleh Query SQL untuk melakukan eksekusi dalam hitungan detik.

Slow_query_log_file = /var/log/mysql/slow-query.log. Artinya adalah path atau lokasi penempatan log slow query tersebut.

Log_queries_not_using_indexes. Artinya adalah untuk memberitahu MySQL untuk melakukan log ke semua query yang tidak mengunakan indeks untuk membatasi jumlah baris/row yang discan.

Buat file slow-query.log di dalam directory /var/log/mysql/ dan rubah ownership menggunakan mysql dengan command dibawah ini.

$ cd /var/log/mysql/
$ touch slow-query.log
$ chown mysql:mysql slow-query.log

Restart MySQL Service dengan command dibawah ini:

$ service mysql restart

Atau gunakan command dibawah ini jika menggunakan WHM – cPanel:

$ /scripts/restartsrv_mysql

Setelah direstart, maka slow query akan otomatis tercatat (logging) di file slow-query.log. Gunakan command dibawah ini untuk memantau atau melihat apa saja yang di-log.

$ tail -f /var/log/mysql/slow-query.log

Analisis Slow Query

Untuk melakukan analisis slow query dapat menggunakan command mysqldumpslow.

$ mysqldumpslow -a /var/log/slow-query.log

Contoh Slow Queries

Di bawah ini adalah contoh slow queries yang sudah ter-log di dalam file slow-query.log.

Masalah Pada Saat Mengaktifkan Slow Query Log

Slow query lognya tidak running, dimana tidak ada query yang ter-log. Lalu Anda melakukan restart mysql dan ada error dibawah ini.

[ERROR] Could not use /var/log/mysql/slow-query.log for logging (error 13). Turning logging off for the whole duration of the MySQL server process. To turn it on again: fix the cause, shutdown the MySQL server and restart it.

Cara menyelesaikan masalahnya adalah dengan cara melihat permission pada directory /mysql/ dan file slow-query.log. Pastikan directory menggunakan permission 0755 dan file 0644.

Kemudian restart mysql nya kembali dan cek, pada file lognya, seharusnya sudah mulai di-log slow querynya.

Kalau semua slow queries-nya sudah di optimasi dan sudah tidak menampilkan slow queries pada mysqladmin status, maka slow querynya log nya perlu di disabled kembali. Dengan merubah nilai 1 menjadi 0 pada slow_query_log di file my.cnf.

Kesimpulan:

Dengan menggunakan slow query log ini dapat memudahkan dalam melakukan optimasi, karena akan dilihatkan query apa saja yang lambat diproses.

Optimasi dilakukan dengan banyak cara, ada beberapa aplikasi berbayar yang memberikan layanan untuk proses slow query ini. Seperti contohnya adalah SolarWinds, RedGate dan everSQL.

Jangan sungkan untuk meninggalkan ide-ide topik yang ingin Anda baca di blog Dewaweb. Semoga artikel ini membantu!

Cloud Hosting Terbaik di Indonesia