18.3.5.2 MySQL Cluster 상호 연결 및 성능
ndbd 프로세스는 MySQL Cluster의 데이터에 액세스하는 데 사용하는 몇 가지 간단한 구조입니다. 우리는 매우 간단한 벤치 마크를 작성하고 각 성능과 다양한 상호 연결이 성능에 미치는 영향을 확인했습니다.
4 개의 액세스 방법이 있습니다.
기본 키 액세스 이것은 기본 키를 통해 레코드에 액세스합니다. 가장 간단한 경우는 한 번에 하나의 레코드 만에 액세스합니다. 이는 다수의 TCP / IP 메시지를 설정하기위한 비용 전체와 컨텍스트 스위치를위한 많은 비용이이 단일 요구에 의해 발생합니다. 하나의 배치에서 여러 기본 키 액세스를 전송하는 경우에는 필요한 TCP / IP 메시지 및 컨텍스트 스위치의 설정 비용이 액세스에 의해 공유됩니다. TCP / IP 메시지의 대상이 다를 경우 추가 TCP / IP 메시지를 설정해야합니다.
고유 키 액세스 고유 키 액세스는 기본 키 액세스와 거의 동일하지만, 고유 키 액세스는 인덱스 테이블의 읽기로 실행되고, 그 후에 테이블에 대한 기본 키 액세스가 실행됩니다. 그러나 MySQL Server에서 하나의 요청 만 전송됩니다 인덱스 테이블의 읽기는 ndbd에 의해 처리됩니다. 이러한 요구도 일괄 처리의 이점을 얻을 수 있습니다.
전체 테이블을 스캔 테이블에 조회를위한 인덱스가 존재하지 않는 경우는 풀 테이블 스캔이 실행됩니다. 이것은 ndbd 프로세스에 하나의 요청으로 전송됩니다. 그 후,이 프로세스는 테이블 스캔을 클러스터 모든 ndbd 프로세스에서 실행되는 일련의 병렬 스캔으로 분할합니다. MySQL Cluster의 향후 버전에서는 SQL 노드가이 검사의 일부를 필터링 할 수 있습니다.
정렬 된 인덱스를 사용하는 범위 스캔 정렬 된 인덱스를 사용하면 전체 테이블을 스캔과 같은 방법으로 검색이 실행되지만, MySQL 서버 (SQL 노드)에서 전송 된 쿼리의 사용 범위의 레코드 만 스캔됩니다. 바인딩 된 인덱스 특성에 파티션 키의 모든 속성이 포함 된 경우 모든 파티션이 병렬로 스캔됩니다.
간단한 배치 된 기본 키 및 고유 키 액세스 테스트에서 MySQL이 내부에서 개발 한 벤치 마크를 실시한 결과, 통신의 성능이 문제가되지 않는 드문 경우를 제외하고 SCI 소켓을 사용할 경우 성능이 TCP / IP 에 비해 약 100 % 증가하는 것을 알 수있었습니다. 이것은 검색 필터가 처리 시간의 대부분을 차지하는 경우 또는 기본 키 액세스 매우 큰 배치가 실행 된 경우에 발생할 수 있습니다. 그 경우는 ndbd 프로세스의 CPU 처리 오버 헤드의 꽤 큰 부분을 차지하고 있습니다.
SCI 소켓 대신 SCI 트랜스 포터를 사용하는 것은 ndbd 프로세스 간의 통신에서만 장점이 있습니다. 또한 SCI 트랜스 포터를 사용하면 ndbd 프로세스가 절전 모드로 전환되지 않기 때문에 SCI 트랜스 포터의 사용에 장점이있는 것은 CPU를이 프로세스 전용으로 사용할 수 경우만입니다. ndbd 프로세스가 장기간 실행 (Linux 2.6에서는 프로세스를 CPU에 고정하는 것으로 실현 가능합니다)에 의해 우선 순위를 잃지 않는 방법으로이 프로세스의 우선 순위를 설정하는 것도 중요합니다. 이러한 구성이 가능한 경우 ndbd 프로세스의 성능은 SCI 소켓을 사용하는 경우에 비해 10-70 % 향상됩니다. (업데이트 실행 (또는 병렬 스캔 작업시)는이 수치가 더 커집니다.)
이외에도 컴퓨터 클러스터에 최적화 된 소켓 구현이 일부 존재합니다 (Myrinet 기가비트 Ethernet, Infiniband, VIA 인터페이스 등). 그러나 현재 MySQL Cluster 테스트에 사용 된 것은 SCI 소켓뿐입니다. 일반적인 TCP / IP를 사용하여 SCI 소켓을 MySQL Cluster 용으로 구성하는 방법은 섹션 18.3.5.1 "SCI 소켓을 사용하는 MySQL Cluster 구성" 을 참조하십시오.