728x90

전체 글 193

[MySQL] WITH RECURSIVE( 재귀 )

WITH RECURSIVE는 재귀 CTE (Common Table Expression)를 정의할 때 사용하는 MySQL의 기능입니다. 이 기능은 계층적 데이터(예: 조직도, 디렉토리 구조, 그래프 등)를 처리하거나 반복적으로 데이터를 생성해야 할 때 사용됩니다.MySQL에서 WITH RECURSIVE는 8.0 버전 이상에서 지원됩니다.기본 문법WITH RECURSIVE cte_name AS ( -- Anchor 부분: 재귀의 시작점 초기_쿼리 UNION ALL -- Recursive 부분: 반복적으로 실행되는 쿼리 재귀_쿼리)SELECT * FROM cte_name;Anchor 쿼리: 재귀를 시작하는 기본 데이터를 반환합니다.Recursive 쿼리: Anchor 쿼리에서 반환된..

DB 2024.12.16

[ MySQL] WITH 절

MySQL의 WITH 절은 Common Table Expression (CTE)를 정의하는 데 사용됩니다. CTE는 임시 결과 집합으로, 쿼리 내에서 반복적으로 사용하거나 더 가독성이 좋은 쿼리를 작성하는 데 유용합니다.MySQL에서는 버전 8.0 이상에서 WITH 절을 사용할 수 있습니다.기본 문법WITH cte_name AS ( SELECT ... -- 임시 결과를 생성하는 서브쿼리)SELECT ... FROM cte_name;WITH: CTE를 정의하는 시작 부분.cte_name: CTE의 이름.AS: CTE에 대해 서브쿼리를 정의할 때 사용.서브쿼리: CTE에 저장될 데이터 집합.예제 1: 간단한 CTE아래는 직원 테이블에서 특정 데이터를 CTE로 정의하고 활용하는 예입니다.테이블 데이터--..

DB 2024.12.16

[MySQL] 외래키 참조 무결

MySQL에서 외래 키(Foreign Key, FK)를 설정할 때 ON DELETE와 ON UPDATE 옵션은 참조 무결성(Referential Integrity)을 유지하기 위한 동작 방식을 정의합니다.이 옵션들은 부모 테이블의 데이터가 삭제되거나 업데이트될 때, 자식 테이블에서 어떻게 처리할지를 설정합니다.ON DELETE 및 ON UPDATE 옵션 종류1. CASCADE부모 테이블의 행이 삭제되거나 업데이트되면, 해당 외래 키를 참조하는 자식 테이블의 행도 자동으로 삭제되거나 업데이트됩니다.주로 부모-자식 관계에서 데이터가 함께 삭제되거나 변경되어야 할 때 사용합니다.예: 게시글 삭제 시 댓글도 삭제됨.예제 CREATE TABLE parent ( id INT PRIMARY KEY);CREATE..

DB 2024.12.16

[MySQL] 복합 인덱스(Multiple-Column Indexes)

MySQL은 복합 인덱스(composite index)즉 여러 열에 대한 인덱스를 생성할 수 있습니다.하나의 인덱스는 최대 16개의 열로 구성될 수 있습니다.특정 데이터 유형의 경우, 열의 접두사(prefix)만 인덱싱할 수도 있습니다(자세한 내용은 섹션 10.3.5, "열 인덱스"를 참조하세요).복합 인덱스 활용인덱스에 포함된 모든 열을 조건으로 사용하는 쿼리첫 번째 열만 조건으로 사용하는 쿼리첫 번째와 두 번째 열을 조건으로 사용하는 쿼리첫 번째, 두 번째, 세 번째 열을 조건으로 사용하는 쿼리그리고 이러한 순서를 따르는 쿼리들.인덱스 정의에서 열의 순서를 올바르게 지정하면, 단일 복합 인덱스로도 동일한 테이블에 대한 다양한 종류의 쿼리 성능을 개선할 수 있습니다.복합 인덱스는 정렬된 배열로 간주할 ..

DB 2024.12.12

[MySQL] Index 공식 문서 읽어 보기

개요공식 문서를 읽어보며 내용을 정리 해 보자https://dev.mysql.com/doc/refman/8.4/en/optimization-indexes.html MySQL :: MySQL 8.4 Reference Manual :: 10.3 Optimization and Indexes dev.mysql.comDocument1. 최적화 및 인덱스DB 성능 개선하는 가장 좋은 방법 중 하나는 하나 이상의 열에 Index를 생성하는 것Index 항목은 테이블 행으로의 포인터 역할Query가 WHERE 절의 조건에 맞는 행을 빠르게 확인하고 해당 행의 다른 열 값을 검색할 수 있도록 도움MySQL의 모든 데이터 타입은 Index를 생성할 수 있습니다.주의 할점Query에서 사용될 수 있는 모든 열에 인덱스를 생..

DB 2024.12.12

[MySQL] Index 정리

개요정리 하기에 앞서 기준을 잡아야 할거 같아 MySQL문서와 ChatGPT 검색 기반으로 테스트를 할 예정입니다.아래에 Mysql문서 Link와 ChatGPT 정리 내용이 있으며 아래 내용을 토대로 Index에 관하여 테스트 할 예정이다.  MySql 문서https://dev.mysql.com/doc/refman/8.4/en/optimization-indexes.html MySQL :: MySQL 8.4 Reference Manual :: 10.3 Optimization and Indexes dev.mysql.comChatGPT 내용MySQL에서 복합 인덱스를 설정할 때는 쿼리의 실행 계획과 컬럼의 사용 방식에 따라 인덱스 컬럼 순서를 신중히 결정해야 합니다. 특히 SELECT, JOIN, WHERE,..

DB 2024.12.12

[SES] AWS Simple Email Service & Spring Boot(Kotlin)

SES 설정1. AWS 설정SES 자격 증명발신자 Email 입력 후 Email 인증IAMSES 사용키 발급 (access-key, secret-key)권한 : AmazonSESFullAccess2. Spring Boot 설정Dependencyimplementation("software.amazon.awssdk:sesv2:2.28.16")implementation("com.amazonaws:aws-java-sdk-ses:1.12.773") // 조만간 지원 Ximplementation("org.springframework.boot:spring-boot-starter-thymeleaf") // 메일의 Email 템플릿 사용시 필요ConfigSesConfig 설정@Bean fun sesV2Client():S..

AWS 2024.10.09

Blue/Green 배포

Blue Green 배포 Blue/Green 배포를 해야 할 일이 생겨서 한번 정리 해 보았다.Docker를 사용하여 개발을 진행 하였지만 실질적으로는 배포를 1개 더해서 도메인 port를 변경하는 방식이다.개념적인 내용은 하단에 링크를 남겨 놓았고 필요시 GitHub에 Project가 있으니 확인 하면 좋을거 같다.프로젝트 구성blue-green │ # 실제 배포 Shell 파일 ├─ deploy.sh │ # 이미지 생성 Dockerfile ├─ Dockerfile │ # docker-compose ├─ docker-compose.blue.yml ├─ docker-compose.green.yml │ # nginx.conf 파일 ..

카테고리 없음 2024.09.08
728x90