인덱스에 대해서 알아보자!
Database/SQL

이전에 [DB] PK (Primary Key) ID 길이가 성능에 영향을 미칠까? 라는 글을 쓸 때 인덱스에 대해서 간단히 알아보았다.또한, 데이터베이스 튜닝에 대하여 라는 글을 쓸 때에도 인덱스를 설정하여 DB의 성능을 높이는 방법에 대해서도 알아보았다. 해당 글에서는 인덱스에 대해서 더 자세히 알아보겠다. 인덱스란?인덱스란 CUD 의 성능을 희생하고 그 대신에 테이블의 조회 속도를 높여주는 자료구조이다. 어떤 항목을 조회하는데 60초 이상의 시간이 걸리던 것이 인덱스를 통해서 조회하면 한자리수의 초 단위로 조회할 수도 있을 정도로 데이터베이스 속도를 크게 좌우하는 요소이다. 하지만 마구잡이로 인덱스를 사용하면 사용하기 전보다 성능이 더 떨어질 수도 있다.그렇기 때문에 인덱스라는 것을 잘 알고 써야 ..

데이터베이스 튜닝에 대하여
Database/SQL

튜닝은 데이터베이스 시스템의 성능을 끌어올리고 안정성과 신뢰성을 높이는 중요한 과정이다. 이를 통해, 쿼리 성능을 향상하고, 시스템 자원을 효율적으로 사용할 수 있다.튜닝을 하는 이유는 주어진 하드웨어 환경을 통해서 처리량과 응답속도를 개선하기 위해서이다.성능 저하가 일어나면 시스템의 안정성과 사용성은 떨어질 수밖에 없기에 주기적으로 데이터베이스 튜닝을 진행해야 한다. 튜닝이라고 하면 포괄적으로 생각할 수 있는데, 아래 방법들을 말한다.쿼리 최적화캐싱 전략하드웨어 자원 관리인덱스 관리... 이러한 튜닝을 진행할 때 단계가 있다.1. 데이터베이스 설계 튜닝(모델링 관점)데이터 모델링, 인덱스 설계데이터베이스 용량 산정ex) 반정규화2. 데이터베이스 환경 튜닝(환경 관점)메모리나 블록 크기 지정ex) Buf..

"조인(Join)" 완벽 이해하기
Database/SQL

관계형 데이터베이스에서는 중복 데이터를 최대한 없애기 위해 데이터를 여러 테이블로 나눠서 저장한다.DB에 데이터들을 저장하고 데이터들을 조회하려고 할 때 여러 테이블들을 JOIN해서 데이터를 얻는 과정을 꼭 거쳐한 한다.조인은 여러 테이블에 분산된 데이터를 연결하여 원하는 결과를 도출하는 중요한 도구이다.그렇기 때문에 "JOIN"에 대해서 자세히 알아보고 사용하는게 좋을 것 같아서 이 글을 작성하게 되었다. 조인(Join)이란?조인은 두 개 이상의 테이블에서 데이터를 연결하여 원하는 정보를 조회하는 SQL 연산이다. 테이블 간의 관계를 정의하는 "키(Key)"를 기반으로 데이터를 결합하며, 이를 통해 복잡한 데이터 구조에서도 필요한 정보를 가져올 수 있다고객 테이블과 주문 테이블이 따로 있는 경우 조인 ..

데이터베이스 자료형에 대해 알아보자!
Database/SQL

먹물 프로젝트를 진행하면서, 데이터베이스 설계 시 자료형을 어떤 것을 쓸지 선택하는 것이 성능, 저장소 효율성 등에 큰 영향을 끼친다는 것을 느꼈습니다. 이를 계기로 데이터베이스 자료형에 대해서 알아보자는 목표를 갖게 되어 해당 내용을 정리하게 되었습니다. 데이터베이스 자료형자료형(Data type)은 데이터베이스에서 각 필드에 저장할 데이터의 속성을 정의하는 요소이다. 올바른 자료형을 선택해야 데이터 무결성을 보장하고, 저장 공간을 최적화하며, 쿼리 성능을 향상시킬 수 있어 자료형을 정할 때 꼭 유의해야 한다. 데이터베이스마다 자료형은 약간씩 차이가 있다. 일단 MySQL을 기반으로 자료형에 대해서 살펴보겠다. (1) 숫자형(Numeric)정수형: INT, BIGINT, MEDIUMINT, SMALLI..

[JPA] flush는 언제 일어날까?
Database/SQL

Flush : 영속성 컨텍스트와 데이터베이스의 동기화JPA Flush는 영속성 컨텍스트(Persistence Context)의 변경 내용을 DB에 반영하는 것을 말한다.영속성 컨텍스트는 엔티티 객체를 관리하는 메모리 공간이다. Flush는 이 영속성 컨텍스트에서 변경된 엔티티를 데이터베이스와 동기화하는 데 사용된다.즉, 영속성 컨텍스트 메모리 상에 저장된 객체 상태를 데이터베이스에 반영하는 것이다. 이 때, Flush는 동기화하는 것이기 때문에 Flush가 일어나도 1차 캐시된 영속성 컨텍스트는 그대로 유지된다.( clear는 영속성 컨텍스트를 비워서 관리 중인 엔티티를 모두 제거하는 것이다. )  Flush가 발생하는 시점Flush는 자동으로 발생할 수도, 수동으로 발생시킬 수도 있다.일단 자동으로 발..

[DB] PK (Primary Key) ID 길이가 성능에 영향을 미칠까?
Database/SQL

Primary Key ?PK (Primary Key)는 데이터베이스에서 각 행(row)을 고유하게 식별하기 위한 열(column)이다.PK는 효율적인 데이터 검색, 외래 키 참조, 데이터 무결성 보장을 위해 사용된다. PK 길이가 길어질 때의 문제점은 무엇일까?저장 공간 증가: 긴 PK는 테이블의 저장 공간을 늘리고, 외래 키로 참조되는 테이블에도 영향을 미친다.인덱스 크기 증가로 인한 검색 성능 저하: PK는 기본적으로 인덱스로 관리되며, 길이가 길수록 인덱스 크기가 증가하고 검색 속도가 느려진다.외래 키 테이블의 추가 비용: 외래 키가 긴 PK를 참조할 때, 외래 키 테이블도 더 많은 공간을 차지하게 된다. PK 길이가 길어질 때 인덱스 크기 증가로 인한 검색 성능 저하에 대해서 더 자세히 알아보겠다..

[DB] 트랜잭션, 격리수준에 대해서 알아보자.(+ 면접 준비)
Database/SQL

트랜잭션이란?트랜잭션은 데이터베이스에서 하나의 작업 단위로 수행되는 연산 집합이다. 트랜잭션은 작업이 모두 성공적으로 완료되거나, 실패 시 모든 작업을 취소(롤백)함으로써 데이터의 일관성을 보장한다. 하나의 트랜잭션은 Commit 되거나 Rollback 된다. 트랜잭션을 왜 사용할까?데이터의 일관성을 유지하면서 안정적으로 데이터를 복구하기 위함이다. 트랜잭션은 하나의 논리적인 작업의 단위이기 때문에, 여러 개의 작업을 하나의 논리적인 단위로 묶어서 반영과 복구를 조정할 수 있기 위해 사용한다. 따라서, 데이터의 부정합이 일어났을 경우 롤백을 하여 데이터의 부정합을 방지할 수 있다. (참고)또한 동시성 제어에도 사용한다. 데이터베이스는 다수의 사용자가 동시에 동일한 데이터에 접근할 수 있으므로, 데이터 충..

SQL 프로그래밍 (1) - 데이터베이스란?, MySQL란?, MySQL 설치, Workbench 활용
Database/SQL

안녕하세요! 항상 나아가는 개발자 pink_salt 핑솔입니다! 코드프레소 Java 웹 개발 체험단 활동을 하고 있습니다. 이번엔 '처음 시작하는 SQL 프로그래밍'강의를 듣고 공부한 내용을 정리하여 포스팅을 진행하겠습니다. 웹서비스 개발을 진행할 때 필수적인 요소가 바로 데이터베이스 입니다. 왜냐하면 웹서비스에서 가장 중요한 것은 데이터이기 때문입니다. 쇼핑몰에서 좋아요를 누르고, 장바구니에 넣고 등등 모든 활동들이 데이터베이스에 저장되어있는 데이터라고 할 수 있습니다. 그래서 이번엔 데이터베이스와 SQL에 대해서 자세하게 알아보겠습니다! 데이터베이스란 무엇인가? 데이터는 다양한 방법으로 관리가 가능합니다.(파일, 엑셀 등) 여러 사람이 공유하여 사용할 목적으로, 통합하여 관리되는 데이터의 집합을 말합..