MySQL의 메모리 사용량을 어떻게 최적화합니까?


9

내 설정 ()

다음 사양의 Amazon High CPU Extra Large EC2 인스턴스에서 Linux를 실행하고 있습니다.

  • 7GB의 메모리
  • EC2 컴퓨팅 장치 20 개 (각각 2.5 EC2 컴퓨팅 장치를 갖춘 8 개의 가상 코어)
  • 1690GB의 로컬 인스턴스 스토리지
  • 64 비트 플랫폼

MyISAM 스토리지 엔진에서 실행되는 두 개의 큰 MySQL 데이터베이스가 있습니다. 하나는 2GB이고 다른 하나는 500MB입니다. MySQL이 쿼리 속도를 극대화하는 데 필요한만큼 많은 RAM을 사용하고 있는지 확인하고 싶습니다. 내가 거기 MySQL의 메모리 설정 옵션의 무리처럼 알고 key_buffer_size하고 MyISAM_sort_buffer_size,있지만, 나는이 최적화에 익숙 해요.

질문

  1. Linux 시스템에서 MySQL이 현재 사용중인 메모리를 어떻게 확인합니까?
  2. MySQL 메모리 사용량을 어떻게 최대화 / 최적화합니까?
  3. 쿼리와 스키마가 최적화되었다고 가정하면 다른 변경 사항을 고려해야합니까?

당신은 htop 프로그램으로 확인할 수 있습니다.
neworld

메모리 사용을 최대화해도 전체 데이터베이스가 메모리에 포함되지는 않습니다. RAM 기반 파일 시스템이 있어야합니다.

4
RAM 기반 파일 시스템이 안전하지 않습니다. 서버 충돌이 발생하면 모든 데이터가 손실됩니다
neworld

답변:


7

이것은 어려운 주제입니다. 여기에 답할 수 없습니다, 이것에 관한 전체 이 쓰여졌습니다. innodb_buffer_pool_size를 충분히 크게 만드는 것이 좋습니다. myisam 테이블을 사용하는 경우 key_buffer_size를 확인하십시오. 또한 table_cache 및 max_connections도 고려해야합니다.

여기 당신을 도울 수있는 것이 있습니다 :

http://www.mysqlperformanceblog.com/2006/09/29/what-to-tune-in-mysql-server-after-installation/ http://www.mysqlperformanceblog.com/2007/11/01/innodb- performance-optimization-basics / http://www.mysqlperformanceblog.com/2007/11/03/choosing-innodb_buffer_pool_size/

편집하다:

@ drew010이 말했듯이 DB가 사용하는 종류를 고려하는 것이 중요합니다. 대량 읽기 DB에 대한 조정은 대량 쓰기와는 매우 다릅니다. 또한 다른 전략을 고려할 수도 있습니다. Memcached, nosql 데이터베이스 등


2
동의하면, 그들은 상대적으로 말해서 꽤 작은 데이터베이스입니다. 많은 데이터베이스 읽기 액세스가 필요한 경우, 응용 프로그램이 데이터베이스의 값을 저장하여 데이터베이스에 대한 적중을 줄이기 위해 사용할 수있는 memcached와 같은 일종의 캐싱 시스템을 고려할 수 있습니다. 대부분 삽입 작업을 수행하는 경우 디스크가 매우 중요한 요소가됩니다. 어느 정도 질문은 사용 사례에 따라 다릅니다. 데이터가 많이 변하지 않으면 mysql 쿼리 캐시가 빠른 쿼리로 많은 도움이 될 것입니다. 또한 색인 / 기본 키가 양호한 지 확인하십시오.
drew010

+1 당신은 옳은 형제입니다. 나는 그가 기본 교단을 요구하고 있다고 생각했지만 DB와 다른 것들의 사용을 고려해야합니다. 다시 말하지만 여기서는 논의 할 수 없습니다.
santiago.basulto

1

MySQL이 필요한 모든 메모리를 사용하는지 확인하려면 InnoDB로 전환해야합니다. MySQL FULLTEXT검색 기능 을 사용하지 않으면 심각한 문제가 없습니다.

MyISAM의 경우 내부 MySQL 키 버퍼 및 시스템 캐시를 포함하여 많은 캐시가 사용됩니다. 최상의 성능을 원한다면 캐시 중 하나를위한 공간을 남겨 두어야하지만, 특히 데이터베이스가 쓰기가 많은 경우에는 MyISAM을 권장하지 않습니다. MyISAM은 전체 테이블을 쓰기시 잠그는 반면 InnoDB는 영향을받는 행만 잠급니다.

모든 데이터베이스를 메모리에 저장하더라도 인덱스가 충분하지 않거나 다른 이유로 인해 쿼리 실행 속도가 느려질 수 있습니다.

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