Gibt es eine Möglichkeit für das SLEEP() in einer gespeicherten Prozedur?
Ich habe eine gespeicherte Prozedur ich würde gerne für immer, aber der Schlaf für eine Sekunde in einer Schleife. Wenn es aufwacht, es würde Umfrage, eine Tabelle zu sehen, sollte es funktionieren einige. Arbeit nur getan werden muss, um jede minute, so gibt es keine sorgen über die Umfrage-Tabelle erste Treffer mit updates von zwei Autoren zur gleichen Zeit.
Was ist der beste Weg, um SLEEP()
für ein Intervall in einem gespeicherte Prozedur? Es wäre schön, eigentlich, wenn es schlafen konnte für 200 Millisekunden, aber eine zweite würde auch funktionieren.
- Gibt es nicht einen scheduling-Anlage in die Datenbank? Auch MySQL hat.
- Ich weiß nicht.. da ist? Ich bin mir nicht sicher, wie einfach wäre dies zu implementieren eines sleep () - Anlage in der Datenbank. Es wäre in der Tat, darüber nachzudenken, extrem schwierig sein.
- dev.mysql.com/doc/refman/5.1/en/events.html
- das ist ordentlich! Können Sie Fleisch, das in einer Antwort auf die OP nutzen kann?
- Ich habe noch, diese Funktion zu verwenden, ich war nur von dessen Existenz wissen.
- vielen Dank, dass ist genau das was ich brauchte!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich hatte das gleiche problem. Nach googeln eine Menge, fand ich heraus, dass wir verwenden können,
Verzögerung unser Verfahren für viele Sekunden. In deinem Fall, mit
Ordnung sein würde.
Können Sie verwenden:
Referenz: http://dev.mysql.com/doc/refman/5.7/en/do.html
oder
Referenz: http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_sleep
MySQL hat ein event-scheduler gebacken. https://dev.mysql.com/doc/refman/5.6/en/events-overview.html
Beispiel:
Sie nicht angeben, welche Datenbank Sie verwenden, aber in der Regel die Art und Weise zu erreichen, was Sie wollen, ist nicht eine infinetly läuft sproc aber einige externe Komponenten - wie einem scheduler-oder SQL Server-Agent in MSSQL - execute der sproc jeder so oft.
Ich würde
cron
(linux) oderWindows-Aufgabenplaner
(windows) planen, damit die jede minute ausgeführt, und haben Sie Ihre gespeicherten Prozedur seine Aufgabe abgeschlossen, dann beenden.Dass gespeicherte Prozeduren ausführen "immer" ist ein wirklich schlechte Idee. Sie haben lange gehalten-verbindungen (der sterben kann), könnten Sie versehentlich sperren Sie einen Tisch (für immer), etc.
Da Sie nichts miteinander zu tun, die Trennung Ihrer "loop" von Ihrer "Aufgabe" ist gutes design, und es bedeutet, dass Sie verwenden können (verschiedene) tools am besten geeignet sind für jeden Teil.