¿Qué se debe considerar al usar subselecciones en consultas con bases de datos muy cargadas?

StackOverflow https://stackoverflow.com/questions/520595

Pregunta

Estamos desarrollando una aplicación con capa de persistencia utilizando OpenJPA1.1 y una base de datos Oracle como almacenamiento back end.Usaré consultas con subselecciones (consulte mi pregunta en Resolver la consulta JPA encontrando la última entrada en la lista conectada).

Ahora, mis colegas en el trabajo comentan que este tipo de consultas pueden provocar problemas de rendimiento, ya que la base de datos está llena con miles de datos de clientes utilizados por unos pocos miles de usuarios simultáneos (lo que será una realidad en producción).

Entonces, mi pregunta es:Hay una "mejores prácticas" usando subselects en consultas bajo estas circunstancias?¿Y qué se debe considerar al hacer esto?

¿Fue útil?

Solución

Primero probaría que es un problema.Querrá cargar la base de datos con datos ficticios y ver cómo se desempeñan sus consultas a medida que la base de datos crece.De lo contrario, estás perdiendo tiempo optimizando algo que puede no ser un problema.

Una cosa en la que pensar.En todos los lugares donde he trabajado, donde las cosas se desmoronan no son miles de discos, sino millones.Tienes este sistema, funciona bien por un tiempo y luego comienza a ralentizarse incluso cuando le agregas más hardware.El lugar donde trabajo ahora tiene alrededor de 70 millones de registros en su tabla histórica que se remonta a 1998.Como resultado, el rendimiento en algunas consultas es horrible y dedican mucho tiempo a solucionar estos problemas.

Pero en algún momento realmente tendrás que preguntar.¿Necesitamos conservar datos de más de 4 años en nuestro sistema transaccional?¿O incluso 4 meses?Este límite de tiempo depende de las necesidades de su negocio, pero si mantiene su sistema transaccional solo con los datos necesarios para procesar el trabajo en curso...y archive en un almacén de datos sus registros históricos.Mejorará su rendimiento general, porque es probable que sólo ocasionalmente necesite consultar esos datos antiguos, entonces, ¿por qué conservarlos con sus datos recientes?

Si piensa en esto desde el principio, se ahorrará muchos dolores de cabeza a largo plazo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top