발생한 문제 ) 분명히 내가 넣은 데이터는 2000건이 넘는데 조회를 하면 2000건밖에 보이지 않는다
수행한 쿼리 : select * from table;
글씨가 깨알같죠?? 자다가도 일어나서 쓰는 익숙한 쿼리라서 이런게 있을지 저도 몰랐습니다
위의 깨알같은 글씨의 내용은 이러합니다. ( 주의깊게 봐야할 부분 빨간글씨 )
21:34:50 SELECT * FROM doWee.hospital LIMIT 0, 2000 2000 row(s) returned
0.0013 sec / 0.0042 sec
MySQL WorkBench에서 자동적으로 LIMIT 키워드가 0,2000건을 적용해주고 있습니다
(익숙하지 않은 배치 처리 하면서 내가 코드를 잘 못 작성헀나?? 버퍼가 초과된건가? 데이터가 유실된건가? 뭐가문제지? 하면서 몇 시간 고생하면서 얻은 내용은 비밀 ..)
임시 방편) 한번에 나타내는 행 수 제한을 명시해준다 ( table명 limit 99999; )
해결 방안) 찾았다 이녀석 ... 체크되어 있는 Limit Rows를 체크해제 합니다
제가 원했던 결과가 나오는것을 확인할 수 있습니다 !
문제를 해결했지만 궁금증이 생겼습니다
왜 Limt Rows는 Default 값일까 ??
1. 성능 최적화 문제
지금은 7만건 정도밖에 되지 않지만 엄청난 양의 데이터를 제한 없이 전부다 한번에 가져오려고 한다면 ??
응답시간이 길어지거나 시스템이 멈추는 등 예상치 못한 성능 문제가 발생할 수 있다.
( 유튜브 같은 곳에서 관리자가 회원목록을 조회하는데 모든 회원정보가 한번에 조회된다면? )
2. 안정성
잘못된 쿼리로 대량의 데이터를 한번에 불러오는 실수를 방지할 수 있다.
where절을 빠트리거나 잘못된 조건을 사용할 경우 매우 많은 데이터가 반환될 수 있는데 이러한 경우를 예방해준다.
이러한 점을 알고 SQL을 사용하면 앞으로의 개발 생활에도 큰 도움이 될것이다 !
'개발공부(java, springboot)' 카테고리의 다른 글
CORS(Cross-Origin Resource Sharing) 정책? (0) | 2024.06.22 |
---|---|
자바(LTS) 버전이란? 버전별 특징 (0) | 2024.06.09 |
인터프리터 언어 ? 컴파일 언어? (0) | 2024.06.02 |