2007-05-19

Velocidades II

Boa noite,

Antes de mais, quero agradecer ao elmig o comentário, já que foi o primeiro :)

Em resposta a esse comentário resolvi escrever um novo post, sobre o mesmo tema.

Para optimizar o desempenho de um sistema de informação temos que ter em conta vários factores, sendo que um dos mais importantes é o software que serve de interface entre os utilizadores e o sistema de gestão de base de dados(SGBD) que o suporta, vulgo software de gestão ou ERP. Alguns dos outros factores que tem muita importância no desempenho final do Sistema de Informação vão desde o hardware escolhido até à configuração do SGBD.

Como o software de gestão é o factor que mais impacto tem na performance final do Sistema (pois um programa mal arquitectado raramente terá bom desempenho), devemos começar por avaliar o desempenho dos vários factores envolvidos, escolher a melhor configuração possível e desenvolver o programa de acordo com essa configuração.

Para além destas medidas, que podem ser distintas para cada situação, há um conjunto de opções geralmente aceites pela comunidade no que respeita a configurações recomendadas do SGBD, opções de arquitectura do hardware (nomeadamente sistema de armazenamento), práticas de programação, estruturação das bases de dados, etc...

Claro que tudo isto é muito bonito quando se está a desenvolver o sistema, mas quando este já existe há algum tempo e não é viável alterar a sua arquitectura ? Só nos resta medir a performance do mesmo e melhorar o que for possível, ou seja, actuar onde se puder, nomeadamente a nível de opções de configuração do SGBD, hardware, etc...

Mas como medir a performance ? Que indicadores escolher ? Hoje em dia quase todos os SGBD têm opções, plugins ou ferramentas para obter indicadores acerca do desempenho do SGDB. Devemos recolher essa informação e interpretá-la para alterar o que for necessário.

Vamos a um exemplo: Vamos imaginar que temos um sistema que está suportado pelo PostgreSQL. Neste SGBD existe uma opção para obter estatisticas. Um dos indicadores que podemos obter, chamado pg_stat_all_indexes (é uma tabela) dá-nos informação importante sobre a utilização dos índices das tabelas. Com esta informação podemos afinar os índices que nos dêm mais problemas, ou então podemos usar uma das tabelas pg_stat_io_* que nos dão informações sobre a performance de I/O da Base de Dados, ao analizar estes valores podemos descobrir que temos que optimizar a configuração do sistema de armazenamento...

Isto é só a ponta do iceberg... há imensas opções diferentes e abordagens que variam conforme o SGBD usado, o hardware, etc...

Por agora espero que tenham ficado com a ideia geral...

Até breve !

Sem comentários: