Essa é uma questão bastante discutida. Existem vários mitos que perpetuam a definição da blocagem do banco de dados:
-
Deve-se definir um tamanho de bloco igual ao tamanho de bloco da memória.
-
Deve-se definir um tamanho de bloco igual ao tamanho de bloco do sistema de arquivos.
-
Deve-se usar o padrão da definição do Progress.
-
É melhor utilizar bloco de 1 kbyte.
-
É melhor utilizar bloco de 4 KBytes.
-
É melhor utilizar bloco de 8 kBytes.
O problema de testar a blocagem de um banco de dados é que não é possível alterá-la depois que o banco está criado. Um dump-load será necessário para fazer essa alteração. Outro problema grave é que geralmente parametrização correta do banco de dados não tem influencia em bancos com a blocagem mal definida. Então vamos quebrar alguns mitos:
Mito número 1. Se uma aplicação solicita ao sistema operacional um determinado espaço contíguo de memória, esse espaço será alocado em um ou mais blocos de memória. Se a memória disponível no servidor não é suficiente para alocar um espaço contíguo de 8 KBytes, por exemplo, a blocagem do banco de dados será o menor dos seus problemas.
Mito número 2. Da mesma forma, o sistema de arquivos alocará mais blocos quando isso for solicitado, e irá ler a quantidade de blocos necessários para trazer a informação demandada pelo Progress, independente da blocagem do banco ou do sistema operacional.
Mito número 3. Sem comentários.
Quanto a melhor blocagem, o discurso da Progress até a versão 10.0B era que a melhor blocagem para Windows era 4 KBytes e a melhor blocagem para Linux e Unix era 1 KBytes. A partir do Progress 10.1A o discurso mudou. Agora a melhor blocagem para Windows e Linux é 4 KBytes e para Unix é 8 KBytes.
Para encerrar a discussão com alguma fundamentação científica, contruí uma série de programas que mensuram o tempo para gerar um banco de dados de aproximadamente 1 GByte e efetuar uma série de operações aleatórias e sequenciais de inclusões, alterações, leituras e exclusões. Esses testes foram efetuados em um servidor isolado com processador Intel EM64T de 2.33 GHz, com 4 GBytes de memória e 2 discos SATA em RAID 0.
O teste efetuado com bloco de 8 KBytes foi mais rápido que o teste com bloco de 4 KBytes em todos os quesitos. No geral, o tempo total de execução com bloco de 4 KBytes foi 8 horas e 8 minutos. O tempo total com bloco de 8 KBytes foi 7 horas e 28 minutos, quase 9 % menos.
Isso tem um motivo. Quanto maior o bloco, mais registros podem ser manipulados em uma única operação de leitura e gravação, tornando o processo mais rápido. Da mesma forma, menor a quantidade de fragmentos para registros grandes (grandes >= 1 KByte). Minha recomendação é usar bloco de 8 kBytes em qualquer situação, pelo menos até a Progress permitir bloco de 16 KBytes, quando provavelmente minha recomendação será esse tamanho de bloco.