Tablo kilitleme sorunlarını önlemek için tüm verileri InnoDB'ye dönüştürmelisiniz. Ancak, burada düşünülmesi gereken şeyler var:
FULLTEXT Dizine Ekleme
Şu anda, yalnızca MyISAM FULLTEXT dizinlemesini desteklemektedir. InnoDB için FULLTEXT indeksleme şu anda MySQL 5.6 için çalışıyor, ancak üretime hazır değil . FULLTEXT dizinleri olan herhangi bir Drupal tablonuz varsa, şu anda InnoDB'ye dönüştürülemezler.
FULLTEXT Endekslemesinde GÜNCELLEME
MySQL 5.6 artık GA (Üretimde Kullanım için). Lütfen InnoDB'de FULLTEXT dizinini deneyin.
FULLTEXT
Dizin içeren tabloları bulmak için şu sorguyu çalıştırın:
SELECT table_schema,table_name
FROM information_schema.statistics
WHERE index_type='FULLTEXT';
Hiçbir satır geri gelmezse, tüm InnoDB tablolarını kalbinizin içeriğine dönüştürün. Tüm MyISAM tabloları sadece mysql kullanarak InnoDB dönüştürmek nasıl önceki bir yazı yazdım .
MySQL Çoğaltma
Ağır bir ortamınız varsa, aşağıdakileri yaparsanız MyISAM'de okumalar daha hızlı olabilir:
- Ana / Bağımlı Çoğaltmayı Ayarlama
- Master altında bir veya daha fazla Okuma Kölesi oluşturun
--skip-innodb
Tüm Kölelere /etc/my.cnf içinde ekleyin (Slave'e veri yüklerken tabloları MyISAM'a dönüştürür)
- Her Slave'deki tüm MyISAM tablolarının satır biçimini bu komutla DÜZELTİL olarak değiştirin:
ALTER TABLE tblname ROW_FORMAT=FIXED;
- Bu konuda bir şey DBA StackExchange gönderdi
- MySQL Veritabanı Tasarımı ve Ayarlama kitabı
ROW_FORMAT=FIXED
sayfa 72,73'te kullanılmasını tavsiye eder . Bu, tüm VARCHAR alanlarını dahili olarak CHAR'a dönüştürecektir. MyISAM tablosunu büyütür, ancak buna karşı yürütülen SELECT'ler çok daha hızlı olur. Ben şahsen bunu kanıtlayabilirim. Bir zamanlar 1.9GB'lık bir masa vardı. Biçimi ile değiştirdim ALTER TABLE tblname ROW_FORMAT=FIXED
. Masa 3,7GB oldu. SELECT'lerin buna karşı hızı, başka bir şey geliştirmeden veya değiştirmeden% 20-25 daha hızlıydı.
Bununla ilgili tek baş ağrısı, uygulamanızı ayrı okuma kölelerinden haberdar etmektir.
SONSÖZ
Her bir depolama motorunun sahip olduğu diğer avantajlara bakıyorsanız, DBA StackExchange'i kontrol edin: