Saya melihat ke my.ini dan melihat berbagai pengaturan default. Basis data saya berjalan pada satu PC yang berdiri sendiri. Saya ingin mengoptimalkan kinerja InnoDB dan MySQL secara umum untuk kinerja. Tidak ada batasan ruang disk. Pengaturan default mana yang harus saya ubah untuk mengoptimalkan kinerja, keandalan, dan cadangan point-in-time yang lebih baik [ketersediaan tinggi].
Diedit
Saat ini, setiap kali saya menjalankan "Optimize Tables" melalui Maintenance pada MySQL Administrator, itu menunjukkan:
Tabel tidak mendukung optimisasi, malah membuat ulang + menganalisis
di semua tabel. Semua tabel saya adalah InnoDB, tetapi mengapa mereka tidak mendukung Optimize?
Jawaban:
Cara menyetel InnoDB berpusat di sekitar
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 :
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
sumber
Berikut ini adalah artikel yang lebih lama tentang variabel penting untuk 'nada kasar'. Yang paling penting mungkin adalah
innodb_buffer_pool_size
Saya akan sangat menyarankan untuk meningkatkan ke MySQL 5.5 (jika Anda belum menjalankannya). Mereka membuat beberapa perubahan pada kinerja InnoDB. Mereka bahkan menyediakan bagian utama tentang cara mengoptimalkan untuk InnoDB sekarang karena itu adalah mesin default: http://dev.mysql.com/doc/refman/5.5/en/optimizing-innodb.html
Adapun cadangan point-in-time, Anda akan ingin melihat log biner . Dasar-dasar mengaktifkan ini adalah untuk mengatur
log-bin
variabel di my.cnf Andasumber
Optimalkan hadir dalam banyak warna.
Saya pikir langkah pertama Anda harus memutuskan apa arti "mengoptimalkan" bagi Anda. Bagi sebagian orang, ini berarti "kueri SELECT tercepat". Bagi yang lain itu berarti "keseimbangan terbaik antara kinerja SELECT dan kinerja INSERT". Untuk yang lain lagi, "kinerja INSERT tercepat".
Anda perlu memutuskan apa kriteria Anda dan bagaimana Anda akan tahu apakah perubahan Anda membantu sebelumnya Anda mulai menyetel.
Kemudian letakkan file konfigurasi dan opsi mulai di bawah kontrol versi, dan mulailah bereksperimen. Dokumentasikan saran siapa yang Anda ikuti, dan di mana Anda menemukannya. (Saran berubah seiring waktu, karena basis kode dan perangkat keras berubah.) Letakkan juga dokumen-dokumen itu di bawah kontrol versi.
sumber