2022. 12. 18. 16:37ㆍ컴퓨터 공학/DB
스프링 프로젝트를 진행하다 보면 실제 쿼리가 어떻게 나가는지 궁금할 때가 있습니다.
기본적으로
spring:
jpa:
show-sql: true
이런 설정을 하게 되면 콘솔창에 쿼리 로그를 보여주기 때문에 웬만한 쿼리는 확인이 가능합니다.
하지만 대량의 쿼리나 JPA에서 변환되어 실제로 MySQL 쿼리로 변환되어 나가는 쿼리는 알지 못한다는 문제가 있습니다.
이때 실시간 로그 확인이 필요하고 함께 로그를 확인하는 방법을 알아보려 합니다.
🧐MySQL 로그 설정하기
실시간 쿼리 로그를 확인하기 위해서는 먼저 로그 설정이 필요합니다.
먼저 MySQL에 접속합니다.
mysql -u root -p
그리고 로그 설정을 확인해봅니다.
show variables like 'general_log%';
그럼 아래와 같은 화면이 출력됩니다.
기본 설정은 general_log가 OFF로 설정되어 있을 것입니다.
그렇기 때문에 ON으로 변경하는 쿼리를 날립니다.
set global general_log='ON';
general_log 밑에 있는 general_log_file은 로그를 확인할 수 있는 파일의 위치인데요,
확인하기 편한 위치를 설정하면 됩니다.
저의 경우
set global general_log_file='/tmp/general_log.log';
이렇게 설정했습니다.
이렇게 하면 로그 설정은 끝입니다.
🧐로그 확인 및 실시간 로그 확인하기
로그를 확인하는 방법은 간단합니다.
터미널은 연 후 open {설정 경로} 명령어를 입력하면 끝입니다.
open {설정경로}
// 저의 경우
open /tmp/general_log.log
로그 기능을 활성화 한 후 아무 쿼리도 날리지 않으셨다면 로그가 비어있을 것입니다.
프로젝트나 mysql을 켜고 아무 쿼리나 날리면 로그 창이 수정되는 것을 확인하실 수 있습니다.
실시간 로그를 확인하는 방법 역시 간단합니다.
Linux/Mac OS의 경우 tail 명령어를 사용해서 실시간 로그를 확인할 수 있습니다.
tail 명령어는 다음과 같이 사용할 수 있습니다.
tail [option] [file name]
tail /tmp/general_log.log
tail -f /tmp/general_log.log
tail 명령어에는 다양한 옵션이 있는데요,
자주 사용하는 옵션의 경우 아래와 같은 옵션이 있습니다.
- -f: tail을 종료하지 않고 파일의 업데이트 내용을 실시간으로 계속 보여줍니다.
- -n(라인 수, 숫자 입력): 파일의 마지막 줄부터 지정한 라인 수까지의 내용을 출력합니다.
- -c(바이트 수): 파일의 마지막부터 지정한 바이드만큼 보여줍니다.
- -q: 헤더와 상단의 파일 이름을 출력하지 않고 내용만 보여줍니다.
우리는 실시간 로그를 확인할 것이기 때문에 -f 옵션을 사용하면 됩니다.
tail -f /tmp/general_log.log
이 명령어를 사용한 후 쿼리를 날리면 실시간 로그를 확인할 수 있습니다.
'컴퓨터 공학 > DB' 카테고리의 다른 글
(데이터베이스) Lost update와 serializable (0) | 2024.07.14 |
---|---|
(MySQL) Docker + MySQL를 Datagrip에 연결하기 (0) | 2022.12.02 |
(MySQL) MySQL 8.0의 메모리 할당 및 사용구조 (0) | 2022.11.23 |
(Database) MySQL서버 구조와 스레딩 구조 (0) | 2022.07.09 |
(Database) 트랜잭션(ACID)과 무결성 (0) | 2022.07.09 |