모르면 손발이 고생한다는 말이 있는데, 진짜 DB 울고 싶네요 ㅠ.ㅠ

emptynote의 이미지

모르면 손발이 고생한다는 말이 있습니다.

DB 에서 date type 을 다루는 방법은 여러가지가 있을 수 있습니다.

아무 생각없이 테이블은 DATETIME 으로 지정하고 자바에서는 java.sql.Timestamp 을 사용했는데

아래 글은 참 여러가지로 생각을 하게 하네요.

모든 경우는 아니더라도 검색 조건인 경우 만큼은 long 으로 바꾸어야 하겠네요.

아...나의 손발아 미안하다 ㅠ.ㅠ

------------------- 부분 인용

"MYSQL 에서 DATETIME 형식의 데이터를 고속으로 검색하는 방법" 참고 주소 : https://tokyogoose.tistory.com/304

INT 형식으로 준 쿼리 조건이 데이터 검색 속도가 압도적으로 빠른 결과

jick의 이미지

Mysql이 버전이 얼마고 테이블에 데이터가 몇 개 있고 인덱스는 걸려있는지 없는지 아무런 정보도 없이 그냥 "내 컴퓨터에서 해보니까 A가 B보다 x배 빠르더라" 정도의 얘기로 보이는데요.

직접 돌려봐서 자신의 상황에도 마찬가지인가 확인하지 않는 한, 별 의미없는 얘기로 보입니다.

Premature optimization is the root of all evil...

emptynote의 이미지

저는 DB 초보입니다.

바람이 부는 대로 흔들리는 갈대입니다. ㅠ.ㅠ

emptynote의 이미지

제가 글을 쓰기전에 증명안된 한가지 가설을 세웠습니다.

그것은 DB 에서 실질적으로 long 타입으로 저장되어 TIMESTAMP 을 다룰거라는 생각입니다.

long 이 검색이 빠르다 이런 생각을 가진것은 이 가설에 기초 합니다.

왜냐하면 날짜 형식의 문자열을 long 으로 변환하여 실질적으로 처리를 하기때문에

변환 과정이 있기때문에 더 느리다 라고 생각하기때문입니다.

그래서 한번 찾아 보았는데 아래 참고 주소를 보시면 TIMESTAMP 는

MySQL 5.6.4 이전 버전에서는 4 byte

MySQL 5.6.4 이후 버전에서는 4 byte + fractional seconds storage 라고 하네요.

하여 저는 변환 과정이 더 있기때문에 long 혹은 int 로 으로 직접 검색하는 것이 더 빠르다 라고 생각하기에

int 형이 더 빠르다라고 주장한 분의 실험을 신뢰합니다.

제가 이렇게 생각한다고 해도 직접 실험을 한것이 아니고

무엇보다도 유지 보수할때 쿼리문 직접 수행하여 결과를 볼때가 많은데
date type 을 long 혹은 int 로 할 경우 보기 어렵습니다.

본문 글에서 바꾸겠다고 말했지만 유지 보수 비용을 생각해야 해서 일단은 보류중입니다.

------------------------ 부분 인용
https://dev.mysql.com/doc/refman/8.0/en/storage-requirements.html

Data Type Storage Required Before MySQL 5.6.4 Storage Required as of MySQL 5.6.4
TIMESTAMP 4 bytes 4 bytes + fractional seconds storage

Hodong Kim@Google의 이미지

일단은 구현부터, 최적화는 나중에요.
디비마다 최적화가 다를텐데... 일반적인 방법으로 구현부터 하는게 중요할 거고,
자주 사용하는 코드는 캐싱을 하는 방법도 있겠죠.

Hodong Kim@Google의 이미지

님 일관성이 오집니다. 님 글 보는데 은근 잼있습니다..ㅋㅋ
유튜브 크리에이터 함 해보심이 어떨런지요.
오 나의 삽질기.. 오 나의 실패기..
아니면 음.. 개떡같은 컴퓨터 1탄.
kldp 에서는 인기 못 얻어도 유튜브에서는 인기 짱 드실지 누가 알아요..
저도 나중에 시간나면 .. 개떡같은 xxx 시리즈할까 해요 ㅋㅋㅋ
어제/오늘 버그랑 씨름하냐고 아주 개빡쳤네요. ㅎㅎ
세상은 오픈소스 오픈소스 주창하는데..
오픈소스랑 함께하는 개빡침 이야기 1화... 뭐 이런거? ㅋㅋ
아휴 진짜 욕이 그냥.. 까방권 때문에 말을 못할 뿐이지..
저는 나중에 시간 나면 오픈소스 개빡침 시리즈로 유튜브에 함 올려보려고요.ㅋㅋㅋ