Ketika datang ke MySQL, tidak ada perbandingan antara mesin penyimpanan kecuali bahwa ia jatuh ke dalam dua kategori dasar:
Fitur MySQL penggunaan beberapa mesin penyimpanan
Adapun mesin penyimpanan yang terdaftar, satu-satunya yang memiliki kepatuhan ACID adalah InnoDB dan NDB. Mengapa ini tidak perlu disebutkan? Dua alasan:
- Mesin penyimpanan lainnya sama sekali tidak diuntungkan dengan kehadiran lebih banyak core, selain dari disk I / O dasar, penggunaan CPU, dan keseluruhan throughput.
- Kode untuk setiap mesin penyimpanan non-transaksional, yang pada dasarnya menentukan 14 operasi internal terlepas dari mesin penyimpanan, tidak dirancang untuk meningkatkan pengaksesan beberapa inti.
InnoDB di bawah MySQL 5.5, InnoDB Plugin), dan XtraDB Percona Server memiliki opsi yang dapat Anda atur untuk mengakses beberapa core (Percona Server telah melakukannya lebih lama). Bahkan, Percona menyuntikkan sekitar 30.000 baris kode khusus untuk peningkatan kinerja InnoDB dengan setiap rilis GA baru dari kode sumber MySQL. Kita bisa yakin Oracle telah memasukkan perangkat tambahannya sendiri dari think tank mereka sendiri untuk dijalankan dalam InnoDB untuk operasi multicore (sejak MySQL 5.1.38).
Dengan kebutuhan untuk melakukan MVCC pada data bersamaan dengan penguncian baris / halaman, kinerja transaksi sekarang dapat diinstrumentasi, diukur, dan dikonfigurasikan.
Jika ada satu hal yang saya pelajari tentang menggunakan beberapa core, itu adalah Anda harus menyetel InnoDB secara efektif dan tidak hanya mengandalkan InnoDB di luar kotak .
UPDATE 2011-09-20 08:03 EDT
Berkenaan dengan InnoDB yang diuntungkan dari semua core, kita perlu menjaga segala sesuatunya dalam perspektif. Core juga harus cenderung ke hal-hal lain (OS, Disk, Memori, Aplikasi, Pemantauan, dll.) Di Server Database. Bagi mereka dengan anggaran sederhana, banyak yang cenderung memiliki Database Server juga menyediakan NFS, pemantauan dari Munin, dukungan aplikasi untuk JBoss, PHP, dan daftar berjalan. Jika Anda ingin MySQL, lebih khusus InnoDB, untuk menggunakan lebih banyak core, Server Database harus didedikasikan khusus untuk MySQL dan OS / Disk / Memory harus cenderung hanya untuk MySQL . Mengingat perspektif ini, InnoDB akan melibatkan lebih banyak core tanpa keraguan .
Adapun Plugin InnoDB, itu disebutkan hanya untuk menunjukkan inisiatif sebelumnya untuk memiliki InnoDB yang lebih baik pada bagian dari MySQL (eh, Oracle. Maaf, masih belum bergeming). Variabel baru untuk memanggil lebih banyak aktivitas inti menjadi jelas dari MySQL 5.1.38.
Misalnya, innodb_read_io_threads dan innodb_write_io_threads (keduanya sejak MySQL 5.1.38) mengalokasikan jumlah utas yang ditentukan untuk dibaca dan ditulis. Default adalah 4 dan maksimum adalah 64. Pengaturan default dan maks sangat berbeda (4 - 64) menunjukkan bahwa InnoDB adalah multithread dan inti intensif seperti yang Anda konfigurasikan !!!
Mengatasi kebutuhan komunitas MySQL untuk mengakses lebih banyak core dengan InnoDB dipimpin oleh Percona. Akibatnya, MySQL mulai mengikutinya. Saya harus mengakui bahwa Oracle (yuck) melakukan perbaikan yang diperlukan untuk aktivitas inti yang lebih banyak.