Para obter uma descrição de uma tabela ou estatísticas sobre ela, utilize os comandos mostrados abaixo, nós explicaremos algumas das informações em mais detalhes posteriormente:
myisamchk -d nome_tabela Executa o
myisamchk
no ``modo descritivo'' para
produzir uma descrição de sua tabela. Se você iniciar o
servidor MySQL utilizando a opção
--skip-locking
,
myisamchk
pode relatar um erro para uma
tabela que está sendo atualizada enquanto é executado.
Entretanto, como o myisamchk
não altera
a tabela no modo de descrição, não existem riscos de
destruição de dados.
myisamchk -d -v nome_tabela Para produzir mais informações
sobre o que myisamchk
está fazendo,
adicione -v
para solicitar a execução
em modo verbose.
myisamchk -eis nome_tabela Exibe somente as informações mais importantes de uma tabela. Ele é lento porque é necessário ler a tabela inteira.
myisamchk -eiv nome_tabela Isto se parece com
-eis
, mas lhe diz o que está sendo
feito.
Exemplo da saída de myisamchk -d
MyISAM file: company.MYI Record format: Fixed length Data records: 1403698 Deleted blocks: 0 Recordlength: 226 table description: Key Start Len Index Type 1 2 8 unique double 2 15 10 multip. text packed stripped 3 219 8 multip. double 4 63 10 multip. text packed stripped 5 167 2 multip. unsigned short 6 177 4 multip. unsigned long 7 155 4 multip. text 8 138 4 multip. unsigned long 9 177 4 multip. unsigned long 193 1 text
Exemplo da saída de myisamchk -d -v
:
MyISAM file: company Record format: Fixed length File-version: 1 Creation time: 1999-10-30 12:12:51 Recover time: 1999-10-31 19:13:01 Status: checked Data records: 1403698 Deleted blocks: 0 Datafile parts: 1403698 Deleted data: 0 Datafilepointer (bytes): 3 Keyfile pointer (bytes): 3 Max datafile length: 3791650815 Max keyfile length: 4294967294 Recordlength: 226 table description: Key Start Len Index Type Rec/key Root Blocksize 1 2 8 unique double 1 15845376 1024 2 15 10 multip. text packed stripped 2 25062400 1024 3 219 8 multip. double 73 40907776 1024 4 63 10 multip. text packed stripped 5 48097280 1024 5 167 2 multip. unsigned short 4840 55200768 1024 6 177 4 multip. unsigned long 1346 65145856 1024 7 155 4 multip. text 4995 75090944 1024 8 138 4 multip. unsigned long 87 85036032 1024 9 177 4 multip. unsigned long 178 96481280 1024 193 1 text
Exemplo da saída de myisamchk -eis
:
Checking MyISAM file: company Key: 1: Keyblocks used: 97% Packed: 0% Max levels: 4 Key: 2: Keyblocks used: 98% Packed: 50% Max levels: 4 Key: 3: Keyblocks used: 97% Packed: 0% Max levels: 4 Key: 4: Keyblocks used: 99% Packed: 60% Max levels: 3 Key: 5: Keyblocks used: 99% Packed: 0% Max levels: 3 Key: 6: Keyblocks used: 99% Packed: 0% Max levels: 3 Key: 7: Keyblocks used: 99% Packed: 0% Max levels: 3 Key: 8: Keyblocks used: 99% Packed: 0% Max levels: 3 Key: 9: Keyblocks used: 98% Packed: 0% Max levels: 4 Total: Keyblocks used: 98% Packed: 17% Records: 1403698 M.recordlength: 226 Packed: 0% Recordspace used: 100% Empty space: 0% Blocks/Record: 1.00 Record blocks: 1403698 Delete blocks: 0 Recorddata: 317235748 Deleted data: 0 Lost space: 0 Linkdata: 0 User time 1626.51, System time 232.36 Maximum resident set size 0, Integral resident set size 0 Non physical pagefaults 0, Physical pagefaults 627, Swaps 0 Blocks in 0 out 0, Messages in 0 out 0, Signals 0 Voluntary context switches 639, Involuntary context switches 28966
Exemplo da saída de myisamchk -eiv
:
Checking MyISAM file: company Data records: 1403698 Deleted blocks: 0 - check file-size - check delete-chain block_size 1024: index 1: index 2: index 3: index 4: index 5: index 6: index 7: index 8: index 9: No recordlinks - check index reference - check data record references index: 1 Key: 1: Keyblocks used: 97% Packed: 0% Max levels: 4 - check data record references index: 2 Key: 2: Keyblocks used: 98% Packed: 50% Max levels: 4 - check data record references index: 3 Key: 3: Keyblocks used: 97% Packed: 0% Max levels: 4 - check data record references index: 4 Key: 4: Keyblocks used: 99% Packed: 60% Max levels: 3 - check data record references index: 5 Key: 5: Keyblocks used: 99% Packed: 0% Max levels: 3 - check data record references index: 6 Key: 6: Keyblocks used: 99% Packed: 0% Max levels: 3 - check data record references index: 7 Key: 7: Keyblocks used: 99% Packed: 0% Max levels: 3 - check data record references index: 8 Key: 8: Keyblocks used: 99% Packed: 0% Max levels: 3 - check data record references index: 9 Key: 9: Keyblocks used: 98% Packed: 0% Max levels: 4 Total: Keyblocks used: 9% Packed: 17% - check records and index references [LOTS OF ROW NUMBERS DELETED] Records: 1403698 M.recordlength: 226 Packed: 0% Recordspace used: 100% Empty space: 0% Blocks/Record: 1.00 Record blocks: 1403698 Delete blocks: 0 Recorddata: 317235748 Deleted data: 0 Lost space: 0 Linkdata: 0 User time 1639.63, System time 251.61 Maximum resident set size 0, Integral resident set size 0 Non physical pagefaults 0, Physical pagefaults 10580, Swaps 0 Blocks in 4 out 0, Messages in 0 out 0, Signals 0 Voluntary context switches 10604, Involuntary context switches 122798
Aqui estão os tamanhos dos arquivos de dados e índices para a tabela utilizada nos exemplos anteriores:
-rw-rw-r-- 1 monty tcx 317235748 Jan 12 17:30 company.MYD -rw-rw-r-- 1 davida tcx 96482304 Jan 12 18:35 company.MYM
Explicações para os tipos de informações que o
myisamchk
produz são fornecidas abaixo. O
``keyfile'' é o arquivo de índices. ``Registro'' e ``linha''
são sinônimos:
ISAM file Nome do arquivo (índice) ISAM.
Isam-version Versão do formato ISAM. Atualmente sempre 2.
Creation time Quando o arquivo de dados foi criado.
Recover time Quando foi a última vez que o arquivo de índices/dados foi reconstruído.
Data records Quantos registros existem na tabela.
Deleted blocks Quantos blocos apagados continuam alocando espaço. Você pode otimizar sua tabela para minimizar este espaço. See Secção 4.5.6.10, “Otimização de Tabelas”.
Datafile: Parts Para formato de registros dinâmicos, isto
indica quantos blocos de dados existem. Para uma tabela
otimizada sem registros fragmentados, isto é o mesmo que
Data records
.
Deleted data Quantos bytes de dados deletados não recuperados existem. Você pode otimizar sua tabela para minimizar este espaço. See Secção 4.5.6.10, “Otimização de Tabelas”.
Data file pointer O tamanho do ponteiro do arquivo de dados, em bytes. Ele normalmente possui 2, 3, 4 ou 5 bytes. A maioria das tabelas trabalham com 2 bytes, mas isto ainda não pode ser controlado pelo MySQL ainda. Para tabelas fixas, isto é um endereço de registro. Para tabelas dinâmicas, isto é um endereço de byte.
Keyfile pointer O tamanho de um ponteiro de arquivo de índices, em bytes. Ele normalmente possui 1, 2 ou 3 bytes. A maioria das tabelas trabalham com 2 bytes, mas isto é calculado automaticamente pelo MySQL. Ele é sempre um endereço de bloco.
Max datafile length Qual tamanho o arquivo de dados
(arquivos .MYD
) pode atingir, em bytes.
Max keyfile length Qual tamanho o arquivo de índices
(.MYI
pode atingir, em bytes.
Recordlength Quanto espaço cada registro ocupa, em bytes.
Record format O formato utilizado para armazenar as linhas
da tabelas. Os exemplos anteriores abaixo utilizam
Fixed length
(tamanho fixo). Outros
valores possíveis são
Compressed
(compactado) e
Packed
(empacotado).
table description Uma lista de todas as chaves na tabela. Para cada chave, alguma informação de baixo nível é apresentada:
Key
O Número desta chave.
Start
Onde, no registro, esta parte do índice inicia.
Len
Qual o tamanho desta parte do índice. Para números empacotados, isto deve sempre ser o tamanho total da coluna. Para strings, deve ser mais curto que o tamanho total da coluna indexada, porque você pode indexar um prefixo de uma coluna string.
Index
unique
ou multip.
(multiplos). Indica se um valor pode ou não exisitir
várias vezes neste índice.
Type
Que tipo de dados esta parte do índice tem. Isto é um
tipo de dados ISAM com as opções
packed
, stripped
ou empty
.
Root
Endereço do bloco de índice raiz.
Blocksize
O tamanho de cada bloco de índice. O tamanho padrão é 1024, mas o valor pode ser alterado na compilação.
Rec/key
Este é um valor estatístico utilizado pelo otimizador.
Ele diz quantos registros existem por valor para esta
chave. Uma chave única sempre tem um valor de 1. Ele
pode ser atualizado depois que uma tabela é carregada
(ou muito alterada) com myisamchk -a
.
Se isto não for completamente atualizado, um valor
padrão de 30 é fornecido.
No primeiro exemplo acima, a nona chave é uma chave multi partes com duas partes.
Keyblocks used Qual o percentual de bloco de chaves são
usados. Como a tabela usada nos exemplos foi reorganizada
com myisamchk
, os valores são muito
altos (muito próximos do máximo teórico).
Packed O MySQL tenta empacotar chaves com um sufixo comum.
Isto pode ser usado somente para chaves
CHAR
/VARCHAR
/DECIMAL
.
Para strings grandes como nomes, isto pode reduzir
significativamente o espaço utilizado. No terceiro exemplo
acima, a quarta chave possui 10 caracteres e uma redução
de 60% no espaço é obtida.
Max levels Qual a profundidade da árvore-B para esta chave. Grandes tabelas com chaves longas resultam em valores altos.
Records Quantos registros existem na tabela.
M.recordlength A média de tamanho do registro. Para tabelas com registros de tamanho fixo, isto é o tamanho exato do registro.
Packed O MySQL corta espaços do final de strings. O valor
Packed
indica o percentual de economia
alcançado fazendo isto.
Recordspace used Qual percentual do arquivo de dados é usado.
Empty space Qual percetual do arquivo de dados não é usado.
Blocks/Record Número médio de blocos por registro (isto
é, de quantos links um registro fragmentado é composto).
Sempre será 1 para tabelas de formato fixo. Este valor deve
permanecer o mais próximo possível de 1.0. Se ele
aumentar, você pode reorganizar a tabela com
myisamchk
. See
Secção 4.5.6.10, “Otimização de Tabelas”.
Recordblocks Quantos blocos (links) são utilizados. Para formatos fixos, este é o mesmo que o número de registros.
Deleteblocks Quantos blocos (links) foram excluídos.
Recorddata Quantos bytes no arquivo de dados são usados.
Deleted data Quantos bytes no arquivo de dados foram apagados (sem uso).
Lost space Se um registro é atualizado para um tamanho menor, algum espaço é perdido. Isto é a soma de todas estas perdas, em bytes.
Linkdata Quando o formato de tabela dinâmica é utilizado,
fragmentos de registros são ligados com ponteiros (4 a 7
bytes cada). Linkdata
é a soma do
montante de armazenamento utilizado por todos estes
ponteiros.
Se uma tabela foi compactada com myisampack
,
mysiamchk -d
exibe informações adicionais
sobre cada coluna da tabela. Veja Secção 4.8.4, “myisampack
, O Gerador de Tabelas Compactadas de
Somente Leitura do MySQL”,
para um exemplo desta informação e uma descrição do que ela
significa.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.