Configurações do Borland InterBase em Detalhes - Parte 1

Configuração de Parâmetros no Borland InterBase:

O Borland InterBase é um banco de dados poderoso e atende os padrões SQL, podendo ser embutido em aplicações e utilizado em aplicações específicas e não necessita dos suporte da área de TI.

O InterBase possui vários parâmetros em seu arquivo de configuração que podem alterar a performance do servidor ou do banco de dados. Como resultado o InterBase suporta 3 plataformas (Windows, Linux, Solaris) e através dos parâmetros de configuração e do cenário da aplicação podem determinar a performance.

Este artigo está divido em 2 partes, esta primeira parte irá explicar todos parâmetros disponíveis no Borland InterBase.

Alterar a Configuração com Base em quê?

InterBase é usado em vários tipos de aplicação, é usado em aplicações 2 camadas, n camadas e vários sistemas operacionais. Cada um destes cenários expõe o banco de dados a comportamentos diferentes. A otimização de um banco de dados antes de tudo depende do número de usuários para que a aplicação possa ser distribuída, isso se chama escalabilidade, muitos confundem o que é escalabilidade e acham que é o número de sistemas operacionais que o banco de dados aceita e não é. Escalabilidade é a capacidade que o banco de dados possui de suportar o aumento de usuários e principalmente a evolução do hardware.Podemos usar como exemplo de escalabilidade uma comparação muito familiar aos leitores da ClubeDelphi: Borland InterBase 7.1 e FireBird 1.5. O Borland InterBase 7.1 é altamente escalar, suporta mais usuários concorrentes sem prejudicar a performance do banco de dados do que o FireBird 1.5, outro ponto muito importante é que InterBase 7.1 suporta SMP (suporta à máquinas bi-processadas) e Hyper-Threading (nova tecnologia SMP da Intel). Isto significa que se o usuário tiver um servidor com 2, 3, 4, 5 ou mais processadores o InterBase 7.1 irá utilizar todos os recursos do servidor enquanto o FireBird 1.5 irá usar apenas 1.

A alta disponibilidade é outro ponto importante, se o negócio for 24x7 o banco de dados não pode em momento algum parar, o controle de transações, backup on-line e recuperação automática do servidor são alguns dos requisitos que nos farão determinar a configuração do banco de dados.

Onde e Como Configurar o InterBase:

O Borland InterBase disponibiliza um arquivo com uma lista de parâmetros para configuração, até o InterBase 6.5 o arquivo de configuração se chamava isc_config em Linux e Solaris, no InterBase 7.x em diante este arquivo se chama ibconfig em todas as plataformas, este arquivo se encontra no diretório raiz do InterBase, o diretório padrão em Windows é C:\Arquivos de Programas\Borland\InterBase e em Linux/Solaris: /opt/interbase.

No ibconfig todos os parâmetros estão configurados com o valor padrão (default) assumido pelo Server. Esses valores são validados para estarem na faixa permitida de cada parâmetro.

O ibconfig é utilizado tanto pelo Server como pelo client. O client tanto para Windows (através da gds32.dll), quanto para Linux/Solaris (por mio da libgds.so) utilizam estes parâmetros.

O Impacto dos Parâmetros:

O InterBase Server utiliza vários parâmetros para gerenciar suas operações. Os parâmetros já estão pré-configurados, mas de acordo com suas instalações algumas alterações podem lhe ajudar a otimizar sua aplicação. Alguns parâmetros de otimização dependem dos recursos disponíveis na sua máquina (memória, espaço para arquivos temporários, processador e sistemas SMP (mais de um processador)). Outros dependem do tamanho do banco de dados e dos requisitos de escalabilidade. Existem ainda parâmetros que dependem de como suas instalações são seguras.

Lista de Parâmetros do IBConfig:

A lista de parâmetros encontra-se no IBConfig. Cada parâmetro inicia com o símbolo #, que denota um comentário. Assim sendo, o InterBase assume o valor padrão para o parâmetro. Para determinar um valor, basta retirar o #. Ao lado de cada parâmetro encontra-se o valor default.

As alterações no parâmetros só terão reflexos a partir da reinicialização do InterBase Server, não é necessário reiniciar seu servidor, apenas o InterBase Server.

#ADMIN_DB       “admin.ib”

Especifica o nome do banco de dados de segurança do InterBase Server, caso não seja alterado será assumido o nome “admin.ib”. O banco de dados de segurança está no diretório raiz do InterBase.

#ANY_EVENT_MEM_SIZE       32768

Total de bytes que serão alocados para gerenciamento de eventos.

#ANY_LOCK_MEM_SIZE       98304

Total de bytes que serão alocados para gerenciamento de locks.
O default é 98304 em Linux e Solaris e 256K em Windows.

#ANY_LOCK_SEM_COUNT       32

Número de semáforos para comunicação entre processos.
Disponível apenas para arquiteturas clássicas (até InterBase 4.2).

#ANY_LOCK_SIGNAL       16

Quantidade de sinais UNIX para comunicação entre processos.
Disponível apenas para arquiteturas clássicas (até InterBase 4.2).

#CPU_AFFINITY

Configura em qual processador o InterBase Server irá ser executado, este valor é representado por um vetor binário mas é configurado com valores decimais (o InterBase Server converte este valor para o vetor binário). Exemplo: para usar o InterBase Server no processador 1, o valor é 1. Para usar no processador 2 e 3 o valor é 3, para usar no processador 2 e 3 o valor é 6.
Apenas para plataforma Windows e
em ambientes SMP.
Quanto este parâmetro está comentado o padrão é usar todos os processadores.

#CONNECTION_TIMEOUT       180

Segundos que o Server irá aguardar para detectar que uma conexão falhou.

#DATABASE_CACHE_PAGES       2048

Do lado servidor, é o número de páginas que serão alocadas na memória para cada banco de dados, ou seja, o tamanho da memória cache.
Este parâmetro também pode ser configurado do lado client.

#DEADLOCK_TIMEOUT       10

Segundos que o Server aguarda para checar se um recurso está em deadlock.

#DUMMY_PACKET_INTERVAL       60

Segundos que o client aguarda antes que o Server envie pacotes (DUMMY PACKET) requisitando o status da conexão.

#ENABLE_HYPERTHREADING

Habilita a tecnologia hyper-threading nos processadores lógicos.
Valores utitlizados: 1 (habilitado), 0 (desabilitado).
O valor padrão é 0 (desabilitado).

#EXTERNAL_FILE_DIRECTORY

Configura arquivos externos que estão ligados ao banco de dados.
Se os arquivos externos não estão no <interbase_home>/ext, especifique através deste parâmetro, o local correto. Por razões de segurança é recomendado que não se coloque nenhum outro tipo de arquivo nesta pasta.

#EXTERNAL_FUNCTION_DIRECTORY

Se você usa bibliotecas UDF e estas não estão no <interbase_home>/UDF, especifique através deste parâmetro, o local onde estão suas bibliotecas. Por razões de segurança é recomendado que não se coloque nenhum outro tipo de arquivo nesta pasta.

#MAX_THREADS

Número máximo de threads que podem ser executadas simultaneamente através do engine do InterBase. Este valor se aplica a ambientes SMP (mais de um processador). Em ambientes mono processados (apenas 1 processador) o valor padrão é 1. Isso elimina o overhead requisitado em ambientes SMP.

#SERVER_CLIENT_MAPPING       4096

Tamanho em bytes mapeados para o client utilizar na comunicação entre processos.

#SERVER_PRIORITY_CLASS       1

Prioridade do serviço do InterBase em Windows NT