8.11.3 디스크 I / O 최적화
디스크 검색 성능의 주요 병목 현상입니다. 이 문제는 데이터의 양이 효과적인 캐시가 실행 불능이 될 정도로 큰지기 시작하면 분명합니다. 다소 무작위로 데이터에 액세스하는 큰 데이터베이스의 경우, 읽기에 최소 1 회 쓰기에는 두 디스크 시크가 확실히 필요합니다. 이 문제를 최소화하려면 적은 탐색 횟수로 디스크를 사용합니다.
다양한 디스크에 파일을 심볼릭 링크하거나 디스크 스트라이핑을 행하고 사용 가능한 디스크 스핀들 수를 늘립니다 (및 그것을 통해 탐색 오버 헤드를 줄일 수 있습니다).
심볼릭 링크 사용
이것은
MyISAM
테이블의 경우, 데이터 디렉토리의 정상적인 위치에서 다른 디스크에 인덱스 파일과 데이터 파일의 심볼릭 링크를 생성하면 (스트라이핑되는 경우도있다)을 의미합니다. 디스크가 다른 목적으로도 사용되지 않은 것으로,이를 통해 검색 및 읽기 시간이 모두 개선됩니다. “Optimizing InnoDB Disk I/O” 을 참조하십시오.스트라이핑
스트라이핑은 여러 디스크가 첫 번째 블록을 첫 번째 디스크에 두 번째 블록을 두 번째 디스크에
N
번째 블록 (
) 번째 디스크와 같이 배치하는 것이 의미합니다. 즉, 일반적으로 데이터 크기가 스트라이프 크기보다 작은 (또는 완전히 일치하는) 경우 성능이 크게 향상됩니다. 스트라이프는 운영 체제와 스트라이프 크기에 크게 의존하기 때문에 다양한 스트라이프 크기 어플리케이션 벤치 마크를 수행하십시오. 섹션 8.12.3 "자체 벤치 마크의 사용" 을 참조하십시오.N
MODnumber_of_disks
스트라이프 속도의 차이는 매개 변수에 크게 의존합니다. 스트라이핑 파라미터의 설정 방법과 디스크 수에 따라 현격 한 차이의 차이가 측정 될 수 있습니다. 랜덤 액세스에 대한 최적화 또는 순차 액세스에 대한 최적화를 선택해야합니다.
신뢰성을 위해 RAID 1 + 0 (스트라이핑 및 미러링)을 사용하고자하는 경우가 있습니다 만,이 경우
N
개의 드라이브의 데이터를 유지하기 위해 2 ×N
개의 드라이브가 필요합니다. 이것은 따라서 자금이있는 경우에 최적의 옵션이 될 수 있습니다. 그러나 그것을 효율적으로 처리하기 위해 어떤 볼륨 관리 소프트웨어에 투자 할 필요가있을 수도 있습니다.적절한 옵션은 특정 유형의 데이터가 얼마나 중요한지에 따라 RAID 레벨을 바꿀 것입니다. 예를 들어, 재생성이 가능한 약간 중요한 데이터는 RAID 0 디스크에 저장되지만 호스트 및 로그 등의 정말 중요한 데이터는 RAID 0 + 1 또는 RAID
N
디스크에 저장합니다. RAIDN
패리티 비트의 업데이트에 필요한 시간에 대한 많은 기록이있는 경우에 문제가 될 수 있습니다.Linux는
hdparm
을 사용하여 디스크의 인터페이스를 구성하여 성능을 크게 향상시킬 수 있습니다. (부하시 최대 100 %도 드물지 않습니다.) 다음hdparm
옵션은 MySQL 및 아마 다른 많은 응용 프로그램에 매우 적합해야합니다.hdparm -m 16 -d 1
이 명령을 사용했을 때의 성능과 안정성은 하드웨어에 의존하기 때문에
hdparm
의 사용 후 시스템을 철저하게 테스트하는 것이 좋습니다. 자세한 내용은hdparm
매뉴얼 페이지를 참조하십시오.hdparm
을 적절하게 사용하지 않으면 파일 시스템 손상이 발생할 수 있기 때문에 실험하기 전에 모든 것을 백업하십시오.데이터베이스가 사용하는 파일 시스템의 매개 변수를 설정할 수 있습니다.
파일에 마지막으로 액세스 된시기를 알 필요가 없다 (실제로 데이터베이스 서버에서 도움이되지 않는다) 경우
-o noatime
옵션을 사용하여 파일 시스템을 마운트 할 수 있습니다. 그것은 파일 시스템의 i 노드의 마지막 액세스 시간에 업데이트를 생략하기 위해 일부 디스크 검색이 불가피합니다.많은 운영 체제에서
-o async
옵션을 사용하여 파일 시스템을 마운트하여 파일 시스템이 비동기 적으로 업데이트되도록 설정할 수 있습니다. 컴퓨터가 비교적 안정되어 있다면 이는 그만큼 신뢰성을 희생하지 않고도 성능을 향상시킬 것입니다. (Linux에서는이 플래그가 기본적으로 설정되어 있습니다.)