2009-01-19 34 views
6

¿Tiene algún estándar formal o informal para una velocidad de consulta SQL razonablemente alcanzable? ¿Cómo los aplicas? Supongamos una base de datos OLTP de producción bajo una carga de producción real y realista de un par de docenas de consultas por segundo, debidamente equipadas y configuradas.Consultas SQL: ¿qué tan lento es demasiado lento?

El ejemplo personal para propósitos ilustrativos (no es una recomendación, altamente contingentes de muchos factores, algunos de fuera de su control):

Expectativa:

Cada unidad transaccional (solo estado, varias sentencias SQL de principio a fin límites de transacción, o un único procedimiento almacenado, el que sea mayor) debe ejecutarse en 1 segundo o menos en promedio, sin valores atípicos anómalos.

Resolución:

lento consultas deben ser optimizados para estándar. Las consultas lentas para informes y otros análisis se mueven a un cubo OLAP (el mejor caso) o una base de datos instantánea estática.

(obviamente algunas consultas de ejecución (Insertar/Actualizar/Eliminar) no se pueden mover, por lo que debe ser optimizado, pero hasta ahora en mi experiencia ha sido alcanzable.)

Respuesta

1

por lo general voy por la segunda regla al escribir procedimientos almacenados/refactorización, aunque mi lugar de trabajo no tiene ninguna norma específica sobre esto. Es solo mi sentido común. La experiencia me dice que si se requieren hasta diez segundos o más para que se ejecute un procedimiento, que no realiza ningún inserto de gran tamaño, generalmente hay problemas serios en el código que pueden corregirse fácilmente.

La forma en un problema más común que encontramos en SP: s con el bajo rendimiento es el uso incorrecto de los índices, haciendo que el índice costosas operaciones de búsqueda.

5

Teniendo en cuenta que no se puede esperar determinista el rendimiento en un sistema que podría (al menos en teoría) estar sujeto a picos de carga transitorios, desea que su SLA de rendimiento sea probabilístico. Un ejemplo de esto podría ser:

95% de las transacciones para completar dentro de 2 segundos.
95% de las consultas de búsqueda (más apropiadas para una pantalla de búsqueda) para completar en 10 segundos.
95% de los informes operativos para completar en 10 segundos.

transaccionales y las consultas de búsqueda no se pueden mover fuera del sistema transaccional, así que las únicas acciones que se realizan son de base de datos o el ajuste de las aplicaciones, o la compra de un hardware más rápido.

Para informes operativos, tiene que ser implacable sobre lo que califica como un informe operacional. Solo los informes que absolutamente necesitan para tener acceso a los datos actualizados se deben ejecutar fuera del sistema en vivo. Los informes que hacen un montón de E/S son muy antisociales en un sistema de producción, y los esquemas normalizados tienden a ser bastante ineficientes para los informes. Mueva los informes que no requieren datos en tiempo real a un almacén de datos o a otra instalación de informes separada.

1

O de N es bueno y algo peor como N^2 con el tiempo será demasiado lento.