Optimalisasi kinerja MySQL melibatkan banyak aspek. Artikel ini menjelaskan beberapa parameter utama dalam MySQL. Parameter ini, sampai batas tertentu, merupakan parameter utama yang menentukan kinerja database MySQL. Kami sering menemui masalah kinerja selama pengelolaan dan pengembangan database, yang melibatkan optimalisasi kinerja MySQL. Melalui pencarian informasi di Internet dan upaya penulis sendiri, menurut saya parameter sistem berikut ini lebih penting:
Parameter kunci satu: back_log
Jumlah koneksi yang harus dimiliki MySQL. Ini berfungsi ketika thread utama MySQL menerima banyak permintaan koneksi dalam waktu singkat, dan kemudian thread utama memerlukan waktu (walaupun sebentar) untuk memeriksa koneksi dan memulai thread baru.
Nilai back_log menunjukkan berapa banyak permintaan yang dapat disimpan dalam tumpukan dalam waktu singkat sebelum MySQL berhenti menjawab permintaan baru untuk sementara. Hanya jika Anda mengharapkan banyak koneksi dalam waktu singkat Anda perlu meningkatkannya, dengan kata lain, nilai ini adalah ukuran antrian mendengarkan koneksi TCP/IP yang masuk. Sistem operasi Anda memiliki batasannya sendiri pada ukuran antrean ini. Mencoba menyetel back_log lebih tinggi dari batas sistem operasi Anda tidak akan berpengaruh.
Ketika Anda mengamati daftar proses host Anda dan menemukan sejumlah besar proses 264084 |.NULL yang tidak diautentikasi untuk dihubungkan, Anda perlu meningkatkan nilai back_log. Nilai defaultnya adalah 50, saya mengubahnya menjadi 500.
Parameter kunci dua: waktu habis_interaktif
Jumlah detik server menunggu tindakan pada koneksi interaktif sebelum menutupnya. Klien interaktif didefinisikan sebagai klien yang menggunakan opsi CLIENT_INTERACTIVE ke mysql_real_connect(). Nilai defaultnya adalah 28800, saya ubah menjadi 7200.
Parameter kunci tiga: key_buffer_size
Blok indeks di-buffer dan dibagikan oleh semua thread. key_buffer_size adalah ukuran buffer yang digunakan untuk blok indeks, tingkatkan untuk mendapatkan penanganan indeks yang lebih baik (untuk semua pembacaan dan banyak penulisan), sebanyak yang Anda mampu. Jika Anda membuatnya terlalu besar, sistem akan mulai melakukan paging dan sangat lambat. Nilai defaultnya adalah 8388600 (8M), dan host MySQL saya memiliki memori 2GB, jadi saya mengubahnya menjadi 402649088 (400MB).
Parameter kunci empat: max_connections
Jumlah klien simultan yang diperbolehkan. Meningkatkan nilai ini akan meningkatkan jumlah deskriptor file yang dibutuhkan oleh mysqld. Jumlah ini harus ditingkatkan, jika tidak, Anda akan sering melihat kesalahan koneksi Terlalu banyak. Nilai defaultnya adalah 100, saya mengubahnya menjadi 1024.
Parameter kunci lima: record_buffer
Setiap thread yang melakukan pemindaian berurutan mengalokasikan buffer sebesar ini untuk setiap tabel yang dipindai. Jika Anda melakukan banyak pemindaian berurutan, Anda mungkin ingin meningkatkan nilai ini. Nilai defaultnya adalah 131072 (128K), saya ubah menjadi 16773120 (16M)
Parameter kunci enam: sort_buffer
Setiap thread yang perlu diurutkan diberi buffer sebesar ini. Meningkatkan nilai ini akan mempercepat operasi ORDER BY atau GROUP BY. Nilai defaultnya adalah 2097144 (2M), saya ubah menjadi 16777208 (16M).
Parameter kunci tujuh: table_cache
Jumlah tabel yang terbuka untuk semua thread. Meningkatkan nilai ini akan meningkatkan jumlah deskriptor file yang dibutuhkan oleh mysqld. MySQL memerlukan 2 deskriptor file untuk setiap tabel terbuka unik. Nilai defaultnya adalah 64, saya mengubahnya menjadi 512.
Parameter kunci delapan: thread_cache_size
Jumlah thread yang disimpan di dalamnya dapat digunakan kembali. Jika ada, thread baru diambil dari cache, dan jika ada ruang saat koneksi terputus, thread klien ditempatkan di cache. Jika ada banyak thread baru, nilai variabel ini dapat digunakan untuk meningkatkan kinerja. Dengan membandingkan variabel dalam status Connections dan Threads_created, Anda dapat melihat peran variabel ini. Saya mengaturnya ke 80.
Parameter kunci sembilan: wait_timeout
Jumlah detik server menunggu tindakan pada koneksi sebelum menutupnya. Nilai defaultnya adalah 28800, saya ubah menjadi 7200.
Catatan: Penyesuaian parameter dapat dilakukan dengan memodifikasi file /etc/my.cnf dan memulai ulang MySQL. Ini adalah pekerjaan yang relatif hati-hati, dan hasil di atas hanyalah beberapa pendapat saya. Anda dapat memodifikasinya lebih lanjut sesuai dengan kondisi perangkat keras host Anda (terutama ukuran memori).