4.6.3.5 myisamchk에 의한 테이블 정보 검색
MyISAM
테이블 정보 또는 통계를 얻으려면 다음과 같은 명령을 사용합니다. 이 명령의 출력은이 섹션의 나머지 부분에서 설명합니다.
myisamchk -d
tbl_name
myisamchk를 "describe 모드"로 실행하고 테이블 정보를 생성합니다. 외부 잠금이 해제되어있는 MySQL 서버를 시작하는 경우에는 myisamchk는 실행 중에 업데이트가있는 테이블에 대해 오류를보고 할 수 있습니다. 그러나 describe 모드에서는 myisamchk는 테이블을 변경하지 않기 때문에 데이터가 손상 될 위험은 없습니다.
myisamchk -dv
tbl_name
-v
를 추가하면 myisamchk는 고급 모드에서 실행되는 테이블에 대해 더 많은 정보를 생성합니다.-v
를 다시 사용하면 더 많은 정보가 생성됩니다.myisamchk -eis
tbl_name
테이블에서 가장 중요한 정보 만 표시합니다. 이 작업은 테이블 전체를 읽어야하므로 시간이 걸립니다.
myisamchk -eiv
tbl_name
이것은
-eis
와 비슷하지만 진행 과정이 표시됩니다.
tbl_name
인수는 섹션 4.6.3 "myisamchk - MyISAM 테이블 유지 보수 유틸리티" 에서 설명하는 바와 같이, MyISAM
테이블의 이름 또는 색인 파일 이름 중 하나입니다. 여러 tbl_name
인수를 지정할 수 있습니다.
person
이라는 이름의 테이블 구조가 다음과 같이되어 있다고합니다. (다음에 나타내는 myisamchk의 출력 예에서 일부 값이 더 작고 출력 형식에 적합 할 수 있도록, MAX_ROWS
테이블 옵션이 포함되어 있습니다.)
CREATE TABLE person ( id INT NOT NULL AUTO_INCREMENT, last_name VARCHAR (20) NOT NULL, first_name VARCHAR (20) NOT NULL, birth DATE, death DATE, PRIMARY KEY (id) INDEX (last_name, first_name) INDEX (birth) ) MAX_ROWS = 1000000;
또한 테이블의 데이터 파일 및 인덱스 파일의 크기는 다음과 같이되어 있다고합니다.
-rw-rw ---- 1 mysql mysql 9347072 Aug 19 11:47 person.MYD -rw-rw ---- 1 mysql mysql 6066176 Aug 19 11:47 person.MYI
myisamchk -dvv의 출력 예 :
MyISAM file : person Record format : Packed Character set : latin1_swedish_ci (8) File-version : 1 Creation time : 2009-08-19 16:47:41 Recover time : 2009-08-19 16:47:56 Status : checked, analyzed, optimized keys Auto increment key : 1 Last value : 306688 Data records : 306688 Deleted blocks : 0 Datafile parts : 306688 Deleted data : 0 Datafile pointer (bytes) : 4 Keyfile pointer (bytes) : 3 Datafile length : 9347072 Keyfile length : 6066176 Max datafile length : 4294967294 Max keyfile length : 17179868159 Recordlength : 54 table description : Key Start Len Index Type Rec / key Root Blocksize 1 2 4 unique long 1 99328 1024 2 6 20 multip. varchar prefix 512 3563520 1024 27 20 varchar 512 3 48 3 multip. uint24 NULL 306688 6065152 1024 Field Start Length Nullpos Nullbit Type 1 1 1 2 2 4 no zeros 3 6 21 varchar 4 27 21 varchar 5 48 3 1 no zeros 6 51 3 1 2 no zeros
myisamchk가 생성하는 정보의 유형에 대한 설명입니다. "Keyfile"은 인덱스 파일입니다. "레코드 '와'행 ','필드 '와'열 '은 각각 동의어입니다.
테이블 정보의 처음 부분에 다음 값이 포함됩니다.
MyISAM file
MyISAM
(인덱스) 파일의 이름입니다.Record format
테이블의 행을 저장하는 데 사용되는 형식. 위의 예에서는
Fixed length
를 사용하고 있습니다. 다른 값은Compressed
와Packed
가 있습니다. (Packed
는SHOW TABLE STATUS
보고서에서Dynamic
로보고 될 것으로 대응합니다.)Chararacter set
테이블의 기본 문자 세트.
File-version
MyISAM
형식의 버전. 현재 항상 1입니다.Creation time
언제 데이터 파일이 생성 되었는가?
Recover time
인덱스 파일 / 데이터 파일이 마지막으로 언제 다시 구성 되었는가?
Status
테이블의 상태 플래그. 가능한 값은
crashed
,open
,changed
,analyzed
,optimized keys
및sorted index pages
입니다.Auto increment key
,Last value
테이블의
AUTO_INCREMENT
컬럼과 연관된 키 번호 및 컬럼에 대해 가장 최근에 생성 된 값입니다. 그런 열이없는 경우이 필드는 표시되지 않습니다.Data records
테이블 내의 행수.
Deleted blocks
삭제 된 블록에서 공간이 아직 예약되어 있지만 수. 테이블을 최적화하고이 공간을 최소화 할 수 있습니다. 섹션 7.6.4 "MyISAM 테이블 최적화" 를 참조하십시오.
Datafile parts
동적 행 형식으로, 이것은 데이터 블록의 수를 나타냅니다. 조각난 레코드가없는 최적화 된 테이블에서는 이것은
Data records
와 동일합니다.Deleted data
미사용 삭제 된 데이터의 바이트 수. 테이블을 최적화하고이 공간을 최소화 할 수 있습니다. 섹션 7.6.4 "MyISAM 테이블 최적화" 를 참조하십시오.
Datafile pointer
데이터 파일 포인터의 크기 (바이트 단위). 일반적으로 2,3,4 또는 5 바이트입니다. 대부분의 테이블은 2 바이트로 대응할 수 있지만, 이것은 아직 MySQL에서 제어 할 수 없습니다. 고정 테이블에서는 이것은 행의 주소입니다. 동적 테이블에서 이는 바이트 주소입니다.
Keyfile pointer
인덱스 파일 포인터의 크기 (바이트 단위). 일반적으로 1, 2 또는 3 바이트입니다. 대부분의 테이블은 2 바이트로 대응할 수 있지만, 이것은 MySQL이 자동으로 계산됩니다. 항상 블록 주소입니다.
Max datafile length
테이블 데이터 파일이 어디까지 길게 될 수 있을까 (바이트 단위).
Max keyfile length
테이블 인덱스 파일이 어디까지 길게 될 수 있을까 (바이트 단위).
Recordlength
각 행이 사용하는 공간 (바이트 단위).
출력 table description
부분은 테이블의 모든 키의 목록이 포함됩니다. myisamchk는 각각의 키에 대한 낮은 수준 정보를 표시합니다.
Key
이 키의 번호. 이 값은 키의 첫 번째 컬럼에만 표시됩니다. 이 값이 누락 된 경우 행은 여러 카라무키의 2 번째 이후의 컬럼에 대응합니다. 예제 테이블에서 두 번째 인덱스에 대해 두 개의
table description
줄 수 있습니다. 이것은 두 부분으로 구성된 다중 인덱스임을 보여줍니다.Start
인덱스의이 부분이 행의 어디에서 시작 되는가?
Len
인덱스의이 부분의 길이. 압축 된 번호는 이것은 항상 컬럼 전체 길이 인 것입니다. 문자열은 문자열 컬럼의 프리픽스를 인덱싱 할 수 있기 때문에 인덱스 된 컬럼의 전체 길이보다 짧은 경우가 있습니다. 다중 키의 총 길이는 모든 키 부분의
Len
값의 합계입니다.Index
키 값이 인덱스에 여러 번 존재할 수 있는지. 가능한 값은
unique
또는multip
(multiple)입니다.Type
인덱스의이 부분의 데이터 형식입니다.
packed
,stripped
, 또는empty
의 값 중 하나의MyISAM
데이터 형식입니다.Root
루트 인덱스 블록의 주소.
Blocksize
각 인덱스 블록의 크기. 기본적으로 1024이지만,이 값은 MySQL이 소스에서 빌드되는 경우 컴파일시 변경할 수 있습니다.
Rec/key
이것은 최적화 프로그램에서 사용되는 통계입니다. 이 인덱스 값 당 몇 줄이 있는지를 나타냅니다. 고유 인덱스는 값은 항상 1입니다. 이것은 테이블의로드 (또는 큰 변경) 다음에 myisamchk -a으로 업데이트 될 수 있습니다. 전혀 업데이트되지 않으면 기본값 30가 지정됩니다.
출력의 마지막 부분은 각 컬럼의 정보를 보여줍니다.
Field
컬럼 번호.
Start
테이블의 행에서 컬럼 바이트 위치.
Length
컬럼의 길이 (바이트 단위).
Nullpos
,Nullbit
NULL
를 잡히는 컬럼에서는MyISAM
은NULL
값을 바이트의 플래그로 저장합니다. Null에있는 열이 몇인지하여이를 위해 사용되는 바이트가 1 이상있을 수 있습니다.Nullpos
값 및Nullbit
값이 비어 있지 않은 경우는 컬럼이NULL
여부를 나타내는 플래그가 어떤 바이트 및 비트에 포함되는지를 보여줍니다.NULL
플래그를 저장하는 데 사용되는 위치와 바이트 필드 1 행에 표시됩니다.person
테이블에는 5 개의 컬럼 밖에 없는데Field
행이 6 개있는 것은이 때문입니다.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
허프만 트리로 사용되는 비트 수.
Huff tree
필드 및 Bits
필드는 테이블이 myisampack로 압축되어있는 경우에 표시됩니다. 이 정보의 예는 섹션 4.6.5 "myisampack - 압축 된 읽기 전용 MyISAM 테이블 생성" 을 참조하십시오.
myisamchk -eiv의 출력 예
Checking MyISAM file : person
Data records : 306688 Deleted blocks : 0
- check file-size
- check record delete-chain
No recordlinks
- check key delete-chain
block_size 1024 :
- check index reference
- check data record references index : 1
Key : 1 : Keyblocks used : 98 % Packed : 0 % Max levels : 3
- check data record references index : 2
Key : 2 : Keyblocks used : 99 % Packed : 97 % Max levels : 3
- check data record references index : 3
Key : 3 : Keyblocks used : 98 % Packed : -14 % Max levels : 3
Total : Keyblocks used : 98 % Packed : 89 %
- check records and index references
*** LOTS OF ROW NUMBERS DELETED ***
Records : 306688 M.recordlength : 25 Packed : 83 %
Recordspace used : 97 % Empty space : 2 % Blocks / Record : 1.00
Record blocks : 306688 Delete blocks : 0
Record data : 7934464 Deleted data : 0
Lost space : 256512 Linkdata : 1156096
User time 43.08, System time 1.68
Maximum resident set size 0, Integral resident set size 0
Non-physical pagefaults 0, Physical pagefaults 0, Swaps 0
Blocks in 0 out 7 Messages in 0 out 0, Signals 0
Voluntary context switches 0, Involuntary context switches 0
Maximum memory usage : 1046926 bytes (1023k)
myisamchk -eiv의 출력에는 다음 정보가 포함됩니다.
Data records
테이블 내의 행수.
Deleted blocks
삭제 된 블록에서 공간이 아직 예약되어 있지만 수. 테이블을 최적화하고이 공간을 최소화 할 수 있습니다. 섹션 7.6.4 "MyISAM 테이블 최적화" 를 참조하십시오.
Key
키 번호.
Keyblocks used
키 블록의 몇 퍼센트를 사용하고 있는가? 테이블이 myisamchk으로 재구성 된지 얼마 안된 경우는 값이 매우 높고 (이론적 인 최대 값에 매우 근접)입니다.
Packed
MySQL은 일반적인 접미사를 가진 키 값의 팩을 시도합니다. 이것은
CHAR
컬럼과VARCHAR
컬럼의 인덱스에만 사용할 수 있습니다. 왼쪽에 유사한 부분이있는 인덱싱 된 긴 문자열에서 사용되는 공간을 따라서 크게 줄일 수있는 경우가 있습니다. 상기의 예에서는 두 번째 키는 길이가 40 바이트에서 97 %의 공간 절약이 실현되고 있습니다.Max levels
이 키의 B 트리의 깊이. 키 값이 긴 대형 테이블에서 값이 커집니다.
Records
테이블 내의 행수.
M.recordlength
평균 유키나가. 고정 길이 행을 가진 테이블의 모든 행이 동일한 길이이기 때문에 이것은 정확한 행의 길이입니다.
Packed
MySQL은 문자열의 마지막에서 공백을 제거합니다.
Packed
값은 이렇게함으로써 달성 된 감소 비율을 나타냅니다.Recordspace used
데이터 파일의 몇 퍼센트를 사용하고 있는가?
Empty space
데이터 파일의 몇 퍼센트가 사용되지 않는.
Blocks/Record
행당 평균 블록 수 (즉, 단편화 된 행이 몇 개의 링크로 구성되는지). 고정 형식의 테이블에서이 값은 항상 1.0입니다. 이 값은 가능한 한 1.0에 가깝도록하십시오. 너무 커질 경우, 테이블을 재구성 할 수 있습니다. 섹션 7.6.4 "MyISAM 테이블 최적화" 를 참조하십시오.
Recordblocks
사용 된 블록 (링크) 수. 고정 형식 테이블에서는 이것은 행수와 동일합니다.
Deleteblocks
삭제 된 블록 (링크) 수.
Recorddata
데이터 파일에서 사용 된 바이트 수.
Deleted data
데이터 파일에서 삭제 된 (사용하지 않는) 바이트 수.
Lost space
행이 더 짧은 길이로 업데이트되면 일부 공간이 없어집니다. 이것은 그런 손실의 합계 (바이트 단위)입니다.
Linkdata
동적 테이블 형식이 사용되는 경우 행의 조각은 포인터 (각각 4-7 바이트)에 연결됩니다.
Linkdata
는 이런 포인터 모두가 사용하는 스토리지 용량의 합계입니다.