DailyBlog.id - Menjaga kinerja dari MySQL sangat lah penting, untuk menjaga kinerjanya bisa dilakukan dengan cara mengoptimalkan dan meningkatkan kinerja pada pengaturan server MySQL nya. Dengan memiliki server MySQL yang telah dioptimalkan pengaturannya, maka ketika memproses suatu data baik itu melakukan CRUD tidak akan terasa lama atau lambat. Jika belum dioptimalkan, maka akan terasa lambat untuk memprosesnya datanya dan itu mungkin bisa saja membutuhkan waktu yang cukup lama, jika data pada table terlalu banyak. Sebenarnya ada banyak cara untuk meningatkan kecepatan pada performa MySQL ini, seperti: mendesain table dengan baik, menggunakan index, menulis query yang tidak melakukan banyak perulangan atau juga membingungkan, dll. Namun pada artikel kali ini, saya akan membahas pada sisi pengaturan server. Mungkin jika ada waktu, saya akan membuatkan juga artikel untuk penulisan query MySQL yang terbilang cepat untuk me-load datanya.
Artikel ini sangat cocok untuk kalian yang ingin menjadi seorang Database Administrator (DBA), setidaknya kalian sudah mempelajari basicnya terlebih dahulu. Dan artikel ini saya ambil dari pengalaman saya ketika mengkonfiurasi MySQL Server. Oke langsung saja ke caranya.
Meningkatkan dan Mengoptimalkan Kinerja MySQL Server
Berikut ini bagian - bagian yang harus diatur pada MySQL Server kalian, dan sesuaikan juga dengan spesifikasi server yang kalian punya. Jangan asal untuk menentukan besarnya angka, karena itu akan memperlambat bukan mengoptimalkan MySQL Servernya.
Jika kalian merupakan pengguna table jenis MyISAM, maka bagian ini harus kalian atur untuk meningkatkan performanya. Gunakan 30% sampai 40% an dari total memory server kalian, untuk meningkatkan performa. Table jenis MyISAM ini akan menggunakan Sistem Operasi cache untuk melakukan penyimpanan data sementara. Jika kalian bukan pengguna dari table jenis MyISAM ini, maka kalian dapat menggunakannya sekitar 16M sampai 32M.
sort_buffer_size
Bagian ini digunakan untuk kalian yang suka melakukan sorting atau ORDER BY , nah jika kalian sering menggunakannya maka atur di kisaran 128M sampai 256M. Jika jarang menggunakannya, maka atur saja di kisaran 2M sampai 16M an.
innodb_buffer_pool_size
Untuk bagian ini kebalikannya dari MyISAM, bagian ini merupakan bagian yang paling penting buat kalian yang menggunakan table jenis InnoDB. Jika kalian menggunakan table jenis InnoDB, maka kalian bisa atur sekitar 50% sampai 70% an dari system memory kalian. Jika tidak menggunakannya, atur saja sekitar 10% sampai 20% an saja.
innodb_log_buffer_size
Masih sama untuk table jenis InnoDB, bagian ini digunakan untuk meningkatkan performa write pada database. Untuk bagian ini, kalian bisa menggunakannya sekitar 8M sampai 16M.
Jika database kalian sering melakukan write untuk data yang terbilang besar, maka bagian ini harus kalian atur. Kalian bisa gunakan sekitar 64M sampai 512M, dan itu tergantung dari data kalian juga.
innodb_flush_log_at_trx_commit
Jika table jenis InnoDB kalian terasa lebih lambat dari MyISAM, maka kalian bisa atur bagian ini dengan value 1. Jika belum ada, bisa kalian tambahkan dan isi value 1.
query_cache_size
Jika table kalian sering melakukan read, maka bagian ini harus kalian atur. Dikarenakan bagian ini akan menyimpankan sebagai cache. Kalian bisa atur bagian ini dengan nilai sekitar 32M sampai 512M.
Nah itu dia beberapa bagian yang harus kalian atur dari sisi servernya. Sebenarnya ada cara yang mudah, yaitu dengan menggunakan MySQL Tuner. Namun menurut saya, mengggunakan tool tersebut terkadang tidak sesuai dengan keinginan saya. Jadinya ada alangkah baiknya, saya konfigurasi sendiri.
Berikut ini hasil dari MySQL server yang sudah ditingkatkan dan dioptimalkan performanya, sama yang belum. Disini saya menggunakan data 4,2jt pengunjung random, hanya untuk menguji kecepatannya.

Hasil Pertama
Hasil Kedua
Nah gimana perbedaannya? sangat jauh kan. Setelah dioptimalkan dan sebelum dioptimalkan, angkanya pun terbilang cepat setelah dioptimalkan. Untuk hasil yang kedua, sebenarnya tidak dianjurkan untuk menulis query seperti itu, seharusnya ada kolom yang megincrement total visitor, bukan meng-count data yang jumlahnya banyak. Namun untuk membuktikannya, maka saya count keseluruhan data 4jt tersebut sesuai tanggal yang ada. Dan ternyata hasilnya lumayan cepat. Perlu diingat, disini saya mencoba querynya tanpa menggunakan cache, jadi disaat mengeksekusi querynya tidak menggunakan cache yang ada.
* Dan perlu diingat jika ingin mengoptimalkan MySQL Server kalian, pastikan juga spesifikasi dari server kalian dan jangan dipaksakan. Jika dipaksakan, maka yang ada nanti makin lambat, bukan makin cepat.
Mungkin cukup sekian artikel dari saya, semoga artikel yang saya berikan ini dapat bermanfaat bagi kalian semua. Jika saya ada salah kata, saya mohon maaf. Sekian dan terima kasih.
Selamat mencoba!