MySQL'in maksimum bellek kullanımı büyük ölçüde donanıma, ayarlarınıza ve veritabanının kendisine bağlıdır.
Donanım
Donanım bariz olan kısımdır. Daha fazla RAM daha iyi, daha hızlı disk ftw . Yine de o aylık veya haftalık haber mektuplarına inanmayın. MySQL, Oracle donanımında bile doğrusal olarak ölçeklenmez. Bundan biraz daha zor.
Kısacası: tavsiye ne için pratik genel bir kural yoktur senin MySQL kurulumu. Her şey mevcut kullanıma veya projeksiyonlara bağlıdır.
Ayarlar ve veritabanı
MySQL, davranışını optimize etmek için sayısız değişken ve anahtar sunar. Sorunlarla karşılaşırsanız, gerçekten oturup (f'ing) kılavuzunu okumanız gerekir.
Veritabanına gelince - birkaç önemli kısıtlama:
- masa motoru (
InnoDB
, MyISAM
, ...)
- boyut
- endeksleri
- kullanım
Stackoverflow'daki çoğu MySQL ipucu size 5-8 sözde önemli ayarlar hakkında bilgi verecektir. Öncelikle, hepsi önemli değil - örneğin InnoDB'ye çok fazla kaynak ayırmak ve InnoDB'yi kullanmamak çok mantıklı değil çünkü bu kaynaklar boşa gidiyor.
Veya - birçok insan max_connection
değişkeni yükseltmeyi öneriyor - pek azı biliyorlar ki, MySQL'in max_connections
ihtiyaç duyulursa bunları karşılamak için daha fazla kaynak ayıracağını ima ediyor . Daha bariz çözüm, DBAL'nizdeki veritabanı bağlantısını kapatmak veya wait_timeout
bu iş parçacıkları serbest bırakmak için düşürmek olabilir .
Benim sürüklenmemi yakalarsanız - gerçekten okuyacak ve öğrenecek çok şey var.
Motorlar
Masa motorları oldukça önemli bir karardır, pek çok insan bunları erkenden unutur ve sonra kendilerini MyISAM
kilitlenip tüm uygulamalarını engelleyen 30 GB büyüklüğünde bir masa ile savaşırken bulur .
Söyleyecek ortalama yok MyISAM berbat , ama InnoDB
yanıt verdiklerini tweaked neredeyse veya hemen hemen kadar hızlı MyISAM
ve teklifler üzerinde satır-kilitleme diye bir şey UPDATE
oysa MyISAM
o yazılır kilitleri tüm tablo.
MySQL'i kendi altyapınızda çalıştırma özgürlüğüne sahipseniz, percona sunucusuna da göz atmak isteyebilirsiniz çünkü Facebook ve Google gibi şirketlerin (hızlı bilirler) birçok katkılarının yanı sıra Percona'nın kendi drop- yerine InnoDB
, aradı XtraDB
.
Percona-server (ve -client) kurulumu (Ubuntu'da) için ana fikre bakın: http://gist.github.com/637669
Boyut
Veritabanı boyutu çok, çok önemlidir - ister inanın ister inanmayın, Intarweb'lerdeki çoğu insan hiçbir zaman büyük ve yoğun bir MySQL kurulumuyla uğraşmadı, ancak bunlar gerçekten var. Bazı insanlar trol yapacak ve "PostgreSQL Kullan !!! 111" gibi bir şey söyleyecek, ama şimdilik onları görmezden gelelim.
Sonuç olarak, boyuta bakılırsa, donanım hakkında karar verilecek. 80 GB'lık bir veritabanını 1 GB RAM'de gerçekten hızlı çalıştıramazsınız.
Endeksler
Bu değil: ne kadar çok, o kadar iyi. Yalnızca gerekli endeksler ayarlanmalı ve kullanım ile kontrol edilmelidir EXPLAIN
. MySQL'in EXPLAIN
gerçekten sınırlı olduğunu ekleyin , ancak bu bir başlangıç.
Önerilen konfigürasyonlar
Bunlar my-large.cnf
ve my-medium.cnf
dosyalar hakkında - bunların kimin için yazıldığını bile bilmiyorum. Kendininkini yuvarla.
Ayarlama astarı
Harika bir başlangıç, ayarlama astarıdır . Bu bir bash betiğidir (ipucu: linux'a ihtiyacınız olacak), çıktılarını alan SHOW VARIABLES
ve SHOW STATUS
onu yararlı bir öneriye dönüştürür. Sunucunuz bir süre çalışmışsa, onlara dayandırılacak veriler olacağı için öneri daha iyi olacaktır.
Ayarlama astarı sihirli bir sos değil. Yine de değiştirilmesini önerdiği tüm değişkenleri okumalısınız.
Okuma
Mysqlperformanceblog'u tavsiye etmeyi gerçekten çok seviyorum . MySQL ile ilgili her türlü ipucu için harika bir kaynak. Ve bu sadece MySQL değil, aynı zamanda doğru donanım hakkında çok şey biliyorlar veya AWS vb. İçin kurulumlar öneriyorlar. Bu adamların yıllara dayanan deneyimleri var.
Elbette bir başka büyük kaynak da planet-mysql'dir .