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_name
d:t:o
입니다.--force
,-f
압축 된 테이블이 원래의 테이블보다 클 경우 나 이전에 myisampack를 호출하면 중간 파일이 존재하는 경우에도 압축 된 테이블을 생성합니다 (myisampack는 테이블의 압축 중에
라는 중간 파일을 데이터베이스 디렉토리에 만듭니다. myisampack를 강제 종료하면tbl_name
.TMD.TMD
파일은 삭제되지 않을 수 있습니다.) 일반적으로 myisampack는
이 존재하는 것을 발견하면 오류로 종료 합니다.tbl_name
.TMD--force
를 사용하면 myisampack는 반드시 테이블을 압축합니다.--join=
,big_tbl_name
-j
big_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
-T
path
지명 된 디렉토리를 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 station
MyISAM 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.MYI
Compressing 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 station
MyISAM 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
옵션을 사용하십시오.