2010-11-26 23 views
33

En relación con my other question hoy me pregunto cómo usar MySQL's SLEEP(duration) correctamente.¿Cómo y cuándo usar SLEEP() correctamente en MySQL?

De lo que he reunido leer los foros de MySQL Dev y descripción muy vaga en MySQL Docs no puede usarlo de esta manera:

SELECT ... 
SLEEP(1); /* wait for a second before another SELECT */ 
SELECT ... 

Entonces, ¿qué es lo bueno para entonces?

+6

basado en la lectura de los documentos de mysql, lo habría intentado a su manera primero, nunca me alejo con información útil después de leer los documentos de mysql, gracias a Konerak a continuación por la respuesta muy simple .... – Landon

+0

@ Landon, la respuesta de Iroh es la mejor. – Pacerier

Respuesta

48
SELECT ... 
SELECT SLEEP(5); 
SELECT ... 

¿Para qué estás usando esto? ¿Estás tratando de eludir/reinventar mutexes o transacciones?

+0

Obviamente ... ¡salud! –

+22

Uso este comando para confirmar que el registro lento de consultas funciona como debería. – jeffatrackaid

+0

@jeffatrackaid ¡Sí! No estoy solo – rahmanisback

39

Si no desea SELECT SLEEP(1);, también puede DO SLEEP(1); Es útil para aquellas situaciones en procedimientos donde no desea ver resultados.

p. Ej.

SELECT ... 
DO SLEEP(5); 
SELECT ... 
+3

Esta debería ser la respuesta aceptada. La salida de 'sleep' es siempre 0, ¿Por qué alguien se molestaría en seleccionar la salida de' sleep' para ..... – Pacerier

+0

@Pacerier: esta respuesta apareció 5 años después, pero el ejemplo usa DO, que de hecho es más elegante que SELECCIONAR. La gran clave era que SLEEP no era un comando, sino una función, que ambas respuestas muestran, pero no dudes en marcar esta respuesta como aceptada. – Konerak

+1

@Pacerier un motivo para seleccionar la salida de reposo es ponerlo en una consulta para probar el bloqueo y los niveles de aislamiento de transacción en consultas concurrentes, por ejemplo. –

1

Para aquellos que hablan de mutex, etc., hay una gran cantidad de aplicaciones. A veces solo quiero que se ejecute un script más tarde en el día cuando sé que los servidores están en silencio. En lugar de esperar hasta que pueda presionar Enter, uso sleep().

+6

Un crontab puede anularse si cambia de opinión más adelante. – rahmanisback

+0

Esto debería ser un comentario, no una respuesta. – NieDzejkob

Cuestiones relacionadas