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.
#ANY_LOCK_SEM_COUNT 32 Número de semáforos para comunicação entre processos.
#ANY_LOCK_SIGNAL 16 Quantidade de sinais UNIX para comunicação entre processos.
#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.
#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.
#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.
#EXTERNAL_FILE_DIRECTORY Configura arquivos externos que estão ligados ao banco de dados.
#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, XP, Windows 2000 e 2003.
#SERVER_WORKING_SIZE_MAX Tamanho máximo de memória que poderá ser utlizado para fazer swap de memória pelo Server.
#SERVER_WORKING_SIZE_MIN Tamanho mínimo de memória que poderá ser utlizado para fazer swap de memória pelo Server.
#SWEEP_QUANTUM 250 Especifica o número máximo de registros permitido nas thread do garbage collection e nas threads do sweeper, antes que o parâmetro YIELDING retorne o controle das mesmas.
#SWEEP_YELD_TIME 1 Especifica o tempo em milesegundos que a thread do sweeper e do garbage collection irão aguardar entre uma o término e início da mesma.
#TCP_REMOTE_BUFFER 8192 Tamanho do TCP/IP buffer para envio e recebimento de buffers. Se aplica ao client e Server.
#TMP_DIRECTORY Diretório utilizado para gerar os arquivos temporários.
#USER_QUANTUM 250 Especifica o número máximo de registros permitido nas threads de trabalho (threads que são executas quando são executadas querys) está é executa que o parâmetro YIELDING retorne o controle de outras threads.
#V4_EVENT_MEMSIZE 32768 Tamanho em bytes da memória que será alocada para gerenciamento de eventos.
Conclusão: O arquivo de configuração do Borland InterBase é uma parte determinante na performance do banco de dados. Neste artigo, listamos os parâmetros disponíveis. No próximo artigo, iremos detalhar e citar exemplos em que as alterações podem fazer a diferença. Caso você tenha alguma dúvida ou deseja conhecer melhor o InterBase, a Presence Tecnologia, responsável pela gestão do Borland InterBase no Brasil, apresenta diversos workshops gratuitos sobre o Borland InterBase e fornece todo o suporte/consultoria ao Borland InterBase em conjunto com a Borland Latin América. Um grande abraço e até o próximo artigo.
|
|
|||||||||||||
Todos
os direitos reservados: DevMedia Group |