MySQL etkin bir şekilde 64 GB RAM'den yararlanabilir mi?


22

Yaklaşık 50 milyon satır içeren ve 4 GB'lık bir dizin boyutuna sahip (yaklaşık 6 GB'lik tablo boyutu) bir tabloyu sorgulamanın veritabanı sunucusunun belleği değiştirmesine ve önemli ölçüde yavaşlamasına neden olduğu bir sorunla karşı karşıyayız. Bunun geçici tablo boyutunun aşılması ve diske takılması gerektiğinden eminim.

Eğer veritabanı sunucumu 32 GB RAM'den 64 GB RAM'e yükselttiyseniz, MySQL veritabanının bu ek bellekten tam olarak faydalanıp faydalanmayacağını ve takas edilemeyeceğini merak ediyorum. Değişkenlerin birkaçından (örn. KEY_BUFFER_SIZE, vb ...) geçtim ve 64 GB üzerindeki ayar değerlerini destekliyorlar. Ancak, MySQL belgeleri, tmp_table_size'nin 4 GB'da maksimuma çıktığını söylüyor.

Öyleyse, hafıza yükseltme buna değer mi? "Query-large-table" sorunu bundan yararlanabilir mi, yoksa 4 GB sınırı nedeniyle işe yaramaz mıydı? Farklı şekillerde bölümlere ayrılacak masayı yeniden yapılandırmak gibi potansiyel olarak başka çözümler olduğunu biliyorum, vb ... ama tablo hakkında herhangi bir şeyi değiştirmeden ek bellek yardımcı olur mu?

Ayrıca, genel olarak, MySQL'in 32'den 64 GB RAM'e geçerken yararlanamayacağı bellekle ilgili başka değişkenler var mı?

Veritabanı sunucumuz olarak 64bit linux (Ubuntu) kullanıyoruz.

Sağol Galen

Yanıtlar:


5

InnoDB kullanıyorsanız, ayarlanacak en önemli değişken innodb_buffer_pool_size. Sistem belleğinizin yaklaşık% 80'ine ayarlarım. Bazı kullanımlardan sonra önbellekleri ısındığında, en etkin verileriniz (çalışma veri kümesi) bellekte olur (innodb_buffer_pool_size) ve buradaki işlemleriniz çok hızlı olacaktır. 64GB bellek ile kesinlikle oraya çok sığabilirsiniz. Bellek her zaman DB sunucuları için iyi bir satın almadır.


11

Evet - InnoDB kullanıyorsanız ve yoğun okuma iş yükünüz varsa, büyük miktarda RAM'den kesinlikle yararlanabilirsiniz (veri setinizin mem'e uyacağı varsayımı vardır - sunucunuz cayır cayır cayır cayır yanan hızlı olacaktır).

Çalışma setine hafızada oturan 8-16 GB sunucularda MySQL'i InnoDB depolama ile kullanıyorum.


Burada da - 64 GB'lık kutularda InnoDB kullanıyoruz ve harika.
James


0

Bunun yaratılmasından dolayı çok büyük bir geçici tabloya bağlı olduğunu düşünüyorsanız, geçici tablolardan kaçınmak için sorguyu iyileştirmenin yollarını düşünmek isteyebilirsiniz.

Stackoverflow'a şema, sorgu, açıklama planı ve sorunun bazı detaylarını içeren bir yazı gönderebilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.