SYSCS_UTIL.SYSCS_COMPRESS_TABLE Compressão de tabelas Procedimentos do sistemaSYSCS_COMPRESS_TABLE

O procedimento do sistema SYSCS_UTIL.SYSCS_COMPRESS_TABLE é utilizado para recuperar o espaço alocado, mas não utilizado, de uma tabela e seus índices. Normalmente, existe espaço alocado mas não utilizado quando uma grande quantidade de dados é excluída da tabela, ou os índices são atualizados. Por padrão, o não retorna para o sistema operacional o espaço não utilizado. Por exemplo, uma vez que uma página tenha sido alocada para uma tabela ou um índice, esta não é devolvida automaticamente para o sistema operacional até que a tabela ou o índice tenha sido removido. O procedimento do sistema SYSCS_UTIL.SYSCS_COMPRESS_TABLE permite devolver para o sistema operacional o espaço não utilizado.

Sintaxe SYSCS_UTIL.SYSCS_COMPRESS_TABLE (IN SCHEMANAME VARCHAR(128), IN TABLENAME VARCHAR(128), IN SEQUENTIAL SMALLINT)
SCHEMANAME
Um argumento de entrada do tipo VARCHAR(128) que especifica o esquema da tabela. Passar um valor nulo resulta em erro.
TABLENAME
Um argumento de entrada do tipo VARCHAR(128) que especifica o nome da tabela. A cadeia de caracteres deve corresponder exatamente às letras maiúsculas e minúsculas do nome da tabela: um argumento igual a "Fred" é passado para o SQL como o identificador delimitado 'Fred'. Passar um argumento nulo resulta em erro.
SEQUENTIAL
Um argumento de entrada diferente de zero do tipo SMALLINT força a operação executar no modo seqüencial, enquanto um argumento igual a zero força a operação a não executar no modo seqüencial. Passar um argumento nulo resulta em um erro.
Exemplo SQL

Para comprimir a tabela chamada CLIENTE no esquema chamado US, utilizando a opção SEQUENTIAL:

CALL SYSCS_UTIL.SYSCS_COMPRESS_TABLE('US', 'CLIENTE', 1)
Exemplo Java

Para comprimir a tabela chamada CLIENTE no esquema chamado US, utilizando a opção SEQUENTIAL:

CallableStatement cs = conn.prepareCall ("CALL SYSCS_UTIL.SYSCS_COMPRESS_TABLE(?, ?, ?)"); cs.setString(1, "US"); cs.setString(2, "CLIENTE"); cs.setShort(3, (short) 1); cs.execute();

Se o parâmetro SEQUENTIAL não for especificado, o reconstruirá todos os índices simultaneamente com a tabela base. Se não for especificado o argumento SEQUENTIAL, este procedimento poderá fazer uso intenso da memória e utilizar muito espaço temporário em disco (uma quantidade aproximadamente igual a duas vezes o espaço utilizado, mais o espaço alocado mas não utilizado). Isto acontece porque o comprime a tabela copiando as linhas ativas para o novo espaço alocado (em vez de embaralhar e truncar o espaço existente). O espaço extra utilizado é retornado ao sistema operacional no COMMIT.

Quando é especificado SEQUENTIAL, o comprime a tabela base e depois comprime cada um dos índices seqüencialmente. Utilizar SEQUENTIAL faz com que seja usado menos memória e espaço em disco, mas demora mais tempo. Deve ser utilizado o argumento SEQUENTIAL para reduzir a utilização de memória e espaço em disco.

O procedimento do sistema SYSCS_UTIL.SYSCS_COMPRESS_TABLE não pode devolver espaço em disco para o sistema operacional enquanto o COMMIT não for executado. Isto significa que o espaço ocupado pela tabela base e seus índices não pode ser retornado para o sistema operacional enquanto COMMIT não for executado (somente o espaço em disco alocado temporariamente pela classificação externa pode ser retornado para o sistema operacional antes de COMMIT). Recomenda-se utilizar o procedimento SYSCS_UTIL.SYSCS_COMPRESS_TABLE no modo de auto-efetivação. Este procedimento obtém um bloqueio exclusivo na tabela sendo comprimida. Todos os planos de instrução dependentes da tabela e de seus índices são invalidados. Para obter informações sobre como identificar espaço não utilizado deve ser consultado o .