it-swarm.dev

Jak obliczyć zmienną mysql max_connections?

Jak obliczyć mysql max_connections?

Co bierzesz pod uwagę?

39
Gabriel Solomon

Zamierzam opublikować to jako odpowiedź, wraz z odpowiednimi informacjami. Podstawowe formuły to:

Dostępne RAM = Bufory globalne + (Bufory wątków x maks. Połączenia)

max_connections = (Dostępne RAM - Bufory globalne)/Bufory wątków

Aby uzyskać listę buforów i ich wartości:

SHOW VARIABLES LIKE '%buffer%';

Oto lista buforów i czy są one globalne czy wątkowe:

bufory globalne: rozmiar_buforu_klucza, rozmiar_w_bufora_wewnętrznego, rozmiar_w_bufera_wymiaru, rozmiar_wewnętrznego_bufera_wymiaru, rozmiar_wewnętrznego_bufera, rozmiar_pamięci_podstawowej

Bufory wątków: sort_buffer_size, myisam_sort_buffer_size, read_buffer_size, join_buffer_size, read_rnd_buffer_size, thread_stack

28
Derek Downey

OSTRZEŻENIE! To jest od 2011 roku przy użyciu MySQL 5.1.x. Używaj na własne ryzyko

---- ORYGINAŁ POST ----

Oto kolejna alternatywna formuła w postaci procedury składowanej:

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;

Zakładam, że używasz bazy danych MySQL> wersja 5.1.x i jesteś uprzywilejowanym użytkownikiem. Ale grasz z maksymalną liczbą połączeń, wstawiając dowolną liczbę i widząc wyniki.

11
randomx

Wpatruję się w liczbę, którą otrzymuję z prostej kalkulacji: oczekiwany_numer_w_wymagań_na_początek * oczekiwany_średnia_wymagana_procesa_czasu przetwarzania * 2.

Do późniejszego strojenia zawsze używam systemu monitorowania z danymi historycznymi i staram się mieć 20% zarezerwowane na wypadek pewnego szczytu. Jest to nieco bardziej skomplikowane, gdy używasz puli połączeń (co zwykle jest dobrym pomysłem) - wtedy musisz monitorować liczbę używanych połączeń w puli.

0
rvs