innodb_buffer_pool_size Anda harus disetel ke jumlah data dan indeks InnoDB yang Anda miliki. Jalankan kueri ini dan itu akan memberi tahu Anda pengaturan Minimum yang disarankan untuk Data Innodb mysql saat ini
SELECT CONCAT(ROUND(KBS/POWER(1024,IF(pw<0,0,IF(pw>3,0,pw)))+0.49999),
SUBSTR(' KMG',IF(pw<0,0,IF(pw>3,0,pw))+1,1)) recommended_innodb_buffer_pool_size
FROM (SELECT SUM(index_length) KBS FROM information_schema.tables WHERE
engine='InnoDB') A,(SELECT 3 pw) B;
Jika data InnoDB Anda jauh melebihi RAM yang terpasang di server DB, saya sarankan 75% dari RAM yang terpasang di kotak. Jadi, jika Anda memiliki server 16 GB, gunakan 12G sebagai innodb_buffer_pool_size.
Anda juga harus menyetel innodb_log_file_size ke 25% dari innodb_buffer_pool_size atau 2047M, mana yang lebih kecil. Untuk mengubah file ib_logfile0 dan ib_logfile1, Anda harus:
mysql -uroot -p -e"SET GLOBAL innodb_fast_shutdown = 0;"
service mysql stop
rm ib_logfile0 ib_logfile1
service mysql start
Jika Anda menggunakan MySQL 5.5, atur berikut ini:
innodb_read_io_threads=64
innodb_write_io_threads=64
innodb_io_capacity=20000 (set this to your device's IOPs)
Jika Anda akan mempertahankan data MyISAM, jalankan kueri ini untuk setelan ideal untuk key_buffer_size:
SELECT CONCAT(ROUND(KBS/POWER(1024,IF(pw<0,0,IF(pw>3,0,pw)))+0.49999),
SUBSTR(' KMG',IF(pw<0,0,IF(pw>3,0,pw))+1,1)) recommended_key_buffer_size
FROM (SELECT SUM(index_length) KBS FROM information_schema.tables
WHERE engine='MyISAM' AND table_schema NOT IN ('information_schema','mysql')) A,
(SELECT 3 pw) B;
PERBARUI 2013-02-13 12:55 EDT
Belakangan ini saya belajar untuk tidak menyetel innodb_io_capacity sangat tinggi, jika sama sekali. Hal ini terutama berlaku pada perangkat keras komoditas dan VM:
- http://www.mysqlperformanceblog.com/2012/02/17/the-relationship-between-innodb-log-checkpointing-and-dirty-buffer-pool-pages/
- http://www.mysqlperformanceblog.com/2010/12/20/mysql-5-5-8-and-percona-server-being-adaptive/