Saya punya satu database sekitar 4,5GB yang berjalan di server dengan 8GB RAM. Sebagian besar tabel adalah MyIsam (sekitar 4.3GB), tapi saya akan segera mengonversinya menjadi InnoDB. (Ini akan menjadi proses yang lambat, berfokus pada tabel paling intensif pada awalnya).
Apakah ada yang salah dengan menjalankan server khusus di mana kedua jenis mesin penyimpanan ada?
mysql
innodb
myisam
storage-engine
Derek Downey
sumber
sumber
Is there anything wrong with running a dedicated server where both types of storage engines exist?
Mungkin ulangi lagiMultiple types
?Jawaban:
Tidak ada yang salah dengan menggunakan beberapa mesin penyimpanan pada mesin fisik yang sama, selama Anda memahami pro dan kontra masing-masing. Ada pertimbangan kinerja, batasan fitur, dan kasus penggunaan untuk semua jenis penyimpanan plugin.
Misalnya, jika Anda memiliki tabel kecil yang 90% menulis, Anda dapat memilih MyISAM. Jika data dapat dibuat ulang dengan mudah dan ini adalah meja kecil, katakanlah untuk antri, Anda mungkin memilih Memori. Jika Anda memiliki tabel yang berbunyi 90%, dan data harus ada di sana ketika Anda mencarinya, maka Anda mungkin akan memilih mesin penyimpanan yang mendukung transaksi dan atomisitas yang dapat dikonfigurasi, seperti InnoDB. Jika Anda ingin aksesibilitas melalui sistem file tanpa merusak data, Anda dapat memilih CSV.
Meskipun demikian, Anda dapat dengan aman menggunakan beberapa mesin penyimpanan dalam skema yang sama serta host fisik.
Akan saya perhatikan, bahwa buffer Anda berperan dalam seluruh kekacauan ini. Jika Anda menggunakan MyISAM dan InnoDB, Anda harus berhati-hati agar key_buffer dan innodb_buffer_pool Anda tidak bersaing. Ini akan membutuhkan perencanaan yang matang dari Anda, tetapi itulah yang kami lakukan.
sumber
Saya tidak bisa memberi tahu Anda apakah ini adalah praktik umum. Saya bisa katakan tentang pengalaman saya sendiri.
Saya selalu menggunakan alat terbaik untuk pekerjaan itu, jadi saya mencampur mesin sepanjang waktu. Sebagian besar proyek saya menggunakan MyISAM sebagai mesin default.
Ketika saya membutuhkan fitur khusus yang hanya tersedia di InnoDB, saya melakukannya.
Ketika sebuah tabel kebanyakan hanya baca-saja, saya memilih mesin Arsip sebelum saya bisa berkedip.
Mengetahui bahwa server mesin memiliki cukup memori, semua data temp saya disimpan di tabel Heap.
Saya melihat di masa lalu beberapa perlambatan pencampuran MyISAM dan InnoDB tapi ini bukan masalah MySQL yang spesifik. Ini masalah desain yang tidak terlihat ketika Anda hanya menggunakan satu mesin. Sebenarnya menggunakan mesin yang salah menyebabkan lebih banyak pelambatan tidak masalah apakah itu hanya MyISAM, hanya InnoDB atau gabungan keduanya. Sulit untuk menentukan formula untuk mengetahui kapan perlambatan akan terjadi. Hanya tes yang sebenarnya bisa mengatakannya kepada Anda.
Tentu saja, Anda tidak dapat mempertahankan integritas dan konsistensi pencampuran InnoDB dan MyISAM pada permintaan unik.
sumber
Saya mencoba untuk menghindari pencampuran tabel MyISAM dan InnoDB dalam database yang sama, tetapi ini untuk alasan kewarasan daripada alasan praktis. Namun, saya merasa berguna untuk memiliki database dengan tabel MyISAM untuk pencarian teks lengkap sehingga saya dapat menjalankannya di situs. Menyimpannya dalam database terpisah dengan kunci asing untuk setiap entri membuatnya mudah bagi pengembang lain yang bekerja pada DB untuk melihat apa yang terjadi.
sumber