MySQL SLEEP() 명령을 사용하는 올바른 방법
이 기사에서는 MySQL sleep
명령을 사용하는 방법을 보여주는 두 가지 방법을 설명합니다. 첫 번째는 SLEEP()
을 사용하는 것이고 두 번째는 DO SLEEP()
을 사용하는 것입니다.
또한 쿼리문에서 SLEEP()
의 동작을 배우게 됩니다.
MySQL에서 SLEEP()
명령 사용
다음은 MySQL에서 SLEEP()
을 사용하는 방법입니다.
SELECT SLEEP(10);
위의 SQL에서 MySQL SLEEP()
함수는 숫자 10
을 매개변수로 사용합니다. 이 숫자는 SLEEP()
이 서버 스레드에서 차지하는 시간(초)을 결정합니다.
SELECT SLEEP(10);
을 사용하면 MySQL은 10초 동안 다른 작업을 수행할 수 없습니다. 스레드 스택을 사용하기 때문입니다.
다음은 이전 sleep
명령의 출력입니다.
+-----------+
| SLEEP(10) |
+-----------+
| 0 |
+-----------+
1 row in set (10.00 sec)
MySQL에서 DO SLEEP()
명령 사용
DO SLEEP()
은 SLEEP()
과 동일하게 작동하지만 결과를 반환하지 않습니다. 다음은 작동 방식입니다.
DO SLEEP(10);
SLEEP()
과 같이 이전 SQL을 실행할 때 10
초 동안 기다렸다가 계속 진행합니다. 그러나 아래와 같이 빈 결과를 반환합니다.
Query OK, 0 rows affected (10.01 sec)
MySQL SLEEP
과 DO SLEEP
의 차이점
SLEEP()
과 DO SLEEP()
의 차이점은 SLEEP()
은 결과를 반환하지만 DO SLEEP()
은 결과를 반환하지 않는다는 것입니다.
쿼리 문에서 MySQL SLEEP()
의 동작
쿼리문에 사용될 때 SLEEP()
의 기간은 반환된 레코드에 따라 다릅니다. 테이블에 레코드가 없으면 MySQL은 절전 모드가 아닙니다.
그러나 테이블에 레코드가 있는 경우 절전 시간은 n * 테이블 레코드
가 됩니다. 여기서 n
은 절전 시간입니다.
이를 증명하려면 다음을 수행하십시오.
- MySQL에 데이터베이스를 생성하고 이 데이터베이스에 새 테이블을 생성합니다.
- 일부 레코드를 테이블에 삽입합니다.
SELECT *, SLEEP (n) from <table_name>
을 사용합니다. 여기서n
은 절전 시간이고table_name
은 테이블 이름입니다.
예를 들어 다음에서 users
테이블에는 세 개의 레코드가 있습니다. SQL 코드를 실행할 때 MySQL은 30초 동안 기다립니다.
number_of_records * sleep_time
은 3 * 10
입니다.
SELECT *, SLEEP(10) FROM users;
출력:
+---------+----------+-----------+
| user_id | username | SLEEP(10) |
+---------+----------+-----------+
| 1 | Delft | 0 |
| 2 | Stack | 0 |
| 3 | Website | 0 |
+---------+----------+-----------+
3 rows in set (30.02 sec)
Habdul Hazeez is a technical writer with amazing research skills. He can connect the dots, and make sense of data that are scattered across different media.
LinkedIn