Bagian pengembangan aplikasi yang paling sibuk dan menarik adalah database. Untuk perusahaan aplikasi besar mempekerjakan DBA tapi untuk proyek ukuran sedang, ini adalah pekerjaan pemrogram. Bagi pengembang PHP (Biasanya menggunakan MySQL) perlu untuk menyempurnakan MySQL agar bisa mendapatkan performa database yang masuk akal. Minggu lalu saya telah melalui beberapa setting MySQL dan berikut ini adalah pemikiran saya tentang tuning kinerja MySQL.

Bagaimana melakukan tuning kinerja MySQL:

Ada banyak faktor yang mempengaruhi kinerja MySQL. Berikut adalah konfigurasi yang perlu disetel untuk mendapatkan kinerja MySQL yang lebih baik.

Key_buffer_size Sangat penting jika teman-teman menggunakan tabel MyISAM. Ini benar-benar akan membantu untuk menyempurnakan kinerja server MySQL teman-teman. Siapkan 30-40% memori yang tersedia jika Anda menggunakan tabel MyISAM secara eksklusif. Ukuran yang tepat bergantung pada sejumlah indeks, ukuran data dan beban kerja – ingat MyISAM menggunakan cache OS untuk menyimpan data sehingga teman-teman juga harus meninggalkan memori untuk itu, dan data bisa jauh lebih besar daripada indeks dalam banyak kasus. Periksa namun jika semua key_buffer digunakan dari waktu ke waktu – tidak jarang melihat key_buffer diset ke 4G sementara ukuran gabungan. File MYI hanya 1GB. Ini hanya akan sia-sia belaka. Jika menggunakan beberapa tabel MyISAM, Teman-teman ingin menyimpannya lebih rendah tapi setidaknya masih 16-32Mb sehingga cukup besar untuk menampung indeks tabel sementara yang dibuat di disk.

Innodb_buffer_pool_size Ini adalah variabel yang sangat penting untuk disesuaikan jika menggunakan tabel Innodb. Tabel Innodb jauh lebih sensitif terhadap ukuran buffer dibandingkan dengan MyISAM. MyISAM dapat bekerja dengan baik dengan default key_buffer_size meskipun dengan kumpulan data yang besar namun akan dijelajahi dengan default innodb_buffer_pool_size. Selain itu, kolam buffer Innodb menyimpan data dan halaman indeks sehingga teman-teman tidak perlu meninggalkan ruang untuk cache OS sehingga nilai memori hingga 70-80% seringkali masuk akal untuk instalasi hanya InnoDB. Aturan yang sama seperti key_buffer berlaku, jika Anda memiliki kumpulan data kecil dan tidak akan tumbuh secara dramatis jangan terlalu berlebihan, Anda mungkin akan lebih mudah menggunakan memori yang tersedia, kinerja yang lebih baik.

Innodb_additional_mem_pool_size Yang satu ini tidak terlalu mempengaruhi kinerja terlalu banyak, setidaknya pada OS dengan pengalokasi memori yang layak. Namun, Anda mungkin ingin memilikinya 20MB (terkadang lebih besar) sehingga Anda dapat melihat berapa banyak memori yang dialokasikan Innodb untuk kebutuhan misc.

Innodb_log_file_size Sangat penting untuk menulis beban kerja intensif terutama untuk kumpulan data yang besar. Ukuran yang lebih besar menawarkan performa yang lebih baik namun meningkatkan waktu pemulihan jadi hati-hati. Biasanya saya menggunakan nilai 64M-512M tergantung ukuran server.

Innodb_log_buffer_size Default untuk yang satu ini adalah jenis OK untuk banyak beban kerja dengan beban tulis menengah dan transaksi yang lebih pendek. Jika Anda memiliki lonjakan aktivitas update namun atau bekerja dengan gumpalan banyak, Anda mungkin ingin meningkatkannya. Jangan meletakkannya terlalu tinggi namun karena akan membuang-buang memori – itu memerah setiap 1 detik pula sehingga teman-teman tidak memerlukan ruang untuk lebih dari 1 sec layak update. 8MB-16MB biasanya cukup. Instalasi yang lebih kecil harus menggunakan nilai yang lebih kecil.