Rabu, 06 Juni 2012

optimalisasi SQL Query

Belakangan ini performa MySQL agak menurun, gara-gara nggak bisa nambah memori di hosting (xixixi memori mahal banget), jadi mau nggak mau harus optimasi hal lainnya selain hardware. Ini sih sebenernya mental note aja, tapi mungkin artikel tuning mysql ini manfaatnya bagi yang membaca blog saya (tentunya yang ngerti MySQL).

Akhirnya nemu juga nih video di Google, yang judulnya Performance Tuning Best Practice for MySQL. Warning: bukan untuk pemula lho, Anda harus tau tentang basic SQL dan cara kerja MySQL.

PS: Wah nonton video ini kayak mengulang kembali kuliah dalam 40 menit hehehehe.

Kasus INSERT:

Beberapa hari yang lalu saya coba untuk melakukan insert (2.6jt row) ke dalam tabel MyISAM (jangan tanya ya data segede itu buat apaan hehehe). Untung sih pake MyISAM, jadi ini yang saya lakukan supaya lebih cepet masuknya (lumayan cepet kurang dari 3 menitan di laptop). Jadi ini yang saya lakukan:

   1. Drop index. Biar cepet dah.
   2. Pake bulk insert. Buat yang ga tau sih syntaxnya:

      INSERT INTO tablename VALUES (...,...),(...,...),dst.

   3. Masukin lagi indexnya. Beres dah.

    Kesimpulan: Kenapa bisa cepet? Soalnya index di drop + pake bulk insert daripada pake for-loop.

Kasus SELECT:

Kalo yang ini lain lagi, tergolong mudah sih (kecuali kalo mau optimasi index…bah satu buku sendiri tuh). Gara-gara udah 1.2jt-an row, mesti optimasi indexing. Ini sih yang saya lakuin buat optimasi index:

   1. Hidupin slow log query.
   2. Monitor deh apa aja yang slow SQLnya.
   3. Tambahin index-index mana yang perlu ditambah. Buat ngecek apakah query make index bisa dilihat pake syntax EXPLAIN.
   4. Hidupin Query Cache.

    Kesimpulan: Kenapa bisa cepet? Soalnya mengcover index-index yang diperlukan buat mempercepat pembacaan tabel untuk query. Query Cache digunakan untuk menyimpan query-query yang berulang-ulang sehingga MySQL tinggal membaca query cache ini daripada memproses kembali query.

Tidak ada komentar:

Posting Komentar