4.6.5 myisampack - 압축 된 읽기 전용 MyISAM 테이블의 생성
myisampack 유틸리티는 MyISAM 테이블을 압축합니다. myisampack은 테이블의 각 컬럼을 독립적으로 압축하는 방식으로 작동합니다. 일반적으로 myisampack은 데이터 파일을 40 %에서 70 % 압축합니다.
테이블이 나중에 사용될 경우, 컬럼의 압축에 필요한 정보를 서버가 메모리에 읽습니다. 이렇게하면 개별 행을 액세스 할 때 성능이 크게 향상됩니다. 이것은 압축 해제하여야하는 것은 하나의 행만이기 때문입니다.
MySQL은 압축 된 테이블에 메모리 매핑을 할 경우 가능하면 mmap() 를 사용합니다. mmap() 가 작동하지 않으면, MySQL은 보통의 파일 읽기 / 쓰기 작업으로 돌아갑니다.
다음 사항에 유의하십시오.
mysqld 서버가 외부 잠금이 해제 된 상태에서 시작 된 경우, 포장 처리 중에 서버에서 테이블이 갱신 될 가능성이있는 경우, myisampack의 시작은 권장되지 않습니다. 서버가 정지하고있는 상태에서 테이블을 압축하는 것이 가장 안전합니다.
테이블은 팩 후 읽기 전용입니다. 보통 이것은 의도 된 것입니다 (CD에서 압축 된 테이블에 액세스하는 경우 등).
myisampack는 분할 된 테이블을 지원하지 않습니다.
myisampack은 다음과 같이 시작합니다.
shell> myisampack [ options ] file_name ...
각 파일 이름 인수는 인덱스 ( .MYI ) 파일의 이름을하십시오. 데이터베이스 디렉토리에없는 경우, 파일의 경로를 지정하도록하십시오. .MYI 확장자는 생략 가능합니다.
myisampack에서 테이블을 압축하면, myisamchk -rq를 사용하여 인덱스를 다시 작성하도록하십시오. 섹션 4.6.3 "myisamchk - MyISAM 테이블 유지 보수 유틸리티" .
myisampack는 다음 옵션을 지원합니다. 또한 옵션 파일을 읽고 섹션 4.2.7 "옵션 파일의 처리에 영향을주는 명령 행 옵션" 에 설명되어 그들을 처리하기위한 옵션도 지원합니다.
--help,-?도움말 메시지를 표시하고 종료합니다.
--backup,-b라는 이름을 사용하여 각 테이블의 데이터 파일의 백업을 만듭니다.tbl_name.OLD--character-sets-dir =path문자 세트가 설치되어있는 디렉토리. 섹션 10.5 "문자 세트 구성" 을 참조하십시오.
--debug[=,debug_options]-# [debug_options]디버그 로그를 기록합니다. 일반적인
debug_options문자열은d:t:o,입니다. 기본값은file_named:t:o입니다.--force,-f압축 된 테이블이 원래의 테이블보다 클 경우 나 이전에 myisampack를 호출하면 중간 파일이 존재하는 경우에도 압축 된 테이블을 생성합니다 (myisampack는 테이블의 압축 중에
라는 중간 파일을 데이터베이스 디렉토리에 만듭니다. myisampack를 강제 종료하면tbl_name.TMD.TMD파일은 삭제되지 않을 수 있습니다.) 일반적으로 myisampack는이 존재하는 것을 발견하면 오류로 종료 합니다.tbl_name.TMD--force를 사용하면 myisampack는 반드시 테이블을 압축합니다.--join=,big_tbl_name-jbig_tbl_name명령 행에서 지명 된 모든 테이블을 하나의 압축 된 테이블
big_tbl_name에 결합합니다. 결합되는 모든 테이블은 반드시 완전히 동일한 구조로하여야합니다 (동일한 컬럼 이름, 형태, 같은 인덱스 등).결합 작업 전에
big_tbl_name이 존재해야합니다. 명령 행에서 지명 된big_tbl_name에 병합되는 모든 소스 테이블이 존재해야합니다. 소스 테이블 결합을 위해 읽을 수 있지만 변경은되지 않습니다. 이 결합 작업은big_tbl_name의.frm파일이 생성되지 않기 때문에 조인 작업이 완료되면.frm파일을 소스 테이블 중 하나에서 복사하여라고합니다.big_tbl_name.frm--silent,-s자동 모드. 오류가 발생했을 때만 출력을 내 보냅니다.
--test,-t실제로 테이블을 팩하지 않고, 팩 테스트 만 실행합니다.
--tmpdir=,path-Tpath지명 된 디렉토리를 myisampack 임시 파일을 만들 위치로 사용합니다.
--verbose,-v중복 모드. 팩 작업의 진행 상황과 그 결과에 대한 정보를 기록합니다.
--version,-V버전 정보를 출력하고 종료합니다.
--wait,-w테이블이 사용중인 경우 기다렸다가 다시 시도합니다. mysqld 서버가 외부 잠금이 해제 된 상태에서 시작 된 경우, 포장 처리 중에 서버에서 테이블이 갱신 될 가능성이있는 경우, myisampack의 시작은 권장되지 않습니다.
다음 명령 시퀀스는 전형적인 테이블 압축 세션을 나타냅니다.
shell>ls -l station.*-rw-rw-r-- 1 monty my 994128 Apr 17 19:00 station.MYD -rw-rw-r-- 1 monty my 53248 Apr 17 19:00 station.MYI -rw-rw-r-- 1 monty my 5767 Apr 17 19:00 station.frm shell>myisamchk -dvv stationMyISAM file : station Isam-version : 2 Creation time : 1996-03-13 10:08:58 Recover time : 1997-02-02 3:06:43 Data records : 1192 Deleted blocks : 0 Datafile parts : 1192 Deleted data : 0 Datafile pointer (bytes) : 2 Keyfile pointer (bytes) : 2 Max datafile length : 54657023 Max keyfile length : 33554431 Recordlength : 834 Record format : Fixed length table description : Key Start Len Index Type Root Blocksize Rec / key 1 2 4 unique unsigned long 1024 1024 1 2 32 30 multip. text 10240 1024 1 Field Start Length Type 1 1 1 2 2 4 3 6 4 4 10 1 5 11 20 6 31 1 7 32 30 8 62 35 9 97 35 10 132 35 11 167 4 12 171 16 13 187 35 14 222 4 15 226 16 16 242 20 17 262 20 18 282 20 19 302 30 20 332 4 21 336 4 22 340 1 23 341 8 24 349 8 25 357 8 26 365 2 27 367 2 28 369 4 29 373 4 30 377 1 31 378 2 32 380 8 33 388 4 34 392 4 35 396 4 36 400 4 37 404 1 38 405 4 39 409 4 40 413 4 41 417 4 42 421 4 43 425 4 44 429 20 45 449 30 46 479 1 47 480 1 48 481 79 49 560 79 50 639 79 51 718 79 52 797 8 53 805 1 54 806 1 55 807 20 56 827 4 57 831 4 shell>myisampack station.MYICompressing station.MYI : (1192 records) - Calculating statistics normal : 20 empty-space : 16 empty-zero : 12 empty-fill : 11 pre-space : 0 end-space : 12 table-lookups : 5 zero : 7 Original trees : 57 After join : 17 - Compressing file 87.14 % Remember to run myisamchk -rq on compressed tables shell>ls -l station.*-rw-rw-r-- 1 monty my 127874 Apr 17 19:00 station.MYD -rw-rw-r-- 1 monty my 55296 Apr 17 19:04 station.MYI -rw-rw-r-- 1 monty my 5767 Apr 17 19:00 station.frm shell>myisamchk -dvv stationMyISAM file : station Isam-version : 2 Creation time : 1996-03-13 10:08:58 Recover time : 1997-04-17 19:04:26 Data records : 1192 Deleted blocks : 0 Datafile parts : 1192 Deleted data : 0 Datafile pointer (bytes) : 3 Keyfile pointer (bytes) : 1 Max datafile length : 16777215 Max keyfile length : 131071 Recordlength : 834 Record format : Compressed table description : Key Start Len Index Type Root Blocksize Rec / key 1 2 4 unique unsigned long 10240 1024 1 2 32 30 multip. text 54272 1024 1 Field Start Length Type Huff tree Bits 1 1 1 constant 1 0 2 2 4 zerofill (1) 2 9 3 6 4 no zeros, zerofill (1) 2 9 4 10 1 3 9 5 11 20 table-lookup 4 0 6 31 1 3 9 7 32 30 no endspace, not_always 5 9 8 62 35 no endspace, not_always, no empty 6 9 9 97 35 no empty 7 9 10 132 35 no endspace, not_always, no empty 6 9 11 167 4 zerofill (1) 2 9 12 171 16 no endspace, not_always, no empty 5 9 13 187 35 no endspace, not_always, no empty 6 9 14 222 4 zerofill (1) 2 9 15 226 16 no endspace, not_always, no empty 5 9 16 242 20 no endspace, not_always 8 9 17 262 20 no endspace, no empty 8 9 18 282 20 no endspace, no empty 5 9 19 302 30 no endspace, no empty 6 9 20 332 4 always zero 2 9 21 336 4 always zero 2 9 22 340 1 3 9 23 341 8 table-lookup 9 0 24 349 8 table-lookup 10 0 25 357 8 always zero 2 9 26 365 2 2 9 27 367 2 no zeros, zerofill (1) 2 9 28 369 4 no zeros, zerofill (1) 2 9 29 373 4 table-lookup 11 0 30 377 1 3 9 31 378 2 no zeros, zerofill (1) 2 9 32 380 8 no zeros 2 9 33 388 4 always zero 2 9 34 392 4 table-lookup 12 0 35 396 4 no zeros, zerofill (1) 13 9 36 400 4 no zeros, zerofill (1) 2 9 37 404 1 2 9 38 405 4 no zeros 2 9 39 409 4 always zero 2 9 40 413 4 no zeros 2 9 41 417 4 always zero 2 9 42 421 4 no zeros 2 9 43 425 4 always zero 2 9 44 429 20 no empty 3 9 45 449 30 no empty 3 9 46 479 1 14 4 47 480 1 14 4 48 481 79 no endspace, no empty 15 9 49 560 79 no empty 2 9 50 639 79 no empty 2 9 51 718 79 no endspace 16 9 52 797 8 no empty 2 9 53 805 1 17 1 54 806 1 3 9 55 807 20 no empty 3 9 56 827 4 no zeros, zerofill (2) 2 9 57 831 4 no zeros, zerofill (1) 2 9
myisampack는 다음 유형의 정보를 표시합니다.
normal추가 팩이 사용되지 않은 컬럼의 수.
empty-space공간에만 값을 포함 컬럼의 수. 이들은 1 비트를 차지하고 있습니다.
empty-zero바이너리 제로 만 값을 포함하는 컬럼의 수. 이들은 1 비트를 차지하고 있습니다.
empty-fill각 유형의 바이트 범위를 모두 점령하지 정수 컬럼의 수. 이들은 작은 형으로 변경됩니다. 예를 들어,
BIGINT컬럼 (8 바이트)의 모든 값이-128에서127의 범위 내에있는 경우는이 열을TINYINT컬럼 (1 바이트)로 저장할 수 있습니다.pre-space선행 공백을 가진 저장되어있는 10 진수 컬럼의 수. 이 경우 각 값은 선행 공백의 수의 카운트를 포함하고 있습니다.
end-space후행 공백을 많이 포함한 컬럼의 수. 이 경우 각 값은 후행 공백의 수의 카운트를 포함하고 있습니다.
table-lookup열에는 약간 다른 값 만 있고, 허프만 압축 전에
ENUM으로 변환되었습니다.zero모든 값이 제로의 컬럼의 수.
Original trees원래의 허프만 트리의 수입니다.
After join헤더 공간을 절약하기 위해 트리의 결합 뒤에 남은 다른 허프만 트리의 수.
테이블의 압축 후 myisamchk -dvv가 표시 Field 행에는 각 컬럼에 대한 추가 정보가 포함되어 있습니다.
Type데이터 형식입니다. 이 값은 다음 중 하나의 디스크립터를 포함 할 수 있습니다.
constant모든 행은 같은 값을 가지고 있습니다.
no endspace엔드 스페이스를 보존하지 않습니다.
no endspace, not_always엔드 스페이스를 보존하지 않으며 모든 값에 엔드 스페이스 압축을하지 않습니다.
no endspace, no empty엔드 스페이스를 보존하지 않습니다. 빈 값을 저장하지 않습니다.
table-lookup컬럼은
ENUM으로 변환되었습니다.zerofill (N)값 중 최상위
N바이트는 항상 0이며 저장되지 않습니다.no zeros제로를 저장하지 않습니다.
always zero제로 값은 1 비트를 사용하여 저장됩니다.
Huff tree열 관련있는 허프만 트리의 수.
Bits허프만 트리로 사용되는 비트 수.
myisampack 시작 후 인덱스를 다시 작성하려면 myisamchk를 시작해야 안됩니다. 이 때, MySQL 최적화 작업 효율화를 도모하기 위해 인덱스 블록의 정렬 및 통계의 작성을 할 수 있습니다.
shell> myisamchk -rq --sort-index --analyze tbl_name .MYI
압축 된 테이블을 MySQL 데이터베이스 디렉토리에 설치 한 후, mysqld가 새로운 테이블을 사용하도록 강요하기 위해 mysqladmin flush-tables를 실행하도록하십시오.
압축 된 테이블을 풀려면, myisamchk에 --unpack 옵션을 사용하십시오.