카카오 에드센스 달려면 3개월간 글 20개는 쓰라해서 딱히 영양가..없는 짧은 글을 하루에 하나씩이라도 쓰려 한다. .. 이런거라도 누군가는 보고 도움 되겠...지?
각 DBMS에는 현재 시각을 반환하는 내장 함수 들이 있다.
오라클의 SYSDATE 라던지.. Mysql의 NOW() 라던지..
오늘은 PostgreSQL 에서 현재 시각을 반환하는 함수 중 미세하게 다른 일부를 가져와서 소개하려 한다.
1. now()
누구나 잘 아는 now() 함수다. select now(); 해보면 현재 시각이 표시된다.
다만, now() 함수는 트랜잭션이 시작된 시각을 표시해준다.
이게 무슨말이냐.. 하면.. 하나의 트랜잭션에서는 모두 같은 시각을 반환한다는 것이다.. 아래 다른 함수를 보면 이해가 될 것이다.
2. statement_timestamp()
예상 했겠지만 이 함수는 트랜잭션과 관계 없이 호출됬을 때의 시각을 반환한다.
위 캡쳐를 보면 now()는 트랜잭션을 시작한 15:13에 멈춰있지만 statement_timestamp()를 보면 실시간 현재 시각을 표시하는 것을 볼 수 있다.
트랜잭션을 commit하지 않고 다시 쿼리를 실행해보면 확연히 알 수 있다.
3. clock_timestamp()
요놈은 statement_timestamp()와 얼핏 보면 동일해 보이지만 차이가 있다.
바로, statement_timestamp()는 현재 명령문의 시작 시간(구체적으로는 클라이언트로부터 최신 명령 메시지를 받은 시간)을 반환하지만!!
clock_timestamp()는 실제 현재 시간을 반환하므로 단일 SQL 명령 내에서도 해당 값이 변경된다는 것이다.
이게 무슨말인지 보려면... 아래 캡쳐를 보자.
statement_timpstamp()는 min과 max값이 동일한데, clock_timestamp()는 min과 max값이 다른 것을 볼 수 있다.
1000000번 함수를 호출하는 동안 반환됬던 실제 시각이 달라졌기 때문이라고 생각된다.
'DB > PostgreSQL' 카테고리의 다른 글
[PostgreSQL - DBA] PostgreSQL 관련 참고 쿼리 (3) | 2024.01.02 |
---|---|
[PostgreSQL - DBA] pg_hint_plan 설치하기 (pg_Hint 3/3) (1) | 2023.11.06 |
[PostgreSQL - DBA] wsl에 PostgreSQL 설치하기(pg_dumpall로 백업하기) (pg_Hint 2/3) (3) | 2023.10.25 |
[PostgreSQL - DBA] 오브젝트 생성 시 기본 권한 자동 부여(alter default privileges) (0) | 2023.10.20 |
[PostgreSQL - DBA] FK Option (1) | 2023.10.16 |