Obtendo Informações sobre as Tabelas
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
nomodo descritivo
para produzir uma descrição de sua tabela. Se você iniciar o servidor MariaDB utilizando a opção--skip-locking
,myisamchk
pode relatar um erro para uma tabela que está sendo atualizada enquanto é executado. Entretanto, como omyisamchk
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. Leia "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. Leia "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 MariaDB 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 MariaDB. 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ãoCompressed
(compactado) ePacked
(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
oumultip.
(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
ouempty
.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 MariaDB 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 MariaDB 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
. Leia "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 "myisampack
, O Gerador de Tabelas Compactadas de Somente Leitura do MariaDB", para um exemplo desta informação e uma descrição do que ela significa.