본문 바로가기

SQL2

[SQL] 페이징 구현하기 만약 수백만건의 데이터가 있는 상태로 아래 쿼리를 호출하면 어떨까요? SELECT * FROM table; 데이터를 조회하는 시간이 굉장히 오래걸릴 뿐 아니라, 해당 데이터를 처리하는 것 또한 어려움을 느낄 것입니다. 이 문제를 해결하기 위해 데이터를 조회할 때 페이지에 따라 해당 페이지에 출력할 데이터만 조회하는 페이징을 사용합니다. 이번 포스팅에서는 가장 대중적인 방식의 페이징을 소개하고자 합니다. Offset Pagination offset Pagination은 offset과 limit를 지정하여 DB에서 출력하고자 하는 데이터 범위만큼의 데이터만 조회하는 방식입니다. 위 사진처럼 search.page=4를 지정해두고 해당 요청을 기반으로 offset을 설정해 페이지네이션을 할 수 있는 것이죠. s.. 2022. 5. 7.
[레벨 1 돌아보기] dao 테스트 중 lock wait? 레벨 1에서의 학습목표와는 조금 동떨어진 이야기지만.. Dao를 테스트 하는 과정에서 어떤 에러를 만났습니다. com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction 에러를 확인해보니 락을 획득하기 위한 시간이 초과되어 트랜잭션을 다시 시작하라 라고 말합니다. 어떤 상황이기에 이 에러가 발생했고, 이 문제를 어떻게 해결하는지 적어보고자 합니다. 락 발생 db의 커밋 모드 설정을 수동 커밋 모드로 전환하면 특정 쿼리가 실행되는 순간 해당 세션에서 트랜잭션이 열립니다. 이를 트랜잭션 a라고 칭하겠습니다. 트랜잭션 a는 다른 트랜잭션으로 부터 격리하고 트.. 2022. 4. 15.