Compartilhando conhecimento com o mundo

Com tecnologia do Blogger.

Pesquisa

Download

Blogger Tricks

Blogger Themes

Visitas

Assuntos

2/19/2014

Script para Compactação de Tabelas no Informix


Criei um script em shell para automatizar a compactação das tabelas no Informix, nele tenho diversas funções interessantes referentes a compactação das tabelas. Vou simular a compactação de uma tabela;

Download do Script Completo - Clique Aqui
-------------------------------------------------------------------------------------------------
17/02/2014                      ***** INFORMIX BASIC SERVICES *****                      11:29:24
-------------------------------------------------------------------------------------------------


     Code  Function                                  Code  Function                               
     ----  --------------------------------------    ----  -------------------------------------- 
       1   Processos Rodando                          40   REPACK - Recompactacao                 
       2   Estimativa de Compactacao                  41   SHRINK - Liberando Espaco              
       3   Compactacoes Realizadas                    42   COMPRESS - Comprimir                   
       4   Tamanho da Tabela                          43   COMPRESS, REPACK, SHRINK (3 JUNTOS)    
      ---- --------------------------------------     44   REPACK, SHRINK (2 JUNTOS)              
                                                      45   UNCOMPRESS - Descomprimir              
                                                      46   Manual do Compressao                   
                                                       0   Sair da Aplicacao                      
                                                     ----  -------------------------------------- 

                Digita um Codigo - 
No meu banco tem uma tabela grande - usando a opção 4 vou ver o tamanho dela
-------------------------------------------------------------------------------------------------
17/02/2014                      ***** INFORMIX BASIC SERVICES *****                      11:29:44
-------------------------------------------------------------------------------------------------


 Digite o NOME DO BANCO ...........: aa01055

 Digite o Nome da TABELA ..........: onmode_f_test 
Resultado com o tamanho da tabela;
-------------------------------------------------------------------------------------------------
17/02/2014                      ***** INFORMIX BASIC SERVICES *****                      11:31:13
-------------------------------------------------------------------------------------------------


Nome da TABELA ...............: onmode_f_test
TAMANHO da Tabela ............: 2.8795318603515625   Gb

Pressione qualquer tecla para sair...
A tabeça onmode_f_test do banco aa01055 tem 2.879 Gb - checando a estimativa de compactação desta tabela (opção 2) - ela vai ser compactada 79.1%, ótima para compactar.
-------------------------------------------------------------------------------------------------
17/02/2014                      ***** INFORMIX BASIC SERVICES *****                      10:58:51
-------------------------------------------------------------------------------------------------


(expression)  est   curr  change partnum    table
              ----- ----- ------ ---------- -----------------------------------
              79.1%  0.0%  +79.1 0x0050008b aa01055:informix.onmode_f_test
              
              Succeeded: table estimate_compression  aa01055:informix.onmode_f_
              test 


Pressione qualquer tecla para continuar...
Vamos compactar esta tambela chamando a 43 (COMPRESS, REPACK, SHRINK), onde;
COMPRESS - Compacta a tabela reduzindo o tamanho dos dados a serem armazenados, criando assim espaco nao utilizado na particao;

REPACK - Move linhas a partir da extremidade da particao para o espaco vazio pagina presente na extremidade superior da particao.

Shrink - Libera extensoes livres de volta ao dbspace.
Preenchi os campos para compactar a tabela;
-------------------------------------------------------------------------------------------------
17/02/2014                      ***** INFORMIX BASIC SERVICES *****                      11:37:29
-------------------------------------------------------------------------------------------------
                                    Compress, Repack and Shrink


 Digite o Nome do BANCO DE DADOS .: aa01055

 Digite o nome da Tabela .........: onmode_f_test
Vamos esperar, esta rodando;
-------------------------------------------------------------------------------------------------
17/02/2014                      ***** INFORMIX BASIC SERVICES *****                      11:38:01
-------------------------------------------------------------------------------------------------
                                    Compress, Repack and Shrink


                    +---------------------------------------------------------+
                    |                                                         |
                    |                aguarde alguns segundos ...              |
                    |                                                         |
                    +---------------------------------------------------------+


Database selected.

Abrindo uma outra shell e chamando o script de compactação usando a opcão (01 - Processos Rodando) dá para ver como esta este processo rodando - o nosso processo esta compactando - Rodou 47 segundos e ele esta com previsão de 385 segundos para terminar
-------------------------------------------------------------------------------------------------
17/02/2014                      ***** INFORMIX BASIC SERVICES *****                      11:38:48
-------------------------------------------------------------------------------------------------


 +-----------------+-----------+------------+------------+--------------------------------------
 | Banco           | Operacao  | Duracao    | Previsao   | Nome da Tabela
 +-----------------+-----------+------------+------------+--------------------------------------
 | aa01055         | COMPRESS  | 47         | 385        | onmode_f_test 
 +-----------------+-----------+------------+------------+--------------------------------------

Pressione qualquer tecla para continuar...
Uma observação importante - como estamos compactando o I/O no servidor deve ficar alto;
[s357:informix]$/export/home/informix> sar 1 200
Linux 2.6.18-371.3.1.el5 (s357.ms)      02/17/2014

11:41:35 AM       CPU     %user     %nice   %system   %iowait    %steal     %idle
11:41:36 AM       all     44.72      0.00      3.52      5.03      0.00     46.73
11:41:37 AM       all     46.46      0.00      1.01      3.03      0.00     49.49
11:41:38 AM       all     43.43      0.00      2.02      4.55      0.00     50.00
11:41:39 AM       all     40.20      0.00      2.01      9.05      0.00     48.74
11:41:40 AM       all     45.96      0.00      1.01      3.03      0.00     50.00
11:41:41 AM       all     41.41      0.00      2.53      6.57      0.00     49.49
Depois de um tempo o processo da compactação acabou
-------------------------------------------------------------------------------------------------
17/02/2014                      ***** INFORMIX BASIC SERVICES *****                      11:44:43
-------------------------------------------------------------------------------------------------


 +-----------------+-----------+------------+------------+--------------------------------------
 | Banco           | Operacao  | Duracao    | Previsao   | Nome da Tabela
 +-----------------+-----------+------------+------------+--------------------------------------
 +-----------------+-----------+------------+------------+--------------------------------------

Pressione qualquer tecla para continuar...
Na tela onde estava rodando a compactação deu essas mensagens - ela aparece na online.log do Informix
-------------------------------------------------------------------------------------------------
17/02/2014                      ***** INFORMIX BASIC SERVICES *****                      11:44:38
-------------------------------------------------------------------------------------------------

10:58:51  SCHAPI Create Dictionary for aa01055:informix.onmode_f_test started
10:58:51  SCHAPI Compress for aa01055:informix.onmode_f_test started
11:38:01  SCHAPI Repack for aa01055:informix.onmode_f_test started
11:44:37  Repacked 2351688 rows in aa01055:informix.onmode_f_test
11:44:37  SCHAPI Shrink for aa01055:informix.onmode_f_test started
11:44:38  SCHAPI table compress repack shrink  aa01055:informix.onmode_f_test succeeded

Pressione qualquer tecla para continuar...
Vamos ver que tamanho ficou esta tabela depois da compactação - opção 4 Tamanho da Tabela
-------------------------------------------------------------------------------------------------
17/02/2014                      ***** INFORMIX BASIC SERVICES *****                      11:46:32
-------------------------------------------------------------------------------------------------
                                         

     Code  Function                                  Code  Function                               
     ----  --------------------------------------    ----  -------------------------------------- 
       1   Processos Rodando                          40   REPACK - Recompactacao                 
       2   Estimativa de Compactacao                  41   SHRINK - Liberando Espaco              
       3   Compactacoes Realizadas                    42   COMPRESS - Comprimir                   
       4   Tamanho da Tabela                          43   COMPRESS, REPACK, SHRINK (3 JUNTOS)    
      ---- --------------------------------------     44   REPACK, SHRINK (2 JUNTOS)              
                                                      45   UNCOMPRESS - Descomprimir              
                                                      46   Manual do Compressao                   
                                                       0   Sair da Aplicacao                      
                                                     ----  -------------------------------------- 

                Digita um Codigo - 4
Colocando o nome do banco e da tabela;
-------------------------------------------------------------------------------------------------
17/02/2014                      ***** INFORMIX BASIC SERVICES *****                      11:47:27
-------------------------------------------------------------------------------------------------


 Digite o NOME DO BANCO ...........: aa01055

 Digite o Nome da TABELA ..........: onmode_f_test
Compactou a tabela, reduziu o tamanho dela;
-------------------------------------------------------------------------------------------------
17/02/2014                      ***** INFORMIX BASIC SERVICES *****                      11:48:01
-------------------------------------------------------------------------------------------------


Nome da TABELA ...............: onmode_f_test
TAMANHO da Tabela ............: 1.5997467041015625   Gb

Pressione qualquer tecla para sair...

3 comentários:

  1. Parabéns pelos seus artigos muito bom..

    Gostaria de uma orientação sua, estou pensando em executar o "compress" em algumas das minhas tabelas gostaria de saber que cuidados devo tormar..

    Banco informix 117.70 FC5

    Valeu!

    ResponderEliminar
  2. Marcio Martins bom dia, desculpe a demora em responder. No geral a compactação das tabelas no Informix é uma coisa bem tranquila, já compactei várias tabelas e tive uma ótima redução do espaço utilizado nos bancos Informix, reparei que melhorou a performance geral do servidor.

    As considerações que deixo para você:

    - Na hora que você estiver rodando alguma compactação de tabela tenha em mente que o I/O do servidor fica bem alto, mais quando termina a compactação tudo volta ao normal;

    - O compress quando estiver rodando pode ser cancelado e retomado em um momento mais propicio;

    - No OAT (Openadmin) dá para deixar automático as compactações das tabelas e ver as tabelas que foram compactações (e as não compactadas) tem até uma parte gráfica onde dá para fazer a compactação das tabelas, bem maneiro;

    - Lembrando - não da para compactar (out-of-row data blog, indexes, catalogs table, temp table, partition tables, dictionary tables, tabelas dos bancos sys - como sysuser, sysmaster, sysutils, syscdr ... )

    - Deletando ou desabilitando os indexes antes de concluir a operação completa do repack_offline pode diminuir a quantidade de tempo que leva para o banco concluir a operação. Depois, você pode recriar ou reativar os índices, de preferência aproveitando PDQ. - http://www.ibm.com/developerworks/data/tutorials/db2-cert9192/index.html - repack_offline ninguém acessa a tabela;

    No geral a compactação das tabelas é uma coisa super tranquila;

    ResponderEliminar
  3. Obrigado Claudemar pelas informações.

    Só mais uma duvida, não corre o risco de perder alguma informação da tabela ? Tipo dados antigos na consulta da aplicação..

    Você tem skype? ( gostaria de tê-lo em meus contatos)

    Mais uma vez parabéns pelo blog é nota 10..

    Abraços,
    Marcio Martins

    ResponderEliminar