Saya noob yang cukup besar dalam hal pengaturan MySQL untuk kinerja. Dan jujur saya tidak khawatir tentang fine tuning untuk memeras setiap bit terakhir kinerja dari MySQL, tapi saya tahu bahwa hal yang paling penting untuk dilakukan yang memberikan beberapa hasil terbaik adalah menyiapkan cache / buffer dengan benar.
Saya sudah mencoba untuk menjaga hal-hal sederhana dengan hanya menggunakan InnoDB sebagai mesin penyimpanan. Dan saya punya server khusus untuk MySQL. Ini memiliki 8gb RAM, bagaimana saya harus mengalokasikan itu untuk memaksimalkan kinerja? Saya ingin dapat memasukkan seluruh database saya ke dalam memori untuk kinerja terbaik. Basis datanya sekitar 5gb. Apakah ini mungkin?
Berapa banyak memori yang harus saya alokasikan ke cache kueri? Berapa banyak ke kolam penyangga InnoDB? Berapa banyak untuk sisa komputer (mis. Proses non MySQL terkait)? Dll
Karena saya tidak menggunakan MyISAM, saya tidak perlu menaruh banyak memori di cache kunci, benar?
IMHO Anda harus dapat pergi dengan
Itu akan menjadi 62,5% RAM dengan jumlah RAM yang cukup untuk Server OS plus memori untuk Koneksi DB
@kvisle direkomendasikan menggunakan mysqltuner.pl. Skrip itu sangat bagus untuk menilai jumlah RAM yang didedikasikan untuk join_buffer_size, sort_buffer_size, read_buffer_size, dan read_rnd_buffer_size. Keempat buffer yang ditambahkan bersama-sama dikalikan dengan max_connections. Jawaban itu ditambahkan ke buffer statis (innodb_buffer_pool_size + key_buffer_size). Jumlah gabungan dilaporkan. Jika jumlah gabungan itu melebihi 80% RAM, saat itulah Anda harus menurunkan ukuran buffer tersebut. mysqltuner.pl akan sangat membantu dalam hal ini.
Karena semua data Anda adalah InnoDB, Anda dapat membuat key_buffer_size (buffer cache kunci untuk indeks MyISAM) sangat rendah (saya sarankan 64M).
Berikut adalah posting yang saya buat di DBA StackExchange untuk menghitung ukuran yang direkomendasikan dari innodb_buffer_pool_size .
UPDATE 2011-10-15 19:55 EDT
Jika Anda tahu Anda akan memiliki data 5GB, maka rekomendasi pertama saya adalah OKE. Namun, saya lupa menambahkan satu hal:
Ukuran file log harus 25% dari Pool Buffer InnoDB
UPDATE 2011-10-16 13:36 EDT
Aturan 25% didasarkan pada penggunaan dua file log. Meskipun dimungkinkan untuk menggunakan beberapa file log innodb, dua biasanya bekerja paling baik.
Lainnya menyatakan menggunakan 25%
Namun, dalam semua kewajaran, seseorang dari perusahaan InnoBase Oy yang asli menyatakan tidak menggunakan aturan 25% karena memiliki InnoDB Buffers Pool yang lebih besar .
Secara alami, aturan 25% tidak dapat berfungsi ketika memiliki jumlah RAM yang besar. Bahkan, innodb_log_file_size terbesar yang diizinkan hanya menggunakan 2 file log adalah 2047M, karena ukuran gabungan file log harus kurang dari 4G (4096M)
CASE IN POINT: Salah satu klien majikan saya memiliki server DB dengan RAM 192GB. Tidak ada cara untuk memiliki file log 48G. Saya simlpy menggunakan ukuran file maks untuk file log innodb, 2047M. Komentar @ Kvisle pada jawaban saya hanya memberikan tautan yang menyatakan Anda tidak perlu membatasi diri pada dua file log. Jika Anda memiliki file log N, mereka tidak dapat total 4G. Aturan 25% saya hanya di dunia yang sempurna (DB Server dengan 8GB atau kurang).
sumber