MySQL'e gelince, iki temel kategoriye girmesi dışında depolama motorları arasında bir karşılaştırma yoktur.
MySQL birkaç depolama motorunun kullanımına sahiptir
Listelenen depolama motorlarına gelince, yalnızca ACID uyumlu olanlar InnoDB ve NDB'dir. Neden bu önem taşıyor? İki sebep:
- Diğer depolama motorları, temel disk I / O, CPU kullanımı ve genel verim dışında daha fazla çekirdek varlığında faydalanmamaktadır.
- Depolama motoruna bakılmaksızın temel olarak 14 iç işlemi belirleyen işlemsel olmayan her depolama motorunun kodu, birden çok çekirdeğin erişimini kaldıracak şekilde tasarlanmamıştır.
MySQL 5.5 altındaki InnoDB, InnoDB Eklentisi) ve Percona Server'ın XtraDB'si birden fazla çekirdeğe erişmek için ayarlayabileceğiniz seçeneklere sahiptir (Percona Sunucusu daha uzun süredir çalışıyor). Aslında, Percona, MySQL kaynak kodunun her yeni GA sürümü ile InnoDB'nin performansının artırılması için özel olarak yaklaşık 30.000 satırlık kod enjekte eder. Oracle'ın çok çekirdekli çalışma için InnoDB içinde çalışacak kendi düşünce tanklarından kendi geliştirmelerini eklediğinden emin olabiliriz (MySQL 5.1.38'den beri).
MVCC'yi verilerde satır / sayfa kilitleme ile bağlantılı olarak gerçekleştirme ihtiyacı ile işlem performansı şimdi gösterilebilir, ölçülebilir ve yapılandırılabilir.
Birden fazla çekirdek kullanma konusunda öğrendiğim bir şey varsa, InnoDB'yi etkin bir şekilde ayarlamalı ve yalnızca kutudan çıkan InnoDB'ye güvenmemelisiniz .
GÜNCELLEME 2011-09-20 08:03 EDT
InnoDB'nin tüm çekirdekten yararlanma ile ilgili olarak, işleri perspektifte tutmamız gerekiyor. Çekirdekler, Veri Tabanı Sunucusu'ndaki diğer hususlara da (OS, Disk, Bellek, Uygulamalar, İzleme vb.) Eğilim göstermelidir. Mütevazı bütçeleri olanlar için, birçoğunun bir Veri Tabanı Sunucusu'nu da NFS sağlama, Munin'den izleme, JBoss, PHP için uygulama desteği sağlama ve liste devam ediyor. MySQL'in, özellikle InnoDB'nin daha fazla çekirdek kullanmasını istiyorsanız , Veritabanı Sunucusu yalnızca MySQL'e tahsis edilmeli ve OS / Disk / Bellek yalnızca MySQL'e yönelmelidir . Bu perspektife bakıldığında, InnoDB bir şüphe ile daha fazla çekirdek meşgul olacaktır .
InnoDB Eklentisi'ne gelince, daha önce MySQL adına daha iyi bir InnoDB'ye sahip olmak için daha önceki girişimlerde bulunmasından söz edildi. Daha fazla çekirdek aktivite toplamak için yeni değişkenler MySQL 5.1.38'den belli oldu.
Örneğin, innodb_read_io_threads ve innodb_write_io_threads (her ikisi de MySQL 5.1.38’den beri) okuma ve yazma için belirtilen sayıda konu tahsis eder. Varsayılan 4 ve maksimum 64'tür. Varsayılan ve maksimum ayarların çok farklı olması (4 - 64), InnoDB'nin yapılandırdığınız gibi çok iş parçacıklı ve çekirdek yoğun olduğunu gösterir !!!
MySQL topluluğunun InnoDB ile daha fazla çekirdeğe erişim gereksinimlerinin karşılanması Percona tarafından yönlendirildi. Sonuç olarak, MySQL takım elbise takip etmeye başladı. Oracle'ın (yuck) daha fazla temel faaliyet için gerekli iyileştirmeleri yaptığını itiraf etmeliyim.