Sesuai judul: Apakah ada daftar kandidat untuk tabel yang akan dimigrasi ke InnoDB? Dan apa yang harus tetap MyISAM.
Beberapa informasi tambahan
- Situs ini memiliki beban baca yang cukup berat, tetapi menyisipkan sekitar 10 node per jam, dengan tag dan semacamnya.
- Kami banyak menggunakan CCK (sejumlah besar tabel yang dinormalisasi dalam bentuk
content_field%
). - Kami juga menggunakan Tampilan untuk tentang semua blok dan halaman kami; tetapi banyak dari mereka adalah kandidat untuk penggantian dengan modul khusus (untuk mengurangi permintaan basis data dan beratnya permintaan itu).
- Pengguna semuanya anonim; dengan pengecualian beberapa editor dan webmaster yang masuk.
performance
database
berkes
sumber
sumber
Jawaban:
Anda harus mengonversi semua data ke InnoDB untuk mencegah masalah penguncian tabel. Namun, ada beberapa hal yang perlu dipikirkan:
Pengindeksan FULLTEXT
Saat ini, hanya MyISAM yang mendukung pengindeksan FULLTEXT. Pengindeksan FULLTEXT untuk InnoDB saat ini sedang dalam proses untuk MySQL 5.6 tetapi belum siap-produksi . Jika Anda memiliki tabel Drupal yang memiliki indeks FULLTEXT, mereka tidak dapat dikonversi ke InnoDB saat ini.
UPDATE pada Pengindeksan FULLTEXT
MySQL 5.6 sekarang GA (keluar untuk Penggunaan Produksi). Silakan coba pengindeksan FULLTEXT di InnoDB.
Untuk menemukan tabel yang memiliki
FULLTEXT
indeks, jalankan kueri ini:Jika tidak ada baris yang kembali, konversikan semua tabel InnoDB ke isi hati Anda. Saya menulis posting sebelumnya tentang cara mengkonversi semua tabel MyISAM ke InnoDB hanya menggunakan mysql .
Replikasi MySQL
Jika Anda memiliki lingkungan baca-berat, membaca dapat berjalan lebih cepat di MyISAM jika Anda melakukan hal berikut:
--skip-innodb
/etc/my.cnf di semua Budak (mengkonversi tabel ke MyISAM saat memuat data ke dalam Budak)ALTER TABLE tblname ROW_FORMAT=FIXED;
ROW_FORMAT=FIXED
di halaman 72,73. Ini akan secara internal mengonversi semua bidang VARCHAR ke CHAR. Ini akan membuat tabel MyISAM lebih besar, tetapi mengeksekusi SELECTs terhadapnya akan jauh lebih cepat. Saya pribadi bisa membuktikan hal ini. Saya pernah punya meja yang 1.9GB. Saya mengubah format denganALTER TABLE tblname ROW_FORMAT=FIXED
. Tabel berakhir 3.7GB. Kecepatan SELECT terhadapnya adalah 20-25% lebih cepat tanpa memperbaiki atau mengubah apa pun.Satu-satunya sakit kepala dengan ini adalah membuat aplikasi Anda mengetahui tentang slave baca yang terpisah.
EPILOG
Jika Anda melihat manfaat lain yang dimiliki masing-masing mesin penyimpanan, periksa DBA StackExchange:
Apr 14, 2011
: Apa perbedaan utama antara InnoDB dan MyISAM?Sep 20, 2011
: Terbaik dari MyISAM dan InnoDBMay 02, 2012
: Mesin penyimpanan mysql mana yang harus dipilih?May 03, 2012
: Mana yang lebih cepat, InnoDB atau MyISAM?sumber
Karena situs web Anda berada di sisi baca-berat, saya cukup mengkonversi semua tabel ke InnoDB. Anda kemudian dapat mengoptimalkan kinerja baca dengan mengukur ukuran buffer InnoDB dan cache kueri dengan tepat. Dengan cara ini, kami mencapai beberapa ribu permintaan per detik pada server database khusus dalam infrastruktur hosting Drupal kami.
sumber