Bagaimana cara meningkatkan penggunaan memori di MySQL Server untuk meningkatkan kecepatan?

28

Saya memiliki server Windows 2008 dengan 8GB RAM yang menjalankan IIS7 dan MySQL. Saya telah melacak penggunaan memori, cpu dan disk di server dan saya menemukan bahwa MySQL menggunakan hanya 250MB RAM, membuat disk sangat sibuk, meskipun saya memiliki banyak ram gratis yang diletakkan di sekitar.

Dalam SQL Server saya dapat dengan mudah mengatur jumlah memori yang saya ingin gunakan, saya mencari pengaturan yang sama di MySQL.

Bagaimana saya bisa mengkonfigurasi MySQL untuk menggunakan lebih banyak memori dan mengurangi penggunaan cpu dan disk?

holiveira
sumber

Jawaban:

20

table_cacheadalah direktif konfigurasi yang paling berguna untuk diubah. Setiap kali MySQL mengakses tabel, ia memuat tabel ke dalam cache. Jika Anda punya banyak tabel, lebih cepat di-cache.

Lihatlah variabel server Anda dengan menjalankan:

show status;

dan lihat variabelnya open_tables. Jika ini sama dengan table_cachenilai Anda , dan opened_tablesterus naik, maka Anda perlu meningkatkan table_cachenilai dalam file konfigurasi Anda. Anda akan menemukan keseimbangan dengan bereksperimen dengan variabel-variabel ini selama masa puncak. Anda ingin mengkonfigurasinya sehingga pada waktu puncak, ada jumlah rendah opened_tablesbahkan setelah server telah lama.

key_buffer_sizejuga merupakan variabel yang baik untuk bereksperimen. Variabel ini mempengaruhi ukuran buffer indeks, dan membuat variabel ini lebih besar meningkatkan kecepatan penanganan indeks MySQL. Anda bisa melihat variabel dengan show variables;perintah lagi, dan bandingkan key_read_requestsdengan key_reads. Idealnya, Anda ingin rasio antara kedua variabel serendah mungkin, dan Anda dapat melakukan ini dengan meningkatkan ukuran key_buffer_size. Jika Anda menetapkan variabel ini lebih tinggi, Anda akan memiliki lebih sedikit menulis dan membaca langsung ke dan dari disk, yang menjadi perhatian utama Anda.

James
sumber
11
Sebenarnya perintahnya adalah show status; untuk melihat variabel status seperti Open_tablesdan Opened_tables. table_cachetampaknya telah dihapus di versi MySQL terbaru.
Matt Fenwick
5

Anda perlu mengubah nilai dalam my.cnffile dan me-restart MySQL, meskipun Anda dapat mengubah banyak dari mereka ketika MySQL sedang berjalan juga ('SET GLOBAL VARIABLE = value ').

Anda mungkin ingin melihat peningkatan key_buffer_size,sort_buffer , read_bufferdan table_cacheuntuk pemula dan mungkin innodb_buffer_pool_size, jika Anda memiliki tabel InnoDB. Beberapa nilai-nilai ini Anda dapat meningkatkan jauh (bahkan dua kali lipat) terutama diberikan perangkat keras Anda. Default MySQL sangat konservatif dan sepertinya ditujukan pada desktop serba guna yang umum sekitar sepuluh tahun yang lalu. Oh, dan berhati-hatilah bahwa versi 32-bit akan mengalami kesulitan menggunakan lebih dari 2GB RAM.

Lihat di Manual MySQL untuk informasi dan panduan lebih lanjut.

ahli statika
sumber