6 개의 INT 열, 1 개의 SMALLINT, 2 개의 TINYINT 및 1 개의 FLOAT 열이있는 MyISAM 엔진을 사용하는 MySQL 테이블이 있습니다. 수십억 개의 행이 있습니다 (데이터 파일은 100GB입니다). 키를 사용하여 에있는 모든에 대한 색인을 만들려고했지만 그럴 수 없었습니다.큰 테이블 복구/색인 생성 및 myisam_sort_buffer_size
- recovering (with sort) MyISAM-table 'tableName'
Data records: 662929483
- Fixing index 1
myisamchk: error: myisam_sort_buffer_size is too small
MyISAM-table 'tableName' is not fixed because of errors
Try fixing it by using the --safe-recover (-o), the --force (-f) option or by not using the --quick (-q) flag
(가 keycache 방법,하지 정렬 방법을 사용 아마도 때문에) 대신 영원히 다시한다 "myisamchk를 -rov TABLENAME을"사용 "myisamchk를 -r TABLENAME"를 시도 다음과 같은 오류를했다.
이 경우 myisam_sort_buffer_size를 늘리는 것이 의미가 없으므로 (myisam_sort_buffer_size vs sort_buffer_size에 대한 대답은 값을 늘리는 것이 바람직하지 않음을 의미합니다). 컴퓨터에는 32GB의 RAM이 있습니다.
(이상적?)를 sort_buffer_size 값은 가장 큰 인덱스 + 약간의 오버 헤드를 보유 할 수 있어야한다 - 모든 인덱스의 합,하지만 최대의 크기를. 버퍼가 충분히 크지 않은 경우 세그멘테이션 오류가 발생했습니다. – user3127882