MySQL에서는 INFORMATION_SCHEMA.TABLES를 활용하면 특정 테이블이 마지막으로 변경된 날짜와 시간을 손쉽게 조회할 수 있습니다. 이 정보는 데이터 동기화 상태 점검이나 변경 이력 추적 등 다양한 상황에서 유용하게 사용됩니다.
기본 문법
마지막 변경 시간을 조회하는 기본 쿼리 구문은 다음과 같습니다.
SELECT update_time FROM information_schema.tables WHERE table_schema = 'yourDatabaseName' AND table_name = 'yourTableName';
실습 예제
문법을 실제로 이해하기 위해 먼저 테스트용 테이블을 생성해 보겠습니다.
mysql> create table TblUpdate
-> (
-> Id int not null auto_increment primary key,
-> Name varchar(20)
-> );
Query OK, 0 rows affected (0.49 sec)다음으로 INSERT 명령을 사용해 몇 개의 레코드를 삽입합니다.
mysql> insert into TblUpdate(Name) values('John');
Query OK, 1 row affected (0.18 sec)
mysql> insert into TblUpdate(Name) values('Carol');
Query OK, 1 row affected (0.22 sec)SELECT 문으로 테이블의 모든 레코드를 확인할 수 있습니다.
mysql> select *from TblUpdate;
출력 결과
+----+-------+ | Id | Name | +----+-------+ | 1 | John | | 2 | Carol | +----+-------+ 2 rows in set (0.00 sec)
이제 UPDATE 쿼리를 실행해 테이블을 수정해 보겠습니다.
mysql> update TblUpdate set Name = 'James' where Id=2; Query OK, 1 row affected (0.15 sec) Rows matched: 1 Changed: 1 Warnings: 0
위 과정을 통해 테이블이 갱신되었습니다. 이제 앞서 소개한 쿼리를 사용해 마지막 변경 날짜/시간을 조회합니다.
mysql> SELECT update_time
-> FROM information_schema.tables
-> WHERE table_schema = 'sample'
-> AND table_name = 'TblUpdate';실행 결과를 보면 해당 데이터베이스가 2019-02-09 22:49:44에 업데이트된 것을 확인할 수 있습니다.
+---------------------+ | UPDATE_TIME | +---------------------+ | 2019-02-09 22:49:44 | +---------------------+ 1 row in set (0.89 sec)
참고 사항
UPDATE_TIME 컬럼은 InnoDB 테이블의 경우 MySQL 버전 및 설정에 따라 정확하지 않거나 NULL로 반환될 수 있습니다. MyISAM 테이블에서는 가장 신뢰도 높게 동작하므로, 정확한 변경 시각이 필요하다면 스토리지 엔진 특성을 함께 고려하는 것이 좋습니다.