4.6.3.6 myisamchk 메모리 사용량
myisamchk를 실행할 때 메모리 할당은 중요합니다. myisamchk는 메모리와 관련된 변수의 설정을 초과하여 메모리를 사용할 수 없습니다. myisamchk를 매우 큰 테이블에서 사용하려면 먼저 어느 정도의 메모리를 사용할지 결정해야합니다. 기본적으로 복구 3M 바이트 정도 밖에 사용하지 않도록 설정되어 있습니다. 더 큰 값을 사용하여 myisamchk의 동작 속도를 높일 수 있습니다. 예를 들어, 512M 바이트 이상의 RAM이 사용 가능한 경우 (그 밖에 지정하는 옵션 이외에) 다음과 같은 옵션을 사용할 수 있습니다.
shell> myisamchk --myisam_sort_buffer_size=256M \
--key_buffer_size=512M \
--read_buffer_size=64M \
--write_buffer_size=64M ...
아마 대부분의 경우에는 --myisam_sort_buffer_size=16M
를 사용하면 충분합니다.
myisamchk는 TMPDIR
의 임시 파일을 사용하는 것에주의하십시오. TMPDIR
이 메모리 파일 시스템을 가리키는 경우 메모리 부족 오류가 쉽게 발생할 수 있습니다. 이 경우 --tmpdir=
옵션을 사용하여 더 많은 공간을 가진 파일 시스템에있는 디렉토리를 지정하여 myisamchk를 실행합니다. path
복구 작업을 수행하는 경우, myisamchk는 디스크 공간도 많이 필요합니다.
데이터 파일의 크기의 2 배 (원본 파일과 복사).
--quick
에서 복구를 수행하면 공간이 필요하지 않습니다. 이 경우 다시 작성되는 인덱스 파일뿐입니다. 사본은 원본과 동일한 디렉토리에 생성되기 때문에이 공간은 원래 데이터 파일과 같은 파일 시스템에서 사용 가능해야합니다.오래된 인덱스 파일을 대체하는 새로운 용의 공간. 오래된 인덱스 파일은 복구 작업 먼저 잘라 내기 때문에 일반적이 공간은 무시합니다. 이 공간은 원래 데이터 파일과 같은 파일 시스템에서 사용 가능해야합니다.
--recover
또는--sort-recover
를 사용하는 경우 (단--safe-recover
를 사용하는 경우 제외) 정렬을위한 공간이 디스크에 있어야합니다. 이 공간은 임시 디렉토리 (TMPDIR
또는--tmpdir=
로 지정됩니다)에 할당됩니다. 다음 식은 필요한 공간의 양을 계산합니다.path
(
largest_key
+row_pointer_length
) *number_of_rows
* 2키 길이 및
row_pointer_length
는 myisamchk -dvtbl_name
에서 확인할 수 있습니다 ( 섹션 4.6.3.5 "myisamchk에 의한 테이블 정보 얻기" 를 참조하십시오).row_pointer_length
값 및number_of_rows
값은 테이블 정보의Datafile pointer
값 및Data records
입니다.largest_key
값을 확인하려면 테이블 정보의Key
행을 확인합니다.Len
컬럼은 각 키 부분의 바이트 수를 나타냅니다. 멀티 컬럼 인덱스는 키 크기는 모든 키 부분의Len
값의 합계입니다.
복구 중에 디스크 공간 문제가있는 경우 --recover
대신 --safe-recover
를 사용하여보십시오.