Apa yang harus saya ketahui sebelum ditayangkan dengan database InnoDB?

10

Hal-hal apa yang harus diketahui dan dilakukan oleh server atau DB-admin sebelum membuat database InnoDB tersedia.

Saya sedang memikirkan hal-hal seperti menetapkan nilai yang benar untuk innodb_buffer_pool_sizedaninnodb_log_file_size

Jadi hal-hal sederhana apa yang bisa Anda lupakan untuk mengkonfigurasi yang akan menyebabkan aplikasi menggunakan database bekerja kurang optimal?

Jacco
sumber

Jawaban:

14

Ada beberapa opsi konfigurasi yang harus Anda pikirkan sebelum mulai.

Selama Anda tidak menggunakan myisam sama sekali, Anda dapat dengan aman mengalokasikan hampir semua (cukup menjaga agar OS Anda berjalan dengan nyaman, dan cukup untuk max_connections) memori Anda innodb_buffer_pool. Hal yang menyenangkan tentang InnoDB adalah menangani hampir semua hal-hal memori dengan sendirinya, tidak perlu memisahkan hal-hal seperti cache kueri, buffer kunci dll.

Saya akan merekomendasikan agar Anda mengaktifkan innodb_file_per_table, hanya karena itu membuatnya jauh lebih mudah untuk hanya menelusuri sistem file dan melihat berapa banyak ruang tabel dan database yang berbeda butuhkan. Anda masih memerlukan file ibdata umum untuk penggunaan internal InnoDB, tetapi Anda bisa mendefinisikannya sebagai 10M:autoextend. Tidak perlu mendefinisikan banyak file data innodb berbeda dengan ukuran yang dialokasikan sebelumnya.

innodb_log_file_sizedan innodb_log_buffer_sizedigabungkan harus lebih besar dari sepuluh kali objek gumpalan terbesar Anda jika Anda memiliki banyak yang besar. Jika Anda tidak (dan Anda seharusnya tidak [ 1 , 2 ]), benar-benar tidak perlu repot untuk melakukannya. Periksa Blog Kinerja MySQL untuk laporan terperinci tentang cara menghitung.

Dan ketika Anda sudah menjalankan MySQL untuk sementara waktu, periksa pengaturan Anda dengan MySQLTuner atau MySQL Tuning Primer .

Untuk laporan yang lebih detail, coba mysqlreport , dan untuk pemantauan langsung, periksa mytop .

Nils-Anders Nøttseter
sumber
Satu hal yang perlu diingat tentang innodb_file_per_table adalah metode yang digunakan untuk memulihkan ruang disk berbeda. Dengan file ibdata Anda dapat memulihkan ruang di tablespace dengan menghapus dari ujung tabel Anda. Dengan ruang file tabel individu tidak dipulihkan dengan menghapus, kita harus membangun kembali tabel dengan tabel mengoptimalkan untuk mengembalikan ruang ke sistem file. Optimasi mengunci tabel sehingga dapat menyebabkan waktu henti dalam aplikasi Anda.
mtinberg
2

Satu "kejutan" bagi saya adalah bahwa innodb menggunakan, secara default, satu file untuk semua database / tabel. Berbeda dengan tabel MyISAM yang menggunakan direktori per database dan file per tabel / tableindex.

Itu mungkin penting jika Anda terbiasa mengecilkan file fisik berdasarkan tabel (mengoptimalkan tabel xxx)


sumber