Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 데이터베이스의 마지막 접근(및 쓰기) 시간 확인 방법

MySQL에서 테이블의 마지막 접근 또는 쓰기(수정) 시간을 확인하려면 INFORMATION_SCHEMA.TABLESupdate_time 컬럼을 조회하면 됩니다. 기본 문법은 다음과 같습니다.

SELECT update_time
FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema = 'yourDatabaseName'
AND table_name = 'yourTableName'

위 문법은 MyISAM 스토리지 엔진을 사용하는 테이블에 대해 마지막 수정 시간 정보를 정상적으로 반환합니다.

이번 예제에서는 데이터베이스로 'business'를 사용하고, 테이블 이름은 'twoprimarykeytabledemo'를 사용하겠습니다.

Case 1: MyISAM 테이블의 마지막 수정 시간 조회

다음 쿼리를 실행합니다.

mysql> SELECT update_time
    -> FROM INFORMATION_SCHEMA.TABLES
    -> WHERE table_schema = 'business'
    -> AND table_name = 'twoprimarykeytabledemo';

실행 결과는 다음과 같습니다.

+---------------------+
| UPDATE_TIME         |
+---------------------+
| 2018-11-21 16:51:50 |
+---------------------+
1 row in set (0.24 sec)

테이블이 마지막으로 수정된 시각인 2018-11-21 16:51:50이 정상적으로 출력되었습니다.

Case 2: 다른 테이블에 적용하기

같은 데이터베이스 내 다른 테이블 'currenttimezone'에도 동일한 쿼리를 적용할 수 있습니다.

mysql> SELECT update_time
   -> FROM INFORMATION_SCHEMA.TABLES
   -> WHERE table_schema = 'business'
   -> AND table_name = 'currenttimezone';

실행 결과는 다음과 같습니다.

+---------------------+
| UPDATE_TIME         |
+---------------------+
| 2018-10-29 17:20:18 |
+---------------------+
1 row in set (0.20 sec)

Case 3: InnoDB 테이블인 경우 NULL 반환

주의할 점은, 테이블의 스토리지 엔진이 InnoDB라면 update_time 값이 NULL로 반환된다는 것입니다. InnoDB는 MySQL 5.7 이전 버전에서 INFORMATION_SCHEMA에 갱신 시간을 기록하지 않기 때문입니다.

다음 쿼리를 실행해 보겠습니다.

mysql> SELECT update_time
   -> FROM INFORMATION_SCHEMA.TABLES
   -> WHERE table_schema = 'business'
   -> AND table_name = 'zerofilldemo';

실행 결과는 다음과 같습니다.

+-------------+
| UPDATE_TIME |
+-------------+
| NULL        |
+-------------+
1 row in set (0.09 sec)

정리

- INFORMATION_SCHEMA.TABLESupdate_time 컬럼을 조회하면 테이블의 마지막 수정 시간을 알 수 있습니다.
- MyISAM 엔진 테이블은 정확한 시간 값을 반환하지만, InnoDB 테이블(MySQL 5.7 미만)은 NULL을 반환합니다.
- 참고로 이 값은 '마지막 읽기'가 아닌 '마지막 쓰기(INSERT/UPDATE/DELETE)' 시간을 나타내며, 순수한 읽기 접근 시간은 일반적인 방법으로는 확인할 수 없습니다.