MySql 에서의 현재시각 sysdate vs now
MySql 에서 현재시각을 위한 함수 sysdate() 와 now()
두 함수 모두 현재시각을 반환하지만, 몇가지 차이가 있음.
하나의 SQL 문에서 여러번 now()가 사용된 경우, now() 는 동일한 결과를 반환,
sysdate()는 동일 SQL 문 내에서도 호출되는 시점에 따라 결과값이 달라짐.
example> select now(), sysdate(), sleep(5), now(), sysdate();
result>
now() |
sysdate() |
sleep(5) |
now() |
sysdate() |
2013-05-03 오전 11:18:31 |
2013-05-03 오전 11:18:31 |
5 |
2013-05-03 오전 11:18:31 |
2013-05-03 오전 11:18:36 |
sleep(5)를 통해 중간에 5초동안 대기 시킴.
위 결과에서 보듯이, 첫번째 now() 두번째 now() 는 동일한 시간을 보여주지만,
첫번째 sysdate()와 두번째 sysdate()는 sleep(5) 시간만큼의 차이를 보여줌.
[sysdate() 사용시 발생할 수 있는 문제점]
1. 다중 Database Master/Slave 형태의 Database 구성시 Master 와 Slave간의 시간이 다르게 되는 상황이 발생할 수 있음.
2. sysdate() 컬럼 비교시 index가 효율적으로 사용되지 못하고 Full Table Scan 이 실행된다.
[solution]
sysdate() 대신 now()를 사용하거나, mysql 설정에서 -sysdate-is-now 옵션을 설정하여 sysdate()와 now() 함수를 동일하게 적용할 수 있다.
참조 http://blog.hibrainapps.net/122
'Backend > mysql' 카테고리의 다른 글
[Hoon] MySQL - Too many connections 해결 및 튜닝 (0) | 2019.01.08 |
---|
댓글