2011-12-30 12 views
5

Tenemos la intención de utilizar procedimientos almacenados de mysql para manejar todo el trabajo de la base de datos para un proyecto. Hay varias aplicaciones (diferentes idiomas) que usan la misma base de datos y estoy bastante seguro de que hay una buena cantidad de códigos SQL repetidos en esas aplicaciones.¿Cómo y cuándo mysql compila los procedimientos almacenados?

Y luego al leer algo sobre MySQ yo nos topamos con
http://www.joinfu.com/2010/05/mysql-stored-procedures-aint-all-that/
artículo básicamente dice que los procedimientos almacenados se compilan cada vez que se hizo nueva conexión db.
¿Mysql compilará TODO (3 dígitos como mínimo) los procedimientos almacenados en la base de datos?

+1

Yo diría que el artículo que vinculó responde su pregunta. – hakre

+1

Sí, yo diría eso también. Es solo que tenía una especie de esperanza de que algo así como "Oh, eso no es cierto para ver 5.5 y más adelante de mysql". – grizwako

+0

En los comentarios de su artículo vinculado, una discusión evoluciona con la esencia, que las cosas han mejorado en 5.5, aunque no descaradamente, por lo que las bases de datos –

Respuesta

5

No. Los procedimientos de consulta y almacenados se compilan a pedido y luego se guardan en un caché por un tiempo. Si usa un procedimiento almacenado específico repetidamente, se usará la versión compilada en la memoria caché, pero si ya no está en la memoria caché, primero se debe compilar, , como cualquier otra consulta que envíe a una base de datos.

Lo que MySQL ciertamente no hará es compilar todos los procedimientos almacenados x-cien a la vez, en caso de que fuera eso lo que temía.

Pero todo esto es algo irrelevante La ventaja de los procedimientos almacenados es que puede asegurarse de que múltiples aplicaciones que usan la misma base de datos lo utilicen de la misma manera. Cuando su rendimiento es tal que comienza a buscar en la memoria caché de compilación la velocidad, está buscando en el lugar equivocado. La optimización de la velocidad se realiza mejor mediante el rediseño de la consulta o la base de datos.

+0

deben ser deslumbrantemente rápidas. Después de que haya optimizado sus consultas y el diseño de la base de datos y los índices, ** ¿cómo puede optimizar la velocidad? – Pacerier

+0

Hardware más rápido, más grandes en cachés de memoria, discos duros más rápidos, otros motores de almacenamiento. Por supuesto, esto es después de que haya agregado índices para acelerar las consultas, etc. También tenga en cuenta bloqueos: cuando el contenido de una tabla se cambia todo el tiempo, se bloquea para cada cambio, lo que detiene las consultas. Hay toda una ciencia detrás de esto y si fuera usted haría una pregunta nueva y no agregaría un comentario a una respuesta de 4 años ya que hay muchas respuestas a esta pregunta. – Matijs

3

MySQL no compilará todos los procedimientos almacenados a la vez. Se ejecutarán a petición, como consultas según el requisito y cuando los llame.

Sin embargo, con un procedimiento almacenado, la base de datos compila el plan de consulta una vez y reutiliza el proceso compilado. Esta precompilación puede producir una ventaja de rendimiento significativa.

Cuestiones relacionadas