BENCHMARK ENTRE TÉCNICAS DE AUMENTO DE DESEMPENHO DE TABELAS COM GRANDE VOLUME DE DADOS EM BANCOS DE DADOS RELACIONAIS

EDUARDO KROTH, LEANDRO RICARDO NEUMANN

Resumo


Em um banco de dados, o aumento constante dos registros armazenados em tabelas pode tornar o desempenho das operações de busca, inserção, atualização e exclusão abaixo do ideal, gerando a necessidade de um investimento em melhorias do hardware ou a aplicação de técnicas que possam aumentar o desempenho do próprio SGBD (Sistema Gerenciador de Bando de Dados). Uma técnica usada extensivamente em bancos de dados é a indexação de colunas. O crescimento das tabelas faz com que algumas consultas com critérios mais abrangentes retornem muitos dados do disco e, nestes casos, só o uso de índices é ineficiente. Portanto, o que pode acelerar as consultas, nestes casos, é a redução na quantidade de dados em disco que é preciso ser acessada. As técnicas compressão de dados, particionamento horizontal e particionamento vertical trabalham nesse sentido. Este trabalho realiza um benchmark entre estas técnicas a fim de encontrar situações recomendadas para cada uma destas técnicas, bem como avaliar sua performance quando implementadas em conjunto. Resumidamente, pode-se conceituar as técnicas como segue. (1) Compressão de Dados: reduz o espaço ocupado pelos dados, o que resulta em um retorno de mais registros por busca em disco. (2) Particionamento Horizontal: consiste em dividir a tabela em pedaços menores, chamados partições. Consultas não precisam ser alteradas após particionar uma tabela horizontalmente, mas o SGBD deve passar a identificar partições que não possuem dados que satisfaçam a busca, reduzindo o escopo da busca. (3) Particionamento Vertical: é a divisão das colunas de uma tabela em duas ou mais tabelas. Deve haver, entretanto, uma chave única comum entre as tabelas, de forma que seja possível reconstruir os registros originais. Para este trabalho, as técnicas descritas são testadas nos SGBDs MySQL e PostgreSQL, tendo como critério de avaliação o tempo de execução de diferentes operações a serem realizadas sobre os bancos de dados. Quanto menor o tempo de execução destas operações, melhor. O banco de dados criado para esta avaliação é formado por três tabelas, sendo que a tabela principal contém 500.000.000 de registros. As operações usadas no benchmark são comandos SELECT (consulta), INSERT (inserção), UPDATE (atualização) e DELETE (exclusão). Para testar o maior número possível de situações, projetou-se um conjunto de 33 operações assim distribuídas: 2 operações de inserção, 4 operações de atualização, 3 operações de exclusão e 24 operações de busca. No momento de escrita deste resumo têm-se os bancos de dados com os dados populados e as técnicas implementadas no SGBD MySQL, tendo sido testadas inicialmente as operações de busca. Até o momento, a técnica particionamento horizontal mostrou considerável aumento de desempenho nas buscas que não envolvem todas as partições. Da mesma forma, a técnica particionamento vertical mostrou considerável aumento de desempenho nas buscas que não pedem retorno de todas as colunas. O uso da técnica compressão de dados trouxe ganhos significativos de desempenho na maioria das consultas. O uso de mais de uma técnica simultaneamente deve ser testada em breve. Com base nos resultados parciais, foi possível visualizar um aumento de desempenho com o uso das técnicas testadas na maioria das consultas. Entretanto, os dados analisados ainda são insuficientes para afirmar as situações recomendadas para uso de cada uma das técnicas.


Apontamentos

  • Não há apontamentos.