• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 1. 최적화 개요
    2. SQL문 최적화
    3. 최적화 및 인덱스
    4. 데이터베이스 구조의 최적화
    5. InnoDB 테이블의 최적화
    6. MyISAM 테이블의 최적화
    7. MEMORY 테이블 최적화
    8. 쿼리 실행 계획의 이해
    9. 버퍼링과 캐시
    10. 잠금 작업의 최적화
    11. MySQL 서버의 최적화
    1. 시스템 요소 및 스타트 업 파라미터의 튜닝
    2. 서버 파라미터의 튜닝
    3. 디스크 I / O 최적화
    4. 메모리 사용 최적화
    1. MySQL의 메모리 사용 방법
    2. 대형 페이지 지원 활성화
    5. 네트워크 사용의 최적화
    6. 스레드 풀 플러그인
    12. 성능 측정
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

8.11.4.1 MySQL의 메모리 사용 방법

다음 목록은 mysqld 서버가 메모리를 사용하는 방법의 일부를 보여줍니다. 해당하는 경우 메모리 사용과 관련된 서버 변수의 이름도 보여줍니다.

  • 모든 스레드는 MyISAM 키 버퍼를 공유하고 그 크기는 key_buffer_size 변수에 의해 결정됩니다. 서버가 사용하는 다른 버퍼는 필요에 따라 할당됩니다. 섹션 8.11.2 "서버 파라미터의 튜닝」 을 참조하십시오.

  • 클라이언트 연결의 관리에 사용되는 각 스레드는 약간의 thread 고유의 영역을 사용합니다. 다음 목록에 이들과 그 크기를 제어하는​​ 변수를 나타냅니다.

    • 스택 (변수 thread_stack )

    • 연결 버퍼 (변수 net_buffer_length )

    • 결과 버퍼 (변수 net_buffer_length )

    연결 버퍼와 결과 버퍼는 각 net_buffer_length 바이트로 동일한 크기에서 시작되지만, 필요에 따라 max_allowed_packet 바이트까지 동적으로 확대됩니다. 결과 버퍼는 각 SQL 문 뒤에 net_buffer_length 바이트로 축소됩니다. 문이 실행되는 동안 현재 문 문자열의 복사도 할당됩니다.

  • 모든 스레드에서 동일한 기본 메모리를 공유합니다.

  • 스레드가 필요하지 않은 경우 그것에 할당 된 메모리가 해제되고 스레드가 스레드 캐시로 돌아 가지 않는 한, 시스템에 반환됩니다. 이 경우 메모리는 할당 된 상태로 유지됩니다.

  • myisam_use_mmap 시스템 변수를 1로 설정하여 모든 MyISAM 테이블에 대한 메모리 맵을 사용할 수 있습니다.

  • 테이블의 순차적 스캔을 실행하는 각 요청은 read buffer (변수 read_buffer_size )를 할당합니다.

  • 행을 임의의 순서로 읽을 경우 (예를 들어, 정렬에 이어), random-read buffer (변수 read_rnd_buffer_size )를 할당하여 디스크 검색을 피할 수 있습니다.

  • 모든 결합은 단일 경로에서 실행되는 대부분의 조인은 임시 테​​이블을 사용하지 않고 실행할 수 있습니다. 대부분의 임시 테​​이블은 메모리 기반의 해시 테이블입니다. 큰 줄 길이 (모든 컬럼 길이의 합으로 산출되는)을 가질 지 BLOB 컬럼을 포함한 임시 테이블은 디스크에 저장됩니다.

    내부 인 메모리 임시 테이블이 너무 커지면, MySQL은 테이블을 인 메모리에서 MyISAM 스토리지 엔진에 의해 처리되는 디스크 포맷으로 변경하여이를 자동으로 처리합니다. 섹션 8.4.4 "MySQL이 내부 임시 테이블을 사용하는 방법" 에 설명하도록 허용 된 임시 테이블의 크기를 늘릴 수 있습니다.

  • 정렬을 수행하는 대부분의 요청은 정렬 버퍼 및 결과 세트 크기에 따라 0-2 개의 임시 파일을 할당합니다. 섹션 B.5.4.4 "MySQL이 임시 파일을 저장할 위치" 를 참조하십시오.

  • 거의 모든 분석과 계산은 스레드 로컬 재사용 가능한 메모리 풀에서 실행됩니다. 작은 품목은 메모리 오버 헤드가 필요 없기 때문에 일반 느린 메모리 할당과 해제가 해결됩니다. 메모리는 예상치 못한 큰 문자열에만 할당됩니다.

  • 열리는 MyISAM 테이블마다 인덱스 파일이 1 회 열려 데이터 파일은 동시 실행 중의 thread마다 1 회 열린다. 동시 스레드마다 테이블 구조, 각 컬럼의 컬럼 구조 및 크기 3 * N 의 버퍼를 할당합니다 (여기서 N 은 최대 유키나가하고, BLOB 컬럼을 계산하지 않습니다). BLOB 컬럼은 5에서 8 바이트 + BLOB 데이터의 길이가 필요합니다. MyISAM 스토리지 엔진은 내부 사용을위한 1 개의 여분의 라인 버퍼를 유지합니다.

  • BLOB 컬럼이있는 테이블마다 큰 BLOB 값을 읽을 버퍼가 동적으로 확대됩니다. 테이블을 스캔하는 경우 최대 BLOB 치와 같은 크기의 버퍼가 할당됩니다.

  • 사용중인 모든 테이블 핸들러 구조가 캐쉬에 저장되며 FIFO로 관리됩니다. 초기 캐시 크기는 table_open_cache 시스템 변수의 값을 가져옵니다. 테이블이 동시에 2 개의 실행중인 스레드가 사용되는 경우, 캐시는 그 테이블의 두 항목이 포함됩니다. 섹션 8.4.3.1 "MySQL에서 테이블 열고 닫는 방법" 을 참조하십시오.

  • FLUSH TABLES 명령문 또는 mysqladmin flush-tables 명령은 사용하지 않는 모든 테이블을 한번에 닫고 현재 실행중인 스레드의 종료시 닫히도록 사용중인 모든 테이블을 표시합니다. 따라서 사실상 대부분의 사용중인 메모리가 해제됩니다. FLUSH TABLES 은 모든 테이블이 닫힐 때까지 돌아 오지 않습니다.

  • GRANT , CREATE USER , CREATE SERVER 및 INSTALL PLUGIN 명령문의 결과로 서버 정보를 메모리에 캐시합니다. 이 메모리는 해당 REVOKE , DROP USER , DROP SERVER 및 UNINSTALL PLUGIN 문에 의해 해제되지 않으므로 캐시를 발생시키는 문 다수의 인스턴스를 실행하는 서버에서는 메모리 사용량이 증가합니다. 이 캐시 된 메모리는 FLUSH PRIVILEGES 에서 해제 할 수 있습니다.

ps 및 기타 상태 프로그램은 mysqld가 많은 메모리를 사용하고 있는지보고 할 수 있습니다. 이것은 다양한 메모리 주소의 스레드 스택에 의해 발생 될 수 있습니다. 예를 들어, Solaris 버전의 ps는 스택 사이의 사용하지 않는 메모리를 사용하는 메모리로 간주됩니다. 이를 확인하려면 swap -s 에서 사용 가능한 스왑을 체크합니다. 일부 메모리 누수 탐지 도구 (상용 및 오픈 소스 모두)로 mysqld를 테스트하고 있기 때문에 메모리 누수는 없을 것입니다.

서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved