Mysql max_connections değişkenini nasıl hesaplarsınız?


Yanıtlar:


27

Bunu ilgili bilgilerle birlikte bir cevap olarak göndereceğim. Temel formüller:

Kullanılabilir RAM = Genel Tamponlar + (İplik Tamponları x max_connections)

max_connections = (Kullanılabilir RAM - Küresel Tamponlar) / İplik Tamponları

Arabelleklerin listesini ve değerlerini almak için:

SHOW VARIABLES LIKE '%buffer%';

Arabelleklerin bir listesi ve Global mi, Thread mı oldukları:

Genel Tamponlar : key_buffer_size, innodb_buffer_pool_size, innodb_log_buffer_size, innodb_additional_mem_pool_size, net_buffer_size, query_cache_size

Konu Tamponları : sort_buffer_size, myisam_sort_buffer_size, read_buffer_size, join_buffer_size, read_rnd_buffer_size, thread_stack


1
KCD bu linki maksimum bellek hesaplayıcısı olarak kullandı: mysqlcalculator.com
Derek Downey

Derek, "Global buffers = tüm global buffers değişkenlerinin toplamı ve Thread Buffers = tüm thread buffers değişkenlerinin toplamı" mı demek istiyorsun?
Mat,

11

UYARI! Bu 2011'den itibaren MySQL 5.1.x kullanıyor. Kendi sorumluluğunuzdadır kullanın

---- orijinal noktası ----

İşte saklı yordam formunda başka bir alternatif formül:

DELIMITER //
CREATE PROCEDURE sproc_show_max_memory ( OUT max_memory DECIMAL(7,4))
BEGIN
SELECT ( @@key_buffer_size + @@query_cache_size + @@tmp_table_size + @@innodb_buffer_pool_size + @@innodb_additional_mem_pool_size + @@innodb_log_buffer_size + @@max_connections * ( @@read_buffer_size + @@read_rnd_buffer_size + @@sort_buffer_size + @@join_buffer_size + @@binlog_cache_size + @@thread_stack ) ) / 1073741824 AS MAX_MEMORY_GB INTO max_memory;
END//
DELIMITER ;
CALL sproc_show_max_memory(@show_max_memory);
SELECT @show_max_memory;

MySQL veritabanı> sürüm 5.1.x kullandığınızı ve ayrıcalıklı bir kullanıcı olduğunuzu farz ediyorum. Ancak istediğiniz sayıyı girerek maksimum bağlantılarla oynar ve sonuçları görürsünüz.


1
Ben sadece formülünü okudum. Oldukça kaygan !!! BTW +1 !!!
RolandoMySQLDBA

2
Muhtemelen 5.5 ve 5.6'daki tüm değişikliklerden dolayı bu formülü tekrar gözden geçirmenin zamanı geldi, ama yine de kullanışlı.
randomx


0

Sayıya bakıyorum, basit hesaplardan alıyorum: expected_number_of_requests_per_second * expected_average_request_processing_time * 2.

Daha sonra ayarlama yapmak için, her zaman geçmiş verilere sahip izleme sistemi kullanıyorum ve bir miktar zirve durumunda% 20 oranında ayırmaya çalışıyorum. Bazı bağlantı havuzlarını (bu genellikle iyi bir fikirdir) kullanırken biraz daha karmaşıktır - daha sonra havuzdaki kullanılmış bağlantıların sayısını izlemeniz gerekir.

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.