Cara menyetel InnoDB berpusat di sekitar
- InnoDB Buffer Pool: Ini cache halaman data dan halaman indeks. Jumlah data dan indeks yang dapat Anda cache bukan fungsi dari batasan ruang disk tetapi fungsi dari memori yang tersedia dan ruang disk saat ini digunakan oleh InnoDB.
- InnoDB MetaData: Secara default, file ibdata1 biasanya menampung apa saja dan semuanya InnoDB. Itu akan mencakup halaman data, halaman indeks, metadata tabel, data MVCC .
Berikut adalah rumus yang telah saya gunakan selama 5 tahun terakhir untuk menghitung Pool Buffer InnoDB berdasarkan ruang disk yang digunakan oleh data InnoDB dan halaman indeks :
SELECT CONCAT(ROUND(KBS/POWER(1024,IF(Power1024<0,0,
IF(Power1024>3,0,Power1024)))+0.49999),SUBSTR(' KMG',IF(Power1024<0,0,
IF(Power1024>3,0,Power1024))+1,1)) recommended_innodb_buffer_pool_size
FROM (SELECT SUM(data_length+index_length) KBS FROM information_schema.tables
WHERE engine='InnoDB') A,(SELECT 2 Power1024) B;
- Gunakan (PILIH 0 Power1024) untuk Bytes
- Gunakan (PILIH 1 Power1024) untuk KB
- Gunakan (PILIH 2 Power1024) untuk MB
- Gunakan (PILIH 3 Power1024) untuk GB
- Gunakan (PILIH 4 Power1024) untuk TB (Kirimi Saya email jika Anda memiliki TerraBytes of RAM)
Tentu saja, saya mengatakan fungsi memori dan ruang disk yang tersedia saat ini digunakan oleh InnoDB. Dari sini, cukup gunakan akal sehat. Nomor yang disarankan dari kueri di atas TIDAK HARUS MENGECUALI 75% RAM DIINSTAL !!! Itu adalah aturan praktis yang paling sederhana untuk menentukan ukuran Pool Buffer InnoDB.
Anda juga harus mengatur innodb_flush_method ke O_DIRECT karena akan memberikan penulisan sinkron yang stabil dari InnoDB. Saya juga menulis posting tentang cara mengoptimalkan Disk Storage untuk InnoDB .
Sehubungan dengan pesan Tabel tidak mendukung optimisasi, lakukan membuat ulang + menganalisis sebagai gantinya , alasan mengapa Anda mendapatkan pesan kesalahan adalah kenyataan bahwa mesin penyimpanan adalah InnoDB. Secara mekanis, OPTIMASI TABEL hanya menyalin tabel ke tabel temp dan melakukan TABEL ANALISIS .
Pada kenyataannya, ANALYZE TABLE terhadap InnoDB sama sekali tidak berguna. Bahkan jika Anda menjalankan ANALYZE TABLE pada tabel InnoDB, mesin penyimpanan InnoDB melakukan penyelaman ke dalam indeks untuk perkiraan kardinalitas berulang-ulang, sehingga menghancurkan statistik yang baru saja Anda kompilasi. Bahkan, Percona melakukan beberapa tes pada ANALYZE TABLE dan sampai pada kesimpulan yang sama juga .
Berikut adalah posting lain yang telah saya buat selama setahun tentang InnoDB Tuning