mysql max_connections 변수를 어떻게 계산합니까?


답변:


27

관련 정보와 함께 답변으로 게시하려고합니다. 기본 공식은 다음과 같습니다.

사용 가능한 RAM = 글로벌 버퍼 + (스레드 버퍼 x max_connections)

max_connections = (사용 가능한 RAM-글로벌 버퍼) / 스레드 버퍼

버퍼 및 해당 값 목록을 가져 오려면 다음을 수행하십시오.

SHOW VARIABLES LIKE '%buffer%';

다음은 버퍼 목록과 글로벌 또는 스레드 여부입니다.

글로벌 버퍼 : key_buffer_size, innodb_buffer_pool_size, innodb_log_buffer_size, innodb_additional_mem_pool_size, net_buffer_size, query_cache_size

스레드 버퍼 : sort_buffer_size, myisam_sort_buffer_size, read_buffer_size, join_buffer_size, read_rnd_buffer_size, thread_stack


1
: KCD는 최대 메모리 계산기 등이 링크를 제공 mysqlcalculator.com
데릭 다우니

데릭, "글로벌 버퍼 = 모든 글로벌 버퍼 변수의 합과 스레드 버퍼 = 모든 스레드 버퍼 변수의 합"을 의미합니까?
Mat

11

경고! 2011 년부터 MySQL 5.1.x를 사용합니다. 자신의 책임하에 사용하십시오

---- 원래 포스트 ----

저장 프로 시저 형식의 다른 대체 수식은 다음과 같습니다.

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 데이터베이스> 버전 5.1.x를 사용하고 있으며 권한이있는 사용자라고 가정합니다. 그러나 원하는 수를 삽입하여 최대 연결을 가지고 놀고 결과를 볼 수 있습니다.


1
방금 당신의 공식을 읽었습니다. 꽤 매끄러운! BTW +1 !!!
RolandoMySQLDBA

2
5.5와 5.6의 모든 변경 사항을 감안할 때이 수식을 다시 방문해야 할 때가 있지만 여전히 유용합니다.
randomx


0

간단한 계산에서 얻은 숫자로 쳐다보고 있습니다 : expect_number_of_requests_per_second * expected_average_request_processing_time * 2.

나중에 조정하기 위해 항상 히스토리 데이터가있는 모니터링 시스템을 사용하고 있으며 피크가있을 때 20 %를 예약하려고합니다. 연결 풀링 (일반적으로 좋은 생각)을 사용하는 경우에는 조금 더 복잡합니다. 그런 다음 풀에서 사용 된 연결 수를 모니터링해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.