SurrealDB Docs Logo

Enter a search query

SLEEP statement

The SLEEP statement is used to introduce a delay or pause in the execution of a query or a batch of queries for a specific amount of time.

Statement syntax

SurrealQL Syntax
SLEEP @duration;

Example usage

The following query shows example usage of this statement.

-- Sleep one second SLEEP 1s; -- Sleep 100 milliseconds SLEEP 100ms;

For more dynamic usage of sleep, see SurrealDB’s sleep function.

SLEEP during parallel operations

A SLEEP statement does not interfere with operations that are underway in the background, such as a DEFINE INDEX statement using the CONCURRENTLY clause.

CREATE |user:50000| SET name = id.id() RETURN NONE; DEFINE INDEX unique_name ON TABLE user FIELDS name UNIQUE CONCURRENTLY; INFO FOR INDEX unique_name ON TABLE user; SLEEP 50ms; INFO FOR INDEX unique_name ON TABLE user; SLEEP 50ms; INFO FOR INDEX unique_name ON TABLE user; SLEEP 50ms; INFO FOR INDEX unique_name ON TABLE user;
Possible output
-------- Query 1 -------- { building: { count: 0, status: 'initial' } } -------- Query 2 -------- { building: { count: 17250, status: 'initial' } } -------- Query 3 -------- { building: { count: 33542, status: 'initial' } } -------- Query 4 -------- { building: { status: 'built' } }

Use cases

SLEEP can be useful in a small number of situations, such as:

  • Testing and debugging: can be used to understand how concurrent transactions interact, test how systems handle timeouts and delays, simulate behaviour in more distant regions with longer latency
  • Throttling: can be used to throttle the execution of operations to prevent the database from being overwhelmed by too many requests at once
  • Security measures: can be used to slow down the response rate of login attempts to mitigate the risk of brute force attacks

On this page

© SurrealDB GitHub Discord Community Cloud Features Releases Install