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...
Parabéns pelos seus artigos muito bom..
ResponderEliminarGostaria 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!
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.
ResponderEliminarAs 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;
Obrigado Claudemar pelas informações.
ResponderEliminarSó 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