mysql은 다중 CPU를 사용하지 않습니다

mysql은 다중 CPU를 사용하지 않습니다

우리 MySQL 서버는 최근에 많은 CPU를 사용하고 있으며(100%에 여러 번 도달하고 한동안 유지됨) CPU 로드가 모두 하나의 CPU 중 하나의 코어에 있다는 것을 알았습니다. 나는 그것을 내 서버의 4개 모두에 전파하기를 바랐습니다.

더 많은 RAM과 더 적은 CPU를 사용하도록 MySQL 설정을 조정했지만 여전히 CPU 사용량이 매우 높은 경우가 있습니다.

주제에 관한 모든 것이 thread_concurrency를 참조하는 것 같습니다(내가 읽은 것은 솔라리스 전용 설정입니다). 리눅스에서는 무엇을 할 수 있나요?

감사해요.

답변1

당신 말이 맞습니다. thread_concurrency는 Solaris에만 해당되며 MySQL 5.6 이상에서는 더 이상 사용되지 않습니다. MyISAM에서는 멀티 코어/CPU를 사용할 수 없다고 생각합니다. 하드웨어를 최대한 활용하려면 InnoDB를 사용하세요.

이것상황을 더 잘 이해하는 데 도움이 될 수 있습니다.

답변2

이 변수의 올바른 값은 환경 및 워크로드에 따라 다릅니다. 애플리케이션에 적합한 값을 결정하려면 다양한 값을 사용해 보아야 합니다. 권장 값은 CPU 수에 디스크 수를 더한 값의 2배입니다.

이 변수의 범위는 0~1000이다. 20 이상의 값은 MySQL 5.0.19 이전에는 무한 동시성으로 해석된다. 5.0.19부터는 값을 0으로 설정하여 스레드 동시성 검사를 비활성화할 수 있습니다. 스레드 동시성 검사를 비활성화하면 InnoDB가 필요한 만큼의 스레드를 생성할 수 있습니다.

http://dev.mysql.com/doc/refman/5.0/en/innodb-parameters.html#sysvar_innodb_thread_concurrency

답변3

간단하게 유지하기 위해 MySQL에서 실행되는 각 쿼리는 InnoDB 엔진의 멀티 코어 여부에 관계없이 1개의 CPU 코어만 사용합니다.

MySQL 내부의 모든 멀티 코어 최적화는 동시에 실행되고 CPU 및 데이터에 대한 부담이 큰 여러 쿼리가 있을 때 도움이 되지만, 완료하는 데 몇 분/시간이 걸리는 대규모 쿼리가 있는 경우 항상 1개의 CPU 코어만 사용합니다. (그리고 꼭 그런 쿼리가 있어야 한다면 CPU 속도는 더 빠르고 코어 수는 더 적은 서버를 구입해야 합니다.)

관련 정보