MySQL hakkında söyleyebileceğim bir şey varsa, işlemsel (ACID uyumlu) depolama motoru olan InnoDB gerçekten de okuyucusudur. Ancak, SİZİN YAPILANDIRMAK kadar çok iş parçacıklı !!! "Kutudan çıkar çıkmaz" bile, InnoDB, varsayılan ayarları göz önüne alındığında tek bir CPU ortamında mükemmel performans sergiliyor. InnoDB çoklu okuma özelliklerinden yararlanmak için birçok seçeneği etkinleştirmeyi unutmayın.
innodb_thread_concurrency , InnoDB'nin açık tutabileceği eşzamanlı konu sayısına bağlı olarak üst sınırı ayarlar. Bunun için belirlenecek en iyi tur sayısı (2 X CPU Sayısı) + Disk Sayısı. GÜNCELLEME : Percona NYC Konferansı'ndan ilk elden öğrendiğim gibi, InnoDB Storage Engine'i içinde bulunduğu ortam için en iyi sayıda iş parçacığı bulmak üzere uyarmak için bunu 0 olarak ayarlamanız gerekir.
innodb_concurrency_tickets , eşzamanlılık kontrolünü cezasızlıkla atlayabilecek iş parçacıklarının sayısını ayarlar. Bu sınıra ulaşıldıktan sonra, iş parçacığı eşzamanlılık denetimi tekrar norm haline gelir.
innodb_commit_concurrency , gerçekleştirilebilecek eş zamanlı işlem sayısını belirler. Varsayılan değer 0 olduğundan, bu ayarı yapmamak, herhangi bir sayıda işlemin aynı anda işlem yapmasına izin verir.
innodb_thread_sleep_delay , InnoDB kuyruğuna yeniden girmeden önce bir InnoDB iş parçacığının uykuda kalabileceği milisaniye sayısını ayarlar. Varsayılan değer 10000 (10 sn).
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.
innodb_replication_delay , bir köledeki iplik gecikmesini empoze eder, innodb_thread_concurrency değerine ulaşılır.
innodb_read_ahead_threshold , eşzamansız okumaya geçmeden önce ayarlanan sayıdaki (64 sayfa [sayfa = 16K]) doğrusal okumalara izin verir.
Daha fazla seçenek söylesem zaman zaman benden kaçardı. Onlar hakkında MySQL'in Dokümantasyonunda okuyabilirsiniz .
Çoğu kişi bu özelliklerin farkında değildir ve InnoDB'den yalnızca ACID uyumlu işlemler yapmaktan oldukça memnun. Bu seçeneklerden herhangi birini ince ayarladıysanız, kendi sorumluluğunuzdadır.
MySQL 5.5 Çoklu Tampon Havuz Örnekleri ile oynadım (9 tampon havuz örneğinde 162 GB) ve verilerin bu şekilde bellekte otomatik olarak bölünmesine çalıştım. Bazı uzmanlar bunun% 50 performans artışı vermesi gerektiğini söylüyor. Elimde InnoDB taramasını yapan bir ton iplik kilitleme vardı. 1 tampona (162GB) geçtim ve dünyada yine her şey yolunda gitti. Bunu ayarlamak için emrinde Percona uzmanlarına ihtiyacın var sanırım. Yarın New York'taki Percona MySQL Konferansında olacağım ve fırsatın yeterliliği varsa bunu soracağım.
Sonuç olarak, InnoDB çok iş parçacıklı işlemler için varsayılan ayarları göz önüne alındığında çok işlemcili bir sunucuda şimdi iyi davranıyor. Tweaking, büyük özen, sabır, mükemmel belgeler ve mükemmel kahve (veya Red Bull, Jolt, vb.) Alır.
Günaydın, iyi akşamlar ve iyi geceler !!!
GÜNCELLEME 2011-05-27 20:11
Perşembe günü New York'ta düzenlenen Percona MySQL Konferansından geri döndüm . Ne konferans. Çok şey öğrendim, ancak InnoDB ile ilgili olarak bakacağım bir cevap aldım. Ronald Bradford tarafından innodb_thread_concurrency değerinin 0 olarak ayarlanmasının InnoDB'nin iplik eşzamanlılığı ile şirket içinde en iyi hareket tarzına karar vermesine izin vereceği konusunda bilgilendirildim . Bunu daha fazla MySQL 5.5'te deneyeceğim.
GÜNCELLEME 2011-06-01 11:20
Bir uzun sorgu devam ettiği sürece, InnoDB ACID uyumludur ve MultiVersion Eşzamanlılık Kontrolü ile çok iyi çalışır . İşlemler, başkalarının verilere erişmesini engelleyen yalıtım düzeylerini (varsayılan olarak tekrarlanabilir okumalar) taşıyabilmelidir.
Çok çekirdekli sistemlere gelince, InnoDB uzun bir yol kat etti. Geçmişte, InnoDB çok çekirdekli bir ortamda iyi performans gösterememiştir. Birden fazla mysqld işlemini CPU'lara dağıtmak için birden fazla çekirdeği almak için tek bir sunucuda birden fazla mysql örneği çalıştırmak zorunda olduğumu hatırlıyorum. Percona ve daha sonra MySQL (eh, Oracle, beni hala kıkırdattığını söylüyorlar) sayesinde artık gerekli değil, çünkü InnoDB'yi çekirdeklere çok fazla ayarlama yapmadan basitlikle erişebilen daha olgun bir depolama motorunda geliştirdiler. Bugün InnoDB'nin mevcut örneği, tek bir çekirdekli sunucuda iyi çalışabilir.