Recupera????o do espa??o n??o utilizado

As tabelas e ??ndices do Derby (algumas vezes chamados de conglomerados) podem conter espa??o n??o utilizado, depois de grandes quantidades de dados terem sido exclu??das ou atualizadas.

Isto acontece porque, por padr??o, o Derby n??o devolve o espa??o n??o utilizado para o sistema operacional. Ap??s a p??gina ter sido alocada para uma tabela ou um ??ndice, o Derby n??o devolve automaticamente a p??gina para o sistema operacional at?? que a tabela ou ou ??ndice seja removido, mesmo que o espa??o n??o seja mais necess??rio. Entretanto, o Derby fornece um mecanismo para recuperar o espa??o n??o utilizado nas tabelas e nos seus ??ndices associados.

Se for determinado que a tabela e seus ??ndices possuem uma quantidade significativa de espa??o n??o utilizado, dever?? ser utilizado o procedimento SYSCS_UTIL.SYSCS_COMPRESS_TABLE, ou o procedimento SYSCS_UTIL.SYSCS_INPLACE_COMPRESS_TABLE, para recuperar o espa??o n??o utilizado. O procedimento SYSCS_COMPRESS_TABLE garante recuperar a quantidade m??xima de espa??o livre, ??s custas de criar temporariamente novas tabelas e ??ndices antes do procedimento ser efetivado. O procedimento SYSCS_INPLACE_COMPRESS tenta recuperar o espa??o dentro da mesma tabela, mas n??o pode garantir que ir?? recuperar todo o espa??o dispon??vel. A diferen??a entre estes procedimentos ?? que, diferentemente de SYSCS_COMPRESS_TABLE, o procedimento SYSCS_INPLACE_COMPRESS n??o utiliza arquivos tempor??rios, e move linhas dentro do mesmo conglomerado.

Como exemplo, ap??s determinar que a tabela V??OS_DISPONIBILIDADE e seus ??ndices relacionados possuem muito espa??o n??o utilizado, este espa??o poder?? ser recuperado atrav??s do seguinte comando:

call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'V??OS_DISPONIBILIDADE', 0);

O terceiro par??metro no procedimento SYSCS_UTIL.SYSCS_COMPRESS_TABLE() determina se a opera????o ser?? executada em modo seq??encial ou n??o seq??encial. Se for especificado 0 para o terceiro argumento do procedimento, a opera????o executar?? no modo n??o seq??encial. No modo seq??encial, o Derby comprime a tabela e seus ??ndices seq??encialmente, um de cada vez. A compress??o seq??encial utiliza menos mem??ria e espa??o em disco, mas ?? mais lenta. Para for??ar a opera????o executar no modo seq??encial, dever?? ser colocado um valor diferente de zero do terceiro argumento. O exemplo a seguir mostra como for??ar o procedimento a executar no modo seq??encial:

call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'V??OS_DISPONIBILIDADE', 1);
Para obter mais informa????es sobre este comando, deve ser consultado o Manual de Refer??ncia do Derby.
Conceitos relacionados
Verifica????o da consist??ncia do banco de dados
C??pia de seguran??a e restaura????o do banco de dados
Arquivo de log em uma unidade separada
Obten????o de informa????es sobre bloqueios