분류 전체보기 70

[DB] SQL 쿼리 튜닝 시 고려사항

SQL 쿼리 튜닝 시 고려사항 쿼리 튜닝(query tuning)은 데이터베이스 성능을 최적화하기 위해 SQL 쿼리를 개선하는 과정입니다. 데이터베이스 성능을 향상시키기 위해 쿼리를 튜닝할 때 고려해야 할 주요 사항은 다음과 같습니다. 1. 실행 계획 분석: 데이터베이스 관리 시스템(DBMS)이 생성하는 실행 계획을 분석합니다. 이를 통해 쿼리가 어떻게 실행되는지 이해할 수 있습니다. 2. 인덱스 활용: 인덱스를 적절하게 활용하여 데이터베이스 접근 속도를 향상시킬 수 있습니다. 쿼리에서 사용되는 조건절과 조인 조건에 인덱스를 생성하거나 적절한 인덱스를 활용하는지 확인하세요. 3. 조인 최적화: 조인 연산을 최적화하여 쿼리의 성능을 개선합니다. 필요한 경우 INNER JOIN, LEFT JOIN, RIGH..

DB 2023.09.18

[DB] MySQL 해시 조인(hash join) 개념

MySQL 해시 조인(hash join) 개념 MySQL에서 "hash join"은 두 개 이상의 테이블을 결합하는 데 사용되는 조인 알고리즘 중 하나입니다. Hash join은 대용량 테이블 간의 조인 작업을 최적화하기 위해 설계되었습니다. 일반적으로 다음과 같은 상황에서 사용됩니다. 1. 큰 테이블과 작은 테이블 간의 조인: 하나는 큰 테이블이고 다른 하나는 작은 테이블인 경우에 특히 유용합니다. Hash join은 작은 테이블을 메모리에 적재하고 대용량 테이블과 조인하는 데 사용됩니다. 2. 조인 조건이 등식 연산자(예: "=")를 사용하는 경우: Hash join은 등식 연산자를 기반으로 조인을 수행하며, 이 연산자가 가장 효과적으로 작동합니다. MySQL 해시 조인(hash join) 동작 원리..

DB 2023.09.12

[DB] MySQL 스토리지 엔진 종류 및 특징

MySQL 스토리지 엔진 종류 및 특징 MySQL 스토리지 엔진은 MySQL 데이터베이스 시스템에서 데이터를 저장하고 관리하는 데 사용되는 데이터 저장 및 처리 엔진입니다. MySQL은 여러 가지 스토리지 엔진을 지원하며, 각 스토리지 엔진은 데이터를 저장하고 관리하는 방식, 기능 및 성능 측면에서 다릅니다. 사용자는 MySQL 데이터베이스 테이블을 만들 때 어떤 스토리지 엔진을 사용할 것인지 선택할 수 있으며, 각 테이블은 하나의 스토리지 엔진만 사용할 수 있습니다. 1. InnoDB: InnoDB는 MySQL의 기본 스토리지 엔진으로, 트랜잭션 처리, 외래 키 제약 조건, 다중 버전 동시성 제어(MVCC) 등의 고급 기능을 제공합니다. 데이터 무결성과 내구성을 보장하며, 복구 및 로그 기반의 백업을 ..

DB 2023.09.03

[DB] MySQL과 MariaDB 차이점

MySQL과 MariaDB 차이점 MySQL과 MariaDB는 모두 관계형 데이터베이스 관리 시스템(RDBMS)입니다. 이 둘은 기술적으로 서로 밀접하게 관련되어 있지만 몇 가지 차이점이 있습니다. 아래에서 각각의 특징을 살펴보겠습니다. 1. 소스 코드의 기반: MySQL은 원래 MySQL AB에서 개발되었으며 후에 Oracle이 인수하였습니다. MariaDB는 MySQL의 포크(fork)로 시작되었으며, MySQL의 초기 개발자 중 한 명인 Michael "Monty" Widenius가 MariaDB를 개발하고 있습니다. 2. 라이선스: MySQL은 GNU General Public License(GPL) 라이선스를 기반으로 한 다중 라이선스 모델을 사용합니다. MariaDB는 MySQL의 GPL 라이..

DB 2023.08.28

[Java] 가비지 컬렉션(Garbage Collection)의 개념

가비지 컬렉션(Garbage Collection) 개념 가비지 컬렉션(Garbage Collection)은 프로그래밍 언어에서 메모리 관리를 위한 중요한 개념 중 하나입니다. 프로그램이 동적으로 메모리를 할당하고 사용할 때, 할당된 메모리 중에서 더 이상 사용되지 않는 부분을 찾아내고 해제하는 작업을 의미합니다. 이를 통해 메모리 누수(memory leaks)와 같은 문제를 방지하고, 프로그램의 안정성과 성능을 향상시킬 수 있습니다. 가비지 컬렉션은 주로 자바(Java), C#, Python, JavaScript와 같은 고급 프로그래밍 언어에서 사용되며, 다양한 방법으로 구현될 수 있습니다. 가장 일반적으로 사용되는 가비지 컬렉션 알고리즘에는 다음과 같은 것들이 있습니다. 1. 참조 카운팅(Referen..

Java 2023.08.21

[Spring] HATEOAS 개념 및 장단점

Spring HATEOAS 개념 Spring HATEOAS는 Spring Framework를 기반으로 한 Hypermedia as the Engine of Application State (HATEOAS)의 구현체입니다. HATEOAS는 RESTful 웹 서비스에서 리소스 간의 관계와 상태를 표현하고 클라이언트가 리소스 간의 상호 작용을 위한 정보를 동적으로 얻을 수 있도록 돕는 개념입니다. HATEOAS의 핵심 개념은 "하이퍼미디어 링크"입니다. 이는 리소스와 관련된 다른 리소스로의 링크를 포함하는 것을 의미합니다. 클라이언트는 이러한 링크를 따라가며 API에서 제공되는 다른 리소스와 상호 작용할 수 있습니다. Spring HATEOAS는 이러한 하이퍼미디어 링크를 생성하고 관리하기 위한 도구와 클래스..

Spring 2023.08.14

[Java] 객체지향 설계 5원칙 - SOLID

SOLID 원칙 로버트 마틴(Robert C. Martin)은 소프트웨어 개발자와 컨설턴트로서, 객체 지향 설계에 관한 많은 경험과 지식을 가지고 있습니다. 객체 지향 설계의 원칙 중에서 가장 잘 알려진 것은 SOLID 원칙으로, 다음과 같이 5가지 원칙으로 요약할 수 있습니다. 1. SRP (Single Responsibility Principle - 단일 책임 원칙) 클래스는 단 하나의 책임만 가져야 합니다. 즉, 한 클래스는 하나의 변경 이유만을 가져야 하며, 클래스의 모든 기능은 해당 책임을 수행하는 데 집중되어야 합니다. 예를 들어, 도서 관리 시스템에서 도서를 표현하는 Book 클래스 // Book 클래스는 도서를 표현하는 역할만 수행합니다. public class Book { private ..

Java 2023.08.06

[운영체제] 세마포어(Semaphore)와 뮤텍스(Mutex)

세마포어(Semaphore)란? 세마포어(Semaphore)는 컴퓨터 과학과 운영 체제에서 동기화 기술을 구현하는 데 사용되는 개념입니다. 프로세스 또는 스레드가 공유 자원에 접근하는 것을 조절하고 조율하는 데 도움이 됩니다. 세마포어는 상호 배제(Mutual Exclusion)와 프로세스 간 통신(Interprocess Communication)의 문제를 해결하기 위해 개발되었습니다. 세마포어는 정수 변수로 표현되며, 다음과 같은 두 가지 기본 연산을 지원합니다. 1. P(Proberen) 연산: 세마포어 값을 1 감소시킵니다. 만약 세마포어의 값이 0이라면, 해당 프로세스 또는 스레드는 대기 상태로 들어가게 됩니다. 이때 다른 프로세스나 스레드가 V 연산을 수행하여 세마포어 값을 1 증가시키면, 대기..

운영체제 2023.07.30

[CKAD] 자격증 취득 후기 (2023.06.24)

2023년 6월 24일, CKAD 시험 합격! 준비 기간 * 약 1달 Kubernetes 사용 기간 및 배경 저는 3년차 백엔드 개발자이며, 현 회사에서 Kubernetes를 처음 사용하면서 접하게 되었습니다. 약 3개월 정도 기본적인 기능을 사용하면서 더 깊게 공부해보고 싶은 마음이 들어서 CKA를 준비하며 공부를 시작하게 되었습니다. CKA 취득(CKA 취득 후기)한 이후 CKAD를 바로 준비했습니다. CKAD란 CKAD에 대한 설명은 다른 좋은 글들이 많으니 생략하도록 하겠습니다. 제가 이전에 쓴 글도 참고하시면 좋을 것 같습니다. CKAD 자격증이란? 공부 방법 저는 이전에 CKA 자격증을 취득한 후라서 자세한 공부 방법은 CKA 취득 후기 참고 바랍니다. 덧붙이자면, CKAD 자격증을 준비하기 ..

CKAD 2023.06.27

[CKAD] 자격증이란?

CKAD 자격증이란?CKAD 자격증은 Certified Kubernetes Application Developer를 의미하며, Kubernetes 플랫폼에 대한 숙련도를 Linux Foundation에서 검증해주는 자격증입니다. CKAD 자격시험은 실습형 시험으로 Kubernetes 시험 환경에서 명령어를 활용해 리소스를 다루는 형태로 문제가 출제됩니다. CKAD 자격 시험은 2시간 동안 진행되며, 100점 만점에 66점 이상이면 시험에 통과합니다.* Who Is It For이 인증은 Kubernetes를 사용하여 클라우드 네이티브 애플리케이션을 구축, 구축 및 구성하는 Kubernetes 엔지니어, 클라우드 엔지니어 및 기타 IT 전문가를 대상으로 합니다. CKAD 자격증을 준비하는 방법..

CKAD 2023.05.28