3.8 Discussão 43
do planner, onde é gerado um plano de execução de consulta, são executados algoritmos de
otimização de consultas; e, na etapa de execução do comando SQL, não se pode desprezar o
tempo gasto com uso de CPU, pois existem transações que fazem uso intensivo do processa-
dor para executar algoritmos de ordenação, junção, operações matemáticas e outras funções.
Todo esse tempo, desprezado nos trabalhos relacionados, contribui para a composição dos
tempos de resposta das transações de bancos de dados.
É importante salientar, também, que, em cada etapa de processamento do comando SQL,
podem ser utilizados diferentes tipos de cache, e não só o de dados. Logo, essas outras áreas
de memória utilizadas durante o processamento do comando SQL também devem ser levadas
em conta na gerência automática de memória, pois com um ajuste nos outros buffers de
memória (que não seja o cache de dados) é possível diminuir o tempo gasto com compilação
de comandos, acesso a dados de usuários, geração de plano de consulta, otimização de plano
de consulta, dentre outros.
É certo que o problema de gerência automática de memória não possui uma solução
trivial, que leve em conta todas essas questões levantadas. Porém, uma solução de ajuste
automático, mesmo que se proponha a executar ações em um único componente específico
do SGBD, por exemplo cache de dados, deve, ao analisar o desempenho do SGBD, ava-
liar o maior número possível de aspectos que o afetam e verificar se o ajuste sugerido será
realmente relevante.
Do ponto de vista de implementação dos trabalhos, nota-se que a grande maioria das
soluções possui um forte acoplamento ao SGBD alvo e pouca, ou nenhuma, extensibilidade
para outros SGBDs, de forma que dificilmente serão reutilizadas em outros ambientes.
A questão do reuso das soluções propostas é importante pois uma boa abordagem de
gerência automática de memória que possa ser reusada, ao menos em parte, em vários outros
SGBDs − tais como PostgreSQL, MySQL, dentre outros − seria de grande valia para a
comunidade de usuários destes SGBDs.
É evidente que, devido ao fato de cada SGBD existente no mercado possuir sua própria
arquitetura e seus próprios componentes, um algoritmo de realocação de buffers de memória
utilizado pelo IBM DB2 não irá funcionar no PostgreSQL. Da mesma forma, as informações
que alimentam a etapa de análise de uma solução proposta para o IBM DB2 não servirão se
a mesma análise for feita no PostgreSQL, pois, certamente, as informações necessárias não