본문 바로가기

분류 전체보기262

[MySQL][Admin] 로그종류와 특징 ■ MySQL Log란 DBMS에서는 자신의 상태를 기록하기 위해 로그라는 방법으로 자신의 상태를 기록합니다. MySQL에서도 마찬가지로 여러가지 로그를 제공합니다. 시스템에 관련된 로그, 복제를 구성하기 위해 사용되는 바이너리 로그, 시스템 에러에 관련된 로그, SQL 성능에 관련된 로그까지 여러가지 로그들을 제공합니다. MySQL에서 제공되는 이 로그들에 대해서 자세히 한번 알아보겠습니다. ■ MySQL Log종류 MySQL에서 제공되는 로그들이 어떤것들이 있으며 어떤 역활을 하는지 간단히 알아보겠습니다. + Error Log mysqld의 시작, 운영, 종료때 나오는 문제들을 작성합니다. + General query log 클라이언트로부터 접속된 접속 내용과 수행된 SQL문법을 기록합니다. + Bi.. 2024. 2. 19.
[Database] 리플리케이션(Replication) vs 클러스터링(Clustering) 1. 리플리케이션(Replication)이란? [ 리플리케이션(Replication)이란? ] 리플리케이션이란 여러 개의 DB를 권한에 따라 수직적인 구조(Master-Slave)로 구축하는 방식이다. 리플리케이션에서 Master Node는 쓰기 작업 만을 처리하며 Slave Node는 읽기 작업 만을 처리한다. 리플리케이션은 비동기 방식으로 노드들 간의 데이터를 동기화하는데, 자세한 처리 방법은 아래와 같다. [ 리플리케이션(Replication) 처리 방식 ] 위의 그림은 MySQL의 Replication 방식에 대한 그림이며 자세한 처리 순서는 아래와 같다. Master 노드에 쓰기 트랜잭션이 수행된다. Master 노드는 데이터를 저장하고 트랜잭션에 대한 로그를 파일에 기록한다.(BIN LOG) .. 2024. 2. 19.
[Real MySQL 8.0] 실행 계획 통계 정보와 실행 계획을 확인하는 방법 사용자의 쿼리를 최적으로 처리될 수 있게 하려면 쿼리의 실행 계획을 수립할 수 있어야 한다. 이에 가장 큰 영향을 미치는 정보는 바로 통계 정보다. 통계 정보 MySQL 5.7 버전까지 테이블과 인덱스에 대한 개략적인 정보를 가지고 실행 계획을 수립했다. 하지만 테이블 컬럼의 값들이 어떻게 분포돼 있는지에 대한 정보가 없기 때문에 실행 계획의 정확도가 떨어지는 경우가 많았다. 이러한 문제를 해결하기 위해 MySQL8.0부터는 데이터 분포도를 수집해 저장하는 히스토그램 정보가 도입됐다. 테이블 및 인덱스 통계 정보 비용 기반 최적화에서 가장 중요한 것은 통계 정보다. 통계 정보가 정확하지 않다면 엉뚱한 방향으로 쿼리를 실행할 수 있기 때문이다. 예를 들어, 1억 건의 레코드가 저장된 테이블의 통계 정보가 .. 2024. 2. 18.
[Spring][Redis] 스프링 부트에서 redis 연동 및 RedisTemplate 사용법 이번 포스팅에서는 스프링 부트에서 redis와 연동하고 값을 저장해보려고 한다. 먼저 스프링 부트에 redis 관련된 의존성을 추가해준다. 만약 기존 진행 중인 프로젝트에 적용한다면 build.gradle에 다음과 같이 의존성을 추가해준다. build.gradle{ . . . implementation 'org.springframework.boot:spring-boot-starter-data-redis' } start.spring.io에서 처음 프로젝트를 생성한다면 Spring Data Redis 의존성을 추가해준다. 그리고 application.properties에 다음 코드를 작성해준다. spring.redis.host=localhost spring.redis.port=6379 처음 레디스 컨테이너를.. 2024. 2. 18.
[MySQL] DB 용량 확인, 테이블별 용량 확인 ㅁ 들어가면서 MySQL의 용량을 분석하기 위한 쿼리를 정리하였습니다. update... 댓글의 질문 때문에 확인한 결과, 테이블이 뷰인 경유 용량과 건수는 null로 나타난다. ㅁ 데이터베이스 용량 확인 SELECT table_schema AS 'Database', ROUND(SUM(data_length+index_length)/1024/1024, 1) AS 'Size(MB)' FROM information_schema.tables WHERE table_schema not in ('sys', 'mysql', 'information_schema', 'performance_schema') GROUP BY table_schema ORDER BY 2 DESC; ㅁ 전체 용량 확인 SELECT ROUND(SUM.. 2024. 2. 17.
[SQL] SQL 성능확인, Query Plan 보는 법 (Oracle, MySQL) 1. Query Plan이란? SQL 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터 접근에 사용되는 순서가 있는 단계별 집합 엑세스 플랜의 관계형 모델 개념의 특화된 경우 SQL이 선언형이기 때문에 주어진 쿼리를 실행하기 위해 수많은 방법이 존재하는 것이 일반적이며 이에 따라 다양한 성능 차이를 보임 Query Optimizer는 Query 실행을 위한 각기 다른 가능성 있는 올바른 플랜 중 일부를 평가한 다음 최적의 옵션을 고려할 때 반환 2. Query Plan 보는 법, 요소(Oracle) 1) Query Plan 보는 법 위에서 아래로 내려가면서 제일 먼저 읽을 위치 찾기 내려가는 과정에서 같은 들여쓰기가 있으면, 무조건 위에서 아래 순으로 읽기 같은 레벨에 들여쓰기된 하위 스텝이 존재하면.. 2024. 2. 15.