myisampack é usado para compactar tabelas
        MyISAM, e pack_isam é usado para compactar
        tabelas ISAM. Como as tabelas ISAM estão ultrapassadas, nós
        iremos discutir aqui somente sobre o
        myisampack, mas tudo dito sobre
        myisampack também pode ser verdadeiro para o
        pack_isam.
      
        myisampack trabalha compactando cada coluna
        na tabela separadamente. A informação necessária para
        descompactar colunas é lida em memória quando a tabela é
        aberta. Isto resulta em uma performance muito melhor quando
        estiver acessando registros individuais, porque você precisará
        descompactar somente um registro, não um bloco muito maior do
        disco como faz o Stacker no MS-DOS. Normalmente,
        myisampack compacta o arquivo de dados
        40%-70%.
      
        O MySQL utiliza mapeamento de memória
        (nmap()) em tabelas compactadas e retorna ao
        uso normal de leitura e escrita se nmap()
        não funcionar.
      
Por favor, note o seguinte:
Depois de comapctada, a tabela é somente-leitura. Isto é, normalmente, pretendido (como quando acessamos tabelas compactadas em um CD). Permitir que se faça gravação em uma tabela compactada também está em nossa lista TODO, mas com baixa prioridade.
            myisampack também pode compactar colunas
            BLOB ou TEXT. O antigo
            pack_isam (para tabelas
            ISAM) não pode fazer isto.
          
        myisampack é chamado desta forma:
      
shell> myisampack [opções] nome_arquivo ...
        Cada nome_arquivo deve ter o nome de um arquivo de índice
        (.MYI). Se você não se encontra em um
        diretório de bancos de dados, você deve especificar o caminho
        completo para o arquivo. Pode-se omitir a extensão
        .MYI.
      
        myisampack suporta as seguintes opções:
      
            -b, --backup
          
            Realiza um backup da tabela como
            nome_tabela.OLD.
          
            -#, --debug=debug_options
          
            Log da saída de depuração. A string
            debug_options geralmante é
            'd:t:o,nome_arquivo'.
          
            -f, --force
          
            Força a compactação da tabela mesmo se ela se tornar
            maior ou se o arquivo temporário existir.
            myisampack cria um arquivo temporário
            chamado nome_tabela.TMD enquanto ele
            compacta a tabela. Se você matar o
            myisampack o arquivo
            .TMD não pode ser removido.
            Normalmente, myisampack sai com um erro
            se ele descobrir que nome_tabela.TMD
            existe. Com --force,
            myisampack compacta a tabela de qualquer
            maneira.
          
            -?, --help
          
Exibe uma mensagem de ajuda e sai.
            -j nome_tabela_grande,
            --join=nome_tabela_grande
          
            Une todas as tabelas nomeadas na linha de comando em uma
            única tabela nome_tabela_grande. Todas
            tabelas que forem combinadas DEVEM ser idênticas (mesmos
            nomes de colunas e tipos, alguns índices, etc.).
          
            -p #, --packlength=#
          
            Especifica o comprimento do tamanho de armazenamento, em
            bytes. O valor deve ser 1, 2 ou 3.
            (myisampack armazena todas as linhas com
            ponteiros de tamanhos 1, 2 ou 3 bytes. Na maioria dos casos
            normais, myisampack pode determinar o
            valor correto do tamanho antes de começar a compactar o
            arquivo, mas ele pode notificar durante o processo de
            compactação que ele pode ter usado um tamanho menor. Neste
            caso myisampack irá exibir uma nota
            dizendo que a próxima vez que você compactar o mesmo
            arquivo você pode utilizar um registro de tamanho menor.)
          
            -s, --silent
          
Modo silencioso. Escreve a saída somente quando algum erro ocorrer.
            -t, --test
          
Não compacta realmente a tabela, apenas testa a sua compactação.
            -T dir_name, --tmp_dir=dir_name
          
Utiliza o diretório especificado como a localização em que serão gravadas as tabelas temporárias.
            -v, --verbose
          
Modo verbose. Escreve informação sobre o prograsso e resultado da compactação.
            -V, --version
          
Exibe informação de versão e sai.
            -w, --wait
          
            Espera e tenta novamente se a tabela estiver em uso. Se o
            servidor mysqld foi iniciado com a
            opção --skip-locking, não é uma boa
            idéia chamar myisampack se a tabela
            puder ser atualizada durante o processo de compactação.
          
A seqüência de comandos mostrados abaixo ilustra uma típica seção de compactação de tabelas:
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% 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 Datafilepointer (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
        A informação exibida pelo myisampack é
        descrita abaixo:
      
            normal
          
O número de colunas para qual nenhum empacotamento extra é utilizado.
            empty-space
          
O número de colunas contendo valores que são somente espaços; estes ocuparão apenas 1 bit.
            empty-zero
          
O número de colunas contendo valores que são somente 0's binários; ocuparão 1 bit.
            empty-fill
          
            O número de colunas inteiras que não ocupam a faixa
            completa de bytes de seu tipo; estes são alteradas para um
            tipo menor (por exemplo, uma coluna
            INTEGER pode ser alterada para
            MEDIUMINT).
          
            pre-space
          
O número de colunas decimais que são armazenadas com espaços a esquerda. Neste caso, cada valor irá conter uma contagem para o número de espaços.
            end-space
          
O número de colunas que tem muitos espaços espaços extras. Neste caso, cada valor conterá uma contagem para o número de espaços sobrando.
            table-lookup
          
            A coluna tem somente um pequeno número de valores
            diferentes, que são convertidos para um
            ENUM antes da compressão Huffman.
          
            zero
          
O número de colunas em que todos os valores estão zerados.
            Original trees
          
O número inicial de árvores Huffman.
            After join
          
O número de árvores Huffman distintas que sobram depois de unir árvores para poupar espaço de cabeçalho.
        Depois que uma tabela foi compactada, myisamchk
        -dvv exibe informações adicionais sobre cada campo:
      
            Type
          
O tipo de campo deve conter as seguites descrições:
                constant
              
Todas linhas tem o mesmo valor.
                no endspace
              
Não armazena espaços no fim.
                no endspace, not_always
              
Não armazena espaços no fim e não faz compactação de espaços finais para todos os valores.
                no endspace, no empty
              
Não armazena espaços no fim. Não armazena valores vazios.
                table-lookup
              
                A coluna foi convertida para um ENUM.
              
                zerofill(n)
              
                Os n bytes mais significativos no
                valor são sempre 0 e não são armazenados.
              
                no zeros
              
Não armazena zeros.
                always zero
              
Valores zero são armazenados em 1 bit.
            Huff tree
          
A árvore Huffman associada com o campo.
            Bits
          
O número de bits usado na árvore Huffman.
        Depois de ter executado
        pack_isam/myisampack você
        deve executar o
        isamchk/myisamchk para
        recriar o índice. Neste momento você pode também ordenar os
        blocos de índices para criar estatísticas necessárias para o
        otimizador do MySQL trabalhar de maneira mais eficiente.
      
myisamchk -rq --analyze --sort-index nome_tabela.MYI isamchk -rq --analyze --sort-index nome_tabela.ISM
        Depois de instalar a tabela compactada no diretório de banco de
        dados MySQL você deve fazer mysqladmin
        flush-tables para forçar o mysqld
        a iniciar usando a nova tabela.
      
        Se você desejar descompactar uma tabela compactada, você pode
        fazer isto com a opção --unpack para o
        isamchk ou myisamchk.
      
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.

