RAM의 중요성은 확립 된 사실이지만 MySQL의 CPU 사용과 관련하여 코어 및 멀티 스레딩의 중요성에 대한 자료는 훨씬 적습니다. 4cores에서 6cores vs 8cores에서 MySQL을 실행하는 것의 차이점에 대해 이야기하고 있습니다.
다른 스토리지 엔진이 CPU를 다르게 사용합니까?
RAM의 중요성은 확립 된 사실이지만 MySQL의 CPU 사용과 관련하여 코어 및 멀티 스레딩의 중요성에 대한 자료는 훨씬 적습니다. 4cores에서 6cores vs 8cores에서 MySQL을 실행하는 것의 차이점에 대해 이야기하고 있습니다.
다른 스토리지 엔진이 CPU를 다르게 사용합니까?
답변:
MySQL의 경우 두 가지 기본 범주에 속한다는 점을 제외하고 스토리지 엔진간에 비교는 없습니다.
나열된 스토리지 엔진의 경우 ACID를 준수하는 유일한 엔진은 InnoDB 및 NDB입니다. 왜이 importatnt가 언급됩니까? 두 가지 이유 :
MySQL 5.5의 InnoDB, InnoDB Plugin) 및 Percona Server의 XtraDB에는 여러 코어에 액세스하기 위해 설정할 수있는 옵션이 있습니다 (Percona Server는 더 오래 사용함). 실제로 Percona는 MySQL 소스 코드의 새로운 GA 릴리스마다 InnoDB의 성능 향상을 위해 약 30,000 줄의 코드를 삽입합니다. 오라클은 멀티 코어 운영을 위해 InnoDB 내에서 실행하기 위해 자체 싱크 탱크에서 자체 개선 사항을 포함했는지 확인할 수 있습니다 (MySQL 5.1.38부터).
행 / 페이지 잠금과 함께 데이터에 대해 MVCC 를 수행해야하므로 트랜잭션 성능을 계측, 측정 및 구성 할 수 있습니다.
여러 코어를 사용하는 방법에 대해 배운 것이 있다면 InnoDB에 의존하지 않고 InnoDB를 효과적으로 튜닝해야 한다는 것 입니다.
업데이트 2011-09-20 08:03 EDT
모든 코어로부터 혜택을받는 InnoDB와 관련하여, 우리는 일을 박해해야합니다. 코어는 데이터베이스 서버의 다른 문제 (OS, 디스크, 메모리, 응용 프로그램, 모니터링 등)에도 집중해야합니다. 예산이 적당하지 않은 사람들에게는 데이터베이스 서버가 NFS를 제공하고 Munin의 모니터링, JBoss, PHP에 대한 앱 지원을 제공하는 경향이 있습니다. MySQL, 특히 InnoDB에서 더 많은 코어를 사용 하려면 데이터베이스 서버를 MySQL 전용으로 사용해야하고 OS / 디스크 / 메모리는 MySQL 만 사용해야합니다 . 이러한 관점에서 InnoDB는 의심의 여지없이 더 많은 코어를 참여시킬 것 입니다.
InnoDB Plugin에 관해서는 MySQL의 일부에서 더 나은 InnoDB를 갖기위한 초기 계획을 보여주기 위해 언급되었다. 더 많은 핵심 활동을 소환하는 새로운 변수는 MySQL 5.1.38에서 분명해졌습니다.
예를 들어, innodb_read_io_threads 및 innodb_write_io_threads (MySQL 5.1.38 이후)는 읽기 및 쓰기에 지정된 수의 스레드를 할당합니다. 기본값은 4이고 최대 값은 기본 및 최대 설정이 너무 다른 것 64입니다 (4-64) 보여줍니다 당신이 그것을 구성으로 멀티 스레드 및 집중 핵심으로 이노입니다 !
Pernoa는 InnoDB로 더 많은 코어에 액세스하기 위해 MySQL 커뮤니티의 요구를 해결했습니다. 결과적으로 MySQL은 그에 따라 시작했습니다. Oracle (yuck)이 더 많은 핵심 활동을 위해 필요한 개선을했다는 것을 인정해야합니다.
코어를 사용 하는 스토리지 엔진에 대한 이야기는 초보자에게는 오해의 소지가 있습니다. 프로그램이 충분히 다중 스레드 인 경우 운영 체제는 가능한 한 많은 코어에서 프로그램을 예약합니다.
CPU 스케일링을 제한하는 특정 문제는 내부 잠금 코드 ( 뮤텍스 )에 경합이 있고 스레드가 동시에 실행되지 않는 경우입니다. 모든 스토리지 엔진에는 뮤텍스가 필요하지만, MyISAM에는 핫 엔진이 있습니다.
우리가 잠시 동안 뮤텍스 경합을 무시하고 주요 질문으로 돌아 가면 많은 코어를 갖는 것이 얼마나 중요합니까? -
사용자 대면 요청을 처리하는 워크로드를위한 많은 코어를 보유하고 있습니다. 값이 많으면 쿼리 시간 간의 차이를 줄일 수 있습니다. 이것을 12 개의 통로가 열려있는 것과 2 개의 통로가있는 수퍼 마켓에 줄 지어있는 것처럼 생각하십시오.
업데이트 : 수직 확장 성 (멀티 코어)이 중요한 이유에 대한 블로그 게시물 을 작성했습니다 .