Existem dois servidores de banco de dados e quero comparar seus desempenhos.
Ambos possuem sistema operacional Windows e banco de dados Oracle (10.2.0.4 e 11.0.2).
Ambos são bancos de dados OLAP com 15 a 20 usuários cada. Os hardwares são diferentes, mas não tenho muitas informações sobre configurações.
Existem tabelas semelhantes em ambos e usei o plano de explicação para comparar o desempenho disparando as mesmas consultas sql para exatamente as mesmas tabelas. (58 milhões de linhas, 60 colunas).
eu usei select * from TABLE
eselect count(*) from TABLE
Um plano de explicação mostra 00:35:00 e outro mostra 01:45:00 para a coluna de tempo.
Quero saber se comparar planos explicados é suficiente para comparar desempenhos e, se não, o que devo fazer?
Você não pode comparar o desempenho de 2 bancos de dados apenas observando seus planos SQL. As mesmas consultas podem ter planos muito diferentes. Quando as versões são diferentes, todos os tipos de cálculos para o custo são diferentes. O plano que uma consulta segue em execução pode muito bem ser diferente do plano que você obtém ao explicar o plano de seu cliente.
A única maneira de comparar o desempenho é medir a execução das consultas ou processos e comparar esses tempos. Você pode usar o AWR para comparar o desempenho do banco de dados. Uma determinada carga de trabalho gerará um certo pensamento e consumirá mais ou menos dbtime. Se o dbtime gasto e o tempo decorrido de seus jobs for menor, você pode dizer com segurança que o desempenho nesse banco de dados é melhor em comparação com aquele em que os tempos são maiores.
Em 11g, com as tarefas de ajuste automático ativadas e os perfis sql de aceitação automática ativados, pode muito bem ser que a próxima execução já mostre tempos melhores.
A maneira de fazer isso é com a reprodução do banco de dados , usando uma carga de trabalho real capturada do seu sistema de produção.