컴퓨터/노트북/인터넷
IT 컴퓨터 기기를 좋아하는 사람들의 모임방
MySQL Memory
MySQL은 하나의 프로세스로 동작 합니다. 세션은 thread로 확장되고 시스템 자원을 할당 받습니다.
MySQL의 Memory 부분은Connection 수의 영향을 받는 부분이며 항상 주의를 요해야 합니다.
● Memory Management
MySQL 레퍼런스에 나온 식 :
innodb_buffer_pool_size + key_buffer_size + max_connections*(sort_buffer_size+read_buffer_size+binlog_cache_size)
레퍼런스에 달린 코멘트 (by David Tonhofer)
total memory =
innodb_buffer_pool_size +
key_buffer_size +
innodb_additional_mem_pool_size +
innodb_log_buffer_size +
max_connections * (sort_buffer_size + read_buffer_size + binlog_cache_size + thread_stack)
항목 (64 Bit 기준) |
Default |
Range |
Scope |
Dynamic |
innodb_buffer_pool_size |
134217728 |
10전체 메모리의 70~80%가 적당합니다. G -> 12G , 32G -> 26G 정도를 설정 합니다. |
Global |
No |
key_buffer_size |
8388608 |
8-4294967295 |
Global |
Yes |
max_connections |
151 |
1-100000 |
Global |
Yes |
sort_buffer_size |
2097144 |
18446744073709547520 |
Global, Session |
Yes |
read_buffer_size |
131072 |
8200-2147479552 |
Global, Session |
Yes |
binlog_cache_size |
32768 |
4096-18446744073709547520 |
Global |
Yes |
innodb_additional_mem_pool_size |
8388608 |
2097152-4294967295 |
Global |
No |
innodb_log_buffer_size |
8388608 |
262144-4294967295 |
Global |
No |
thread_stack |
262144 |
131072-18446744073709547520 |
Global |
No |
innodb_buffer_pool_size
: InnoDB 가 data 와 index 를 캐싱하기 위해 사용하는 공간 입니다. default 값은 128M 입니다. 이 공간을 크게 잡을수록 디스크로의 I/O 는 감소됩니다. 데이터베이스용 서버라면 이 공간을 Physical Memory Size 의 80% 까지 잡기도 합니다.
다음 상황에 대해 크기를 줄이는 것을 고려해야 합니다.
1)Physical Memory 부족으로 OS 상에서 Paging 이 발생할 때
2)InnoDB 는 buffer 와 control structures 를 위해 일부 공간을 남겨둡니다. 그렇기 때문에 정의된 크기보다 10% 정도의 공간이 추가적으로 필요로 합니다.
3)buffer pool 을 초기화하는 시간은 이 파라미터의 크기에 비례 합니다. 이를테면 10GB 의 경우 6초 정도가 소요 됩니다.
key_buffer_size
: MyISAM 이 Index 를 캐싱하는데 사용하는 영역으로 key cache 로도 알려져 있습니다. 통상 Physical Memory 의 25% 정도는 허용범주로 볼 수 있지만 이 영역을 지나치게 크게 잡는 경우는 페이징이 발생하고 시스템이 매우 느려질 수 있습니다. 데이터 영역의 캐싱은 OS 의 SYSTEM CACHING 을 이용하기 때문입니다. 또한 다른 Storage Engine 이 사용할 영역도 고려해야 합니다.
max_connections
: mysql 에 접속할 있는 세션수를 의미 합니다. 해당 파라미터의 값을 변경해야 할 때는 시스템의 메모리 사용량을 고려해야 합니다.
sort_buffer_size
: 해당 Variable 은 특정 Storage 에 정의된 값이 아니어서 일반적으로 사용 가능합니다. (MyISAM, InnoDB 든 똑같은 영향을 받습니다.)
특징으로는 이 sort 공간을 사용하는 경우 일량에 상관없이 전체 공간을 할당받아 사용한다는 것 입니다. 그렇기 때문에 특정 쿼리를 위해 global 하게 변경하는 것은 시스템 성능의 저해를 초래할 수 있으며 굳이 변경을 한다면 scope 를 session 으로 특정짓고 진행하는 것이 바람직 합니다.
read_buffer_size
: 각각의 시퀀셜 스캔을 수행하는 쓰레드는 스캔하는 테이블에 대해 설정된 크기(bytes) 만큼의 버퍼를 할당 받습니다. 해당 값은 4KB 의 배수값으로 설정되어야 하며 다른 값이 설정된 경우 내림으로 배수셋팅이 됩니다.
binlog_cache_size
: 트랜잭션 중 바이너리 로그에 대해 발생한 변경사항을 보유하기 위한 캐시 사이즈를 할당 합니다. 이 캐시는 서버가 트랜잭션을 지원하는 스토리지 서버를 사용하고 ( ex : InnoDB ) binary log 를 enable 한 상태라면 각 Client 에 대해 할당 됩니다.
innodb_log_buffer_size
: InnoDB 가 log files 를 disk 에 쓰기위한 buffer size 입니다. default 는 8M 이다. 큰 크기의 log buffer 는 large transactions 이 commit 되기 전에 log 를 disk 로 내려쓰는 것을 피할 수 있습니다.
thread_stack
: 각 쓰레드에 대한 스택사이즈를 정의 합니다. default 값은 256KB (64-bit system) 이며 통상적인 경우 충분 합니다. 만약 thread stack size 가 지나치게 작으면 그것은 서버가 핸들할 수 있는 복잡한 SQL 구문의 사용에 제약을 가하게 됩니다. (stored procedures 의 recursion depth, 기타 memory-consuming actions 들도 영향 받습니다. )
● 튜닝
1) MySQL이 사용 가능한 최대 메모리를 계산 합니다.
2) 정렬 버퍼나 임시테이블 등의 개별적인 연결에 필요한 메모리 양을 계산 합니다.
3) 운영체제가 필요한 메모리양을 계산 합니다. ( 주기적인 배치 작업 및 다른 프로그램이 실행되는데 필요한 메모리 양 고려)
4) 나머지 메모리를 InnoDB 버퍼 풀과 같은 MySQL 캐시로 사용 합니다.
참고 사항
: MyISAM 을 사용하지 않는다면 innodb_additional_mem_pool_size은 기본값인 8M으로 충분 합니다.
InnoDB를 사용하지 않는다면 buffer size 를 OS 가 data 캐싱할 것을 고려하여 정해야 합니다. 이 경우 최초 MySQL 이 사용할 최대 메모리를 70 % 로 잡았지만 더 낮춰야 할 수 있습니다.
● Connection Memory 사용량 조회
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
SHOW VARIABLES LIKE 'innodb_additional_mem_pool_size';
SHOW VARIABLES LIKE 'innodb_log_buffer_size';
SHOW VARIABLES LIKE 'thread_stack';
● Connection 별 메모리 사용률 확인
SET @kilo_bytes = 1024;
SET @mega_bytes = @kilo_bytes * 1024;
SET @giga_bytes = @mega_bytes * 1024;
SET @innodb_buffer_pool_size = 2 * @giga_bytes;
SET @innodb_additional_mem_pool_size = 16 * @mega_bytes;
SET @innodb_log_buffer_size = 8 * @mega_bytes;
SET @thread_stack = 192 * @kilo_bytes;
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
) ) / @giga_bytes AS MAX_MEMORY_GB;
실제메모리사용량 (Actual Used Physical Memory) Mem: total -(free + buffers + cached) buffers/cache: used
실제메모리 사용률 ( total - free - buffers - cached) / total (total - buffer/cashe: free) /total
컴퓨터/노트북/인터넷
IT 컴퓨터 기기를 좋아하는 사람들의 모임방
-
구글 최신 뉴스
날짜2024.12.12 카테고리뉴스 읽음1386 -
아 진짜 요새 SKT 해킹 뭐시기 때문에 신경 쓰여 죽겠어 ㅠㅠ
날짜2025.05.20 카테고리일반 읽음237 -
사랑LOVE 포인트 만렙! 도전
날짜2025.03.19 카테고리 읽음4678 -
🚨(뉴비필독) 전체공지 & 포인트안내
날짜2024.11.04 카테고리 읽음25851 -
URL만 붙여넣으면 끝! 임베드 기능
날짜2025.01.21 카테고리 읽음20432 -
아 진짜 요새 SKT 해킹 뭐시기 때문에 신경 쓰여 죽겠어 ㅠㅠ
날짜2025.05.20 카테고리일반 조회수237 -
저렴한 중국산 외장 SSD의 실체
날짜2025.05.17 카테고리일반 조회수515 -
인텔 애로우레이크의 CPU 내부 다이 모습
날짜2025.05.10 카테고리일반 조회수600 -
스카이프, 오늘 서비스 종료
날짜2025.05.10 카테고리일반 조회수602 -
SKT "보상 시 고객도 입증책임"
날짜2025.05.10 카테고리일반 조회수630 -
KISA, 신규 악성코드 위협 공지...SKT 내부 서버에서 ‘BPF도어’ 악성코드 변종 8종 추가 발견
날짜2025.05.10 카테고리정보 조회수577 -
“SK하이닉스 내부자에 뚫렸다” 中이직 앞두고 1만여건 기술 유출
날짜2025.05.10 카테고리일반 조회수572 -
기가바이트, 12년만에 메인보드에 새로운 기능을 추가
날짜2025.05.10 카테고리일반 조회수589 -
SKT “위약금 면제 시 수백만명 해지… 분위기 휩쓸려 시장 대혼란”
날짜2025.05.10 카테고리일반 조회수594 -
CUDA 툴킷, 맥스웰, 파스칼, 볼타 지원 중단
날짜2025.05.10 카테고리일반 조회수596 -
그래픽카드를 활용한 암호 해독 벤치마크
날짜2025.05.10 카테고리일반 조회수598 -
애즈락 X870 스틸 레전드 메인보드에서 라이젠 9 9950X CPU가 사망
날짜2025.05.10 카테고리일반 조회수584 -
코어 울트라 200 메인보드, PCIe 5.0 M.2 성능 제한이 있음
날짜2025.05.10 카테고리일반 조회수562 -
시게이트, 2030년까지 100TB 하드디스크 출시
날짜2025.05.10 카테고리일반 조회수582 -
MS가 인텔 18A 공정 계약을 체결?
날짜2025.05.10 카테고리정보 조회수596 -
블루투스 6.1 발표. 전력 효율과 보안 향상
날짜2025.05.10 카테고리정보 조회수615 -
중국 Hygon, 128코어 512스레드의 서버 프로세서 로드맵 공개
날짜2025.05.10 카테고리정보 조회수577 -
인텔, 컴퓨텍스에서 아크 프로 B60 24GB를 발표?
날짜2025.05.10 카테고리정보 조회수617 -
지포스 RTX 5060의 리뷰용 드라이버가 없음
날짜2025.05.10 카테고리일반 조회수624 -
젠슨황이 사인한 리바 TNT 엔지니어링 프로토타입 키트, 도시락 상자
날짜2025.05.10 카테고리일반 조회수565 -
SSD랑 HDD 가격 요즘 진짜 헬이다… 업체들 때문에 미쳐버릴 듯
날짜2025.04.18 카테고리일반 조회수4657 -
컴퓨터 메인보드용 ddr6 메모리는 언제나올지 찾아봤는데
날짜2025.04.08 카테고리일반 조회수594 -
갤럭시탭 S10 FE 4월 3일 출시했습니다. 혜택 나쁘지 않네요
날짜2025.04.05 카테고리일반 조회수842 -
절대 공개하지 않는 메인보드 AS센터의 전설의 기술
날짜2025.03.30 카테고리수리/AS 조회수926 -
메인보드 수리방법 가감없이 공유합니다! #shorts
날짜2025.03.30 카테고리수리/AS 조회수864 -
라이카와 협업한 샤오미 15 울트라 실버 크롬 언박싱
날짜2025.03.29 카테고리일반 조회수971 -
어도비 비정품 알림 Adobe 앱 라이선스 관련 알림창 없애기
날짜2025.03.28 카테고리일반 조회수616 -
윈도우 12, 과연 등장할까? (예상 및 루머 정리)
날짜2025.03.21 카테고리일반 조회수899 -
메인보드중에 고장률이 가장 낮은 회사
날짜2025.03.19 카테고리일반 조회수682 -
벽 콘센트 꼽는거 구멍 위치가 정해져있었네
날짜2025.03.14 카테고리일반 조회수1440