SETUP SAYA ( contoh )
Saya menjalankan Linux pada instance Amazon High CPU Extra Large EC2 dengan spesifikasi berikut:
- Memori 7 GB
- 20 Unit Komputasi EC2 (masing-masing 8 inti virtual dengan 2.5 Unit Komputasi EC2)
- 1690 GB penyimpanan instance lokal
- Platform 64-bit
Saya memiliki dua database MySQL besar yang berjalan di mesin penyimpanan MyISAM. Satu adalah 2GB dan yang lainnya adalah 500MB. Saya ingin memastikan MySQL menggunakan RAM sebanyak mungkin / perlu untuk memaksimalkan kecepatan permintaan. Saya tahu ada banyak opsi konfigurasi memori MySQL seperti key_buffer_size
dan MyISAM_sort_buffer_size,
tapi saya tidak terbiasa dengan mengoptimalkan ini.
PERTANYAAN
- Bagaimana cara memeriksa memori apa yang saat ini digunakan MySQL pada sistem Linux?
- Bagaimana cara memaksimalkan / mengoptimalkan penggunaan memori MySQL?
- Dengan anggapan pertanyaan dan skema saya dioptimalkan, perubahan apa yang harus saya pertimbangkan?
Jawaban:
Ini adalah topik yang sulit. Tidak dapat dijawab di sini, seluruh buku telah ditulis tentang ini. Saya sarankan untuk membuat innodb_buffer_pool_size Anda cukup besar. Jika Anda menggunakan tabel myisam, maka periksa key_buffer_size. Juga table_cache dan max_connections harus dipertimbangkan.
Inilah sesuatu yang dapat membantu Anda:
http://www.mysqlperformanceblog.com/2006/09/29/what-to-tune-in-mysql-server-after-installation/ http://www.mysqlperformanceblog.com/2007/11/01/innodb- performance-optimization-basics / http://www.mysqlperformanceblog.com/2007/11/03/choosing-innodb_buffer_pool_size/
EDIT:
Seperti yang dikatakan @ drew010 penting untuk mempertimbangkan jenis penggunaan yang dimiliki DB. Penyetelan untuk DB baca yang berat sangat berbeda dari penulisan yang berat. Anda juga dapat mempertimbangkan strategi lain. Seperti Memcached, database nosql, dll.
sumber
Jika Anda perlu memastikan bahwa MySQL menggunakan semua memori yang dibutuhkan, Anda harus beralih ke InnoDB. Kecuali Anda menggunakan
FULLTEXT
kemampuan pencarian MySQL , tidak akan ada masalah serius.Dalam kasus MyISAM sejumlah cache digunakan, termasuk buffer kunci MySQL internal dan cache sistem. Jika Anda menginginkan kinerja terbaik, Anda perlu menyisakan ruang untuk salah satu dari cache, tetapi tetap saya tidak merekomendasikan MyISAM untuk tujuan itu terutama jika database Anda terlalu banyak menulis: MyISAM mengunci seluruh tabel pada penulisan, sedangkan InnoDB mengunci hanya baris yang terpengaruh.
Bahkan jika Anda memasukkan semua database Anda ke dalam memori, Anda masih dapat memiliki query yang berjalan lambat karena indeks yang tidak mencukupi atau alasan lain.
sumber