IT story

MySQL 최대 메모리 사용량

hot-time 2020. 8. 5. 07:46
반응형

MySQL 최대 메모리 사용량


Linux 서버에서 MySQL이 사용하는 메모리 양에 대한 상한을 설정하는 방법을 알고 싶습니다.

현재 MySQL은 요청 된 모든 새 쿼리에서 메모리를 계속 차지하므로 결국 메모리가 부족합니다. MySQL이 사용하는 양을 초과하지 않도록 제한하는 방법이 있습니까?


MySQL의 최대 메모리 사용량은 하드웨어, 설정 데이터베이스 자체 에 따라 다릅니다 .

하드웨어

하드웨어는 분명한 부분입니다. 더 화끈하게 놀아, 빠른 디스크 RAM FTW를 . 그러나 매월 또는 매주 뉴스 레터를 믿지 마십시오. MySQL은 선형 적으로 확장되지 않으며 Oracle 하드웨어에서도 확장되지 않습니다. 그것보다 조금 까다 롭습니다.

결론은 : 대한 추천 무엇을위한 엄지 손가락의 어떤 일반적인 규칙이없는 당신의 MySQL의 설치가. 그것은 모두 현재 사용량이나 예측에 달려 있습니다.

설정 및 데이터베이스

MySQL은 수많은 변수와 스위치를 제공하여 동작을 최적화합니다. 문제가 발생하면 실제로 앉아서 (f'ing) 설명서를 읽어야합니다.

데이터베이스의 경우 몇 가지 중요한 제약 조건이 있습니다.

  • 테이블 엔진 ( InnoDB,, MyISAM...)
  • 크기
  • 지수
  • 용법

stackoverflow에 대한 대부분의 MySQL 팁은 중요한 설정이라고하는 5-8에 대해 알려줍니다. 첫째, 모든 것이 중요하지는 않습니다. 예를 들어 InnoDB에 많은 리소스를 할당하고 InnoDB를 사용하지 않는 것은 리소스가 낭비되기 때문에 의미가 없습니다.

또는 많은 사람들이 max_connection변수를 제안합니다. 글쎄요, MySQL은 max_connections필요할 때 MySQL이 더 많은 리소스를 할당한다는 것을 알지 못합니다 . 보다 확실한 해결책은 DBAL에서 데이터베이스 연결을 닫거나 wait_timeout스레드를 해제 하기 위해 낮추는 것 입니다.

드리프트를 잡으면 정말 읽고 배울 것이 많이 있습니다.

엔진

테이블 엔진은 매우 중요한 결정이며, 많은 사람들이 초기에 잊어 버린 다음 갑자기 30GB 크기의 MyISAM테이블로 싸우면서 전체 응용 프로그램을 잠그고 차단합니다.

나는 MyISAM이 짜증 나지만, InnoDB거의 또는 거의 빨리 응답하도록 행 조정을 할 수 있으며 MyISAM행 잠금과 같은 것을 제공하는 UPDATE반면 MyISAM테이블에 기록 할 때 전체 테이블을 잠급니다.

자체 인프라에서 MySQL을 자유롭게 사용할 수 있다면 Facebook 및 Google과 같은 회사의 많은 기여 (빠른 알고 있음)를 포함하여 Percona 자체 드롭을 포함하기 때문에 percona 서버 를 확인하고 싶을 수도 있습니다 . 교체에있어 InnoDB,라고 XtraDB.

percona-server (및 -client) 설정에 대한 요점을 참조하십시오 (Ubuntu) : http://gist.github.com/637669

크기

데이터베이스 크기는 매우 중요합니다. 믿거 나 말거나, Intarwebs의 대부분의 사람들은 대규모의 대규모 MySQL 설정을 처리 한 적이 없지만 실제로는 존재합니다. 어떤 사람들은 트롤을 사용하여 "PostgreSQL !!! 111 사용"과 같은 것을 말하지만 지금은 무시하겠습니다.

결론은 크기에서 판단하여 하드웨어에 대한 결정을 내리는 것입니다. 1GB의 RAM에서 80GB 데이터베이스를 빠르게 실행할 수는 없습니다.

지수

그렇지 않습니다 : 더 많은 것, 메리 어. 필요한 인덱스 만 설정해야하고 사용량을로 확인해야 EXPLAIN합니다. 또한 MySQL EXPLAIN은 실제로 제한되어 있지만 시작입니다.

제안 된 구성

이것들 my-large.cnfmy-medium.cnf파일들에 대해-나는 그것들이 누구를 위해 쓰여 졌는지조차 모른다. 자신의 롤.

튜닝 프라이머

좋은 시작은 튜닝 입문서 입니다. 의 출력을 취합니다 (당신이 리눅스가 필요합니다 힌트)이 떠들썩한 파티 스크립트의 SHOW VARIABLESSHOW STATUS희망 유용한 추천으로 랩합니다. 서버가 얼마 동안 실행 된 경우,이를 기반으로하는 데이터가 있으므로 권장 사항이 더 좋습니다.

튜닝 입문서는 마법의 소스가 아닙니다. 변경을 제안하는 모든 변수를 계속 읽으십시오.

독서

나는 정말로 mysqlperformanceblog 를 추천하고 싶다 . 모든 종류의 MySQL 관련 팁을 제공하는 훌륭한 리소스입니다. 또한 MySQL뿐만 아니라 올바른 하드웨어에 대해 많이 알고 있거나 AWS 등을위한 설정을 권장합니다.이 사람들은 수년 간의 경험을 가지고 있습니다.

물론 다른 훌륭한 리소스는 planet-mysql 입니다.


우리는 다음 설정을 사용합니다.

etc/my.cnf
innodb_buffer_pool_size = 384M
key_buffer = 256M
query_cache_size = 1M
query_cache_limit = 128M
thread_cache_size = 8
max_connections = 400
innodb_lock_wait_timeout = 100

다음 사양을 가진 서버의 경우 :

Dell Server
CPU cores: Two
Processor(s): 1x Dual Xeon
Clock Speed: >= 2.33GHz
RAM: 2 GBytes
Disks: 1×250 GB SATA

데이터베이스 메모리 사용량은 복잡한 주제입니다. MySQL의 성능 블로그는 질문을 포함하는의 좋은 일을하고, 목록은 "예약"메모리에 상당히 실용적이지 왜 많은 이유를.

하드 제한을 실제로 적용하려면 그렇게 할 수 있지만 기본 제공 설정이 없으므로 OS 수준에서 수행해야합니다. 리눅스에서는 ulimit을 사용할 수 있지만 이것을 적용하려면 MySQL 시작 방법을 수정해야 할 것입니다.


The best solution is to tune your server down, so that a combination of the usual MySQL memory settings will result in generally lower memory usage by your MySQL installation. This will of course have a negative impact on the performance of your database, but some of the settings you can tweak in my.ini are:

key_buffer_size
query_cache_size
query_cache_limit
table_cache
max_connections
tmp_table_size
innodb_buffer_pool_size

I'd start there and see if you can get the results you want. There are many articles out there about adjusting MySQL memory settings.


Edit:

Note that some variable names have changed in the newer 5.1.x releases of MySQL.

For example:

table_cache

Is now:

table_open_cache

mysqld.exe was using 480 mb in RAM. I found that I added this parameter to my.ini

table_definition_cache = 400

that reduced memory usage from 400,000+ kb down to 105,000kb


in /etc/my.cnf:

[mysqld]
...

performance_schema = 0

table_cache = 0
table_definition_cache = 0
max-connect-errors = 10000

query_cache_size = 0
query_cache_limit = 0

...

Good work on server with 256MB Memory.

참고URL : https://stackoverflow.com/questions/1178736/mysql-maximum-memory-usage

반응형